Integer

tim-qtp...小于 1 分钟Java基础

Integer a= 127,Integer b = 127;Integer c= 128,Integer d = 128;相等吗?

a 和 b 相等,c 和 d 不相等。

因为 Integer 值在 -128127 之间,默认经常使用,会被缓存并复用。

128 超出缓存范围new Integer(128) 会创建新的对象,导致 cd 指向不同的内存地址。

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,如果值在 -128127 之间,会复用缓存对象。

Integer.valueOf()方法会针对数值在-128 到 127 之间的Integer对象使用缓存。