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对象使用缓存。