Java 编码习惯问题

经常有场景将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 + ""));
    }

str.equals(String.valueOf(longValue))

查看valueOf方法,我们看到其实调用的就是Long的toString()方法,
Long是long的包装类,封装了toString()等一系列方法;

img

str.equals(longValue + "")

为jvm拼接,
循环体中不建议使用(会浪费大量内存),详见:https://www.cnblogs.com/read-the-spring-and-autumn-annals-in-night/p/12041948.html

直接toString();

之前第二种用的多,现在第一种用得多;toString肯定不行,一个NPE就给你搞懵

我喜欢第二种,第一种是有可能返回“null”,导致判断出现一些莫名其妙的问题