有一些知识,够硬,但是又好像没什么卵用。如果用来面试,求面试者的心理阴影面积。想到了几个:
1. Integer 与==
对于 Integer var=?在-128 至 127 之间的赋值,Integer 对象是在 IntegerCache.cache 产生,会复用已有对象,这个区间内的 Integer 值可以直接使用==进行 判断,但是这个区间之外的所有数据,都会在堆上产生,并不会复用已有对象
public static void main(String[] args) { Integer a = -100; Integer b = 0-100; System.out.println(a == b); // true a = 128; b = 128; System.out.println(a == b); // false System.out.println(--a == --b); // true }
2. intern 与常量池
JDK1.7+ 后,intern()实现不会再复制实例,只是在常量池中记录首次出现的实例引用。“java”已经在 sun.misc.Version 中声明
public static void main(String[] args) { String s1 = new StringBuilder("ja").append("va").toString(); System.out.println(s1.intern() == s1); String s2 = new StringBuilder("swi").append("ft").toString(); System.out.println(s2.intern() == s2); }
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于