Java中,那些关于String和字符串常量池你不得不知道的东西

在一些老套的笔试题中,会要你判断s1==s2为false还是true,s1.equals(s2)为false还是true。对于这种题,你总能很快的给出标准答案:==比较的是对象地址,equals方法比较的是真正的字符数组。所以输出的是false和true。

你知道Java中final和static修饰的变量是在什么时候赋值的吗?

我们先分析一下这个问题:深入Java虚拟机有一句是“ConstantValue属性的作用是通知虚拟机自动为静态变量赋值,只有被static关键字修饰的变量才可以使用这项属性。但为什么private final a = 10也可以被赋值?”我翻阅了《深入理解Java虚拟机》第二版,在第191页,确实有前面那句话
 JVM