java中将string 转化成long(Long.getLong()的坑)

参考:https://blog.csdn.net/mottohlm/article/details/80767266

1.java中如何将string 转化成long

long l = Long.parseLong([String]);

long l = Long.parseLong([String],[int radix]); 

long l = Long.valueOf("123").longValue();

2.Long.ValueOf(“String”)与Long.parseLong(“String”)的区别

Long.ValueOf(“String”)返回Long包装类型

Long.parseLong(“String”)返回long基本数据类型

3.Long.getLong() 与 Long.valueOf() 的区别
getLong(String str ) 与 valueOf(String str) 都是Long 这个类中的方法,它们的返回值都是Long ,传入的参数都是 String 。看这字面的意思好像都是将字符串变为Long 类型的数据。

public class TestStringToLong {

	public static void main(String[] args) {
		String lstr = "45" ;
		Long l1 = Long.getLong(lstr);
		Long l2 = Long.valueOf(lstr);
		Long l3 = Long.parseLong(lstr);
		System.out.println(l1);
		System.out.println(l2);
		System.out.println(l3);
	}
}

返回结果:

null
45
45

getLong(String str )返回为什么是null呢,来看看源码:

public static Long getLong(String nm, Long val) {
        String v = null;
        try {
            v = System.getProperty(nm);
        } catch (IllegalArgumentException | NullPointerException e) {
        }
        if (v != null) {
            try {
                return Long.decode(v);
            } catch (NumberFormatException e) {
            }
        }
        return val;
    }
v = System.getProperty(nm);  //主要是这一句

它就是获取系统属性的

System.out.println(System.getProperty("os.name"));   //Windows 10
System.out.println(System.getProperty("java.version"));//1.8.0_91

这就是系统属性。
getLong(String str )就是将系统属性的字符串转为Long 类型数据
这就是之前Long l1 = Long.getLong(lstr); 为null的原因。坑坑坑坑坑坑坑坑坑坑坑坑坑坑坑

你可能感兴趣的:(Java,java)