经常有场景将long类型的id转成string进行比较、拼接或者存储
那么问题来了
一般你们会用哪种写法
long longValue;
str.equals(String.valueOf(longValue));
还是
str.equals(longValue + "");
其实我一直用的是第一种,突然看到有人使用第二种觉得有点怪异但是感觉逻辑上是没问题的
你们一般怎么做,或者说有什么更优雅的写法
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
上面是String.valueOf()方法的源码。
既然是long类型的id,它不可能为空,对于equals方法来说,好的习惯是将不为空的写前面,就像”1235“.equals(str)这种,避免空指针。
对我我来说更偏向于第二种。
public static void main(String[] args) {
String str = "1";
long longValue = 1;
//long基本数据类型
System.out.println(str.equals(String.valueOf(longValue)));
System.out.println(str.equals(longValue + ""));
}
查看valueOf方法,我们看到其实调用的就是Long的toString()方法,
Long是long的包装类,封装了toString()等一系列方法;
为jvm拼接,
循环体中不建议使用(会浪费大量内存),详见:https://www.cnblogs.com/read-the-spring-and-autumn-annals-in-night/p/12041948.html
直接toString();
之前第二种用的多,现在第一种用得多;toString肯定不行,一个NPE就给你搞懵
我喜欢第二种,第一种是有可能返回“null”,导致判断出现一些莫名其妙的问题