1、用String.format()模版拼接字符串
场景: 当需要拼接多个字符串时,尽量避免通过 + 号来拼接字符串,因为其会导致代码变得冗长和难以阅读,让阅读者需要花时间去明白最终的拼接结果。
解决: 使用 String.format() 方法来拼接字符串,该方法第一个参数需要传入一个模版,后续参数传入模版所需要的参数。再把模版放入常量类中进行统一管理,方便下次修改模版。
例子: 要拼接字符串 "[shao][rui][lin]" ,其中”shao”、”rui”、”lin”是会变的。
public void example() {String s1 = "shao";String s2 = "rui";String s3 = "lin";//不易阅读的写法String nameSchema = "[" + s1 + "][" + s2 + "][" + s3 + "]";//容易阅读的写法String template = "[%s][%s][%s]";//最好将这个变量放入常量类中进行统一管理String bestNameSchema = String.format(template, s1, s2, s3);}
2、用Objects.isNull()判空或者是Objects.nonNull()判非空
场景: 当需要判断一个对象是否为空的时候,尽量不要使用 object == null 或 object != null 来进行判断,虽然这样确实可以实现功能,但是其意思并不直观。
解决: 判断对象为空使用 Objects.isNull() ,当传入参数为空时,返回true;判断对象非空时使用 Object.nonNull(),当传入参数非空时,返回true;
例子: 判断对象entity是否为空。
public void example() {Entity entity = new Entity();if (Objects.isNull(entity)) {System.out.println("entity为空");}}
3、用StringUtils.isBlank()判断字符串是否为空、是否为空串、是否均为空白字符。
场景: 当需要判断一个字符串对象是否为空、是否为空串、是否为空白字符: " " ,就是字符串为一串空格时,尽量不要用 str != null && str.size() > 0 这种类似操作来判断。
解决: 使用 StringUtils.isBlank() 来判断字符串是否为空、是否为空串、是否均为空白字符,该写法易于理解,且精炼。
例子:
public void example() {String str = " ";if (StringUtils.isBlank(str)) {System.out.println("字符串str为空串");}}
4、用StringUtils.equals()来判断两个字符串是否相等
场景: 当需要判断两个字符串是否相等时,不能使用 str1 == str2 ,因为这比较的是二者的地址是否相等,也可使用 str1.equals(str2) 来判断两个字符串是否相等,但是使用的时候必须要判断 str1 是否为空。
解决: 使用 StringUtils.equals(str1, str2) 来判断两个字符串对象是否相等。如果str1和str2相等或者两者均为null,都会返回true。
例子:
public void example() {String str1 = "ruilin.shao";String str2 = "ruilin.shao";if (StringUtils.equals(str1, str2)) {System.out.println("字符串相等");}}
5、用CollectionUtils.isEmpty()判断集合对象是否为空以及长度是否为0
场景: 需要判断集合是否为空且长度大于0时,最好不要用 list != null && list.size() > 0 ,该写法长且意思表达不明显。
解决: 使用 CollectionUtils.isEmpty(list) 来判断对象是否为空或者长度为0,当对象为空且长度为0时,会返回true
例子:
List<String> list = new ArrayList<>();CollectionUtils.isEmpty(list);//当list为空且size为0时返回trueCollectionUtils.isNotEmpty(list);//当list不为空且size>0时返回true,其实就是!ConllectionUtils.isEmpty(list)
