java小技巧 ----- 边工作边总结,持续更新ing

1、尽量使用StringUtils.isBlank代替StringUtils.isEmpty

1.isEmpty 没有忽略空格参数,是以是否为空和是否存在为判断依据。
2.isBlank 是在 isEmpty 的基础上进行了为空(字符串都为空格、制表符、tab 的情况)的判断。(一般更为常用)

2、多个if且判断的是常量时,用switch代替if

1、从代码整洁规范性来说switch更好一点。
2、switch分支较多时,编译时是会生成内部跳转表的。当使用内部跳转表时,就不再与每个case进行比较,而是根据条件语句的值直接跳转到对应的地址去,效率比if
else要高很多。当然switch分支较少时,不会使用跳转表,与if else是没有区别的。(这条是百度到的答案,不知道对不对)

3、当需要拼接字符串时,String.format(“获取失败 key%s”, 变量)、 “” + “” 、StringBuilder的思考。

我将继续使用StringBuilder。

推荐观看《如果性能很重要,我应该使用Java的String.format()吗?

4、操作出现异常时,不要返回null和new空对象。而是应该抛异常。

这是业务方面的考虑。 如果当出现异常时,返回new的对象或者null。你在查询操作日志时将不能判断是出现了异常还是没有查询到数据。
如果当出现异常时,抛出异常。调用者可以很直接的知道你这里出现了异常情况。 当然出现异常时记错误日志是常规操作。

5、前台查询条件比较多时,使用动态sql而不是手动判断拼接sql。

如果前台有多个输入框,用户可以任意选择其中某几个输入框进行查询时,用if判断就会比较繁琐,sql语句也会因为选择不同的输入框而出现多种情况。动态查询就会精简准确的解决这些需求。

6、常量尽量统一,不要多个项目下都有同一个常量。

如果你有一个图书管理系统,一个人员管理系统。这两个系统的公共部分就应该共用(尽管这是两个系统,以前都是同一个项目下共用),若两个项目对同样的常量需要重复定义,以后的修改完善将更为复杂且易出错。(项目越多越明显)

7、spring boot中事务管理。

方法上添加:@Transactional(rollbackFor = Exception.class)
若出现非异常需手动回滚:TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

8、声明时出现灰色波浪线。

方法上添加:@SuppressWarnings(“unchecked”)

9、StringUtils.defaultString(str);

若str为null或“”时默认返回空串,也可自定义默认串
引申出一个比较有意思的话题:《StringUtils常用方法+StringUtils详细介绍》这是个大佬,推荐看一遍,用到的时候会省很多事。

10、删除文件失败。

好久没操作文件了。今天在删除文件的时候,删除文件总返回false。
百度的答案大部分都是说文件流没关闭。可是我明明关掉了。
然后发现有些人的代码中有一句我没有的代码。加上之后解决。
System.gc();
看样子是需要手动启动垃圾回收器将释放的文件流回收掉才行。

猜你喜欢

转载自blog.csdn.net/qq_33247435/article/details/103433628