Integer
...小于 1 分钟Java基础
Integer a= 127,Integer b = 127;Integer c= 128,Integer d = 128;相等吗?
a 和 b 相等,c 和 d 不相等。
因为 Integer
值在 -128
到 127
之间,默认经常使用,会被缓存并复用。
128
超出缓存范围,new Integer(128)
会创建新的对象,导致 c
和 d
指向不同的内存地址。
String 怎么转成 Integer 的?原理?
String str = "123";
Integer num1 = Integer.parseInt(str); // 推荐,返回 int;自动装箱,转换为 Integer
Integer num2 = Integer.valueOf(str); // 返回 Integer 对象
parseInt(str)
: 直接返回 int
类型,性能更高。
valueOf(str)
: 先调用 parseInt(str)
,然后用 Integer.valueOf(int)
包装成 Integer
,如果值在 -128
到 127
之间,会复用缓存对象。
Integer.valueOf()
方法会针对数值在-128 到 127 之间的Integer
对象使用缓存。