1.switch空指针异常
Exception in thread "main" java.lang.NullPointerException:
Cannot invoke "String.hashCode()" because "<local2>" is null
at Study5.Test03.main(Test03.java:6)
我们由此可以知道,switch语句部分情况下使用case做的判断在某种意义上其实就是获取字符串的hashCode的过程。
还有我认为写代码的时候最好在switch之前做空判断
2.Integer为null赋值给int变量会报空指针
Integer为null赋值给int变量会报java.lang.NullPointerException的思考_integer null赋值报错-CSDN博客
其实是因为Interger类型值为null,默认调用了自己的自动拆箱方法null.intValue(),转为int
同理,Double 和double,Boolean和boolean 这种封装类和基本类型之间的转换都要注意这种情况
3. MapStruct LocalDate映射Date
我与数据库交互实体中的时间字段,用LocalDate接的
但是返回给前端的实体中相同时间字段,用Date接的
然后使用mapstruct进行convert的时候,他默认将两个类型进行转换的时候,时区用的utc
那就导致了我存入数据库的数据和返回给前端的数据,不一致
3.1 解决办法
解决办法有两个,要么就是两个时间字段设置为同一个类型,就是把返回给前端的时间字段也改为Date,要么就是在convert的时候设置expression
我最后选择了把两个字段类型改为一致了
4.java8多字段排序
这个以前就用过,只是很长时间没用,忘记了
使用java8排序,就可以省很多代码
list.sort(Comparator.comparing(User::getAge).thenComparing(User::getName));
5.泛型怎么用@Builder构建
把泛型写到.后边
RangeCompare<Float> compare = RangeCompare.<Float>builder()
.leftSymbol(leftSymbol).leftNum(minMid)
.relation(Constant.COMMA_SPLIT)
.rightNum(maxMid).rightSymbol(rightSymbol)
.build();
6.用long型接 防止过大变为负数
java 相乘结果为负数如何-CSDN博客
long iadd = 24L * 3600L * 1000L * 30;
7.转为数组然后排序或者取值
这是最近了解到的一种思想