Long.getLong和parseLong的区别
最近项目上有小伙伴在string转long的时候,看到有getLong方法没多思考就使用了。后面发现出问题,返回了null,继而导致后面一系列报错。引起了大家的重视,纷纷自查代码有没有使用getLong。
经过搜索发现网上也不少人遇到过。收集资料,简单做下整理:
Long.getLong(String s)方法是获取系统参数,并将系统参数转为Long类型。
换句话说,这方法不是进行字符串转换!!!只是获取一些Long类型的系统变量,如果不存在则返回null。比如说可以获取JDK的版本:
Long.getLong("sun.arch.data.model"); //输出32或者64
要实现字符串string转换成long,一般是用Long.parseLong(String s) ,大部分情况下性能最优。
System.out.println(Long.parseLong("jdk"));
这个故事提醒了我们2个点:
1、不能看到方法名很像就直接用,还是多点进去看看源码,或者自己main方法跑一遍。毕竟jdk也是人写的,总会有不规范的地方。
2、见贤思齐,见不贤而内自省。自己写方法的时候名字也尽可能规范点,比如说这个getLong()方法要是叫getSystemPropLong之类的,估计就没这么多人用错了。