java笔记汇总

这篇博客汇总了Java中的关键知识点,包括BigDecimal的使用,Stream的操作实例,JSR 303验证详解,正则表达式的多种应用,空指针异常的处理,Optional类的运用,反射机制的解析,以及推荐的一些实用工具类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


一、Bigdecimal

Bigdecimal.compareTo(Bigdecimal)//比较大小 -1小于 0等于 1大于
Bigdecimal.setScale(n);//保留n为小数
Bigdecimal.stripTrailingZeros();//去掉末尾的0
Bigdecimal.add(Bigdecimal);//加
Bigdecimal.subtract(BigDecimal);//减
Bigdecimal.multiply(BigDecimal);//乘
Bigdecimal.divide(BigDecimal);//除

扩展:Java 中的 BigDecimal,你真的会用吗?

二、Stream

Java8 Stream:2万字20个实例,玩转集合的筛选、归约、分组、聚合

扩展:
①将list集合拼接成特定符号分隔的字符串

List<String> list = Arrays.asList("a", "b", "c");
String join = list.stream().collect(Collectors.joining(","));

②利用strem流分组

//按照创建时间分组,因为map是无序的(treeMap除外),所以如果要排序,最好再放到list里面去排序
List<T> lists = new ArrayList();
Map<String,List<T>>  maps = lists.stream().collect(Collectors.groupingBy(t->DateUtils.dateToStr(t.getCreateTime(),DateUtils.YYYYMMStr)));

三、JSR 303 验证

使用JSR-303进行校验 @Valid

四、正则

① 车牌号正则

 String CAR_NUM_REGEX = "^(([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z](([0-9]{5}[DF])|([DF]([A-HJ-NP-Z0-9])[0-9]{4})))|([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z][A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳使领]))$";

② 电话号码正则

String PHONE_REGEX = "^((13[0-9])|(14[0,1,4-9])|(15[0-3,5-9])|(16[2,5,6,7])|(17[0-8])|(18[0-9])|(19[0-3,5-9]))\\d{8}$";

③ 身份证正则

String ID_CARD_REGEX = "^[1-9]\\d{5}[1-9]\\d{3}((0[1-9])|(1[0-2]))(0[1-9]|([1|2][0-9])|3[0-1])((\\d{4})|\\d{3}X)$";

④ 邮箱正则

String EMAIL_REGEX = "^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";

⑤ 社会统一码验证

String COMPANY_NUM_REGEX = "^([159Y]{1})([1239]{1})([0-9ABCDEFGHJKLMNPQRTUWXY]{6})([0-9ABCDEFGHJKLMNPQRTUWXY]{9})([0-90-9ABCDEFGHJKLMNPQRTUWXY])$";

⑥ 日期格式验证(yyyy-mm-dd)

String DATE_REGEX = "(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})/(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)/(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29)$";

⑦ 月份验证

String YEAR_REGEX = "20[0-9]{2}";

⑧年份验证

String MONTH_REGEX = "20[0-9]{2}\\-((0[1-9])|(1[0-2]))";

⑨ html标签

String HTML_REGEX = "<.+?>";

五、关于空指针异常

除了常规的判空操作
null = object:null在前避免空指针异常
A.equals(B): A一定不能为空
BeanUtils.copyproperties(source,target):source 不能为空

六、Optional类

容器类,可以保存T和null,解决空指针异常
① 创建空的optional

Optional.empty();

② 创建包含值的optional

Optional.of(); //抛空指针异常
Optional.ofNullable();//不抛

③ 检查是否有值

Optional.isPresent();

④ 取值

Optional.get();

七、反射

java反射全解 --掘金

八、好用的工具类

Java必会的工具库,让你的代码量减少90%

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值