判断结果: false true 编译器把n1提前拼接成“hello” 然后在常量池中找 而str1 str2编译器认为还未确定值 然后在堆中直接创建新的字符串 所以n1 n2的引用地址就不同 用==比较是false true true 而在加上final之后 str1 str2不可改变 编译器也将其拼接成“hello” 在字符串池中找 此时n1 n2就都是指向字符串池的同一地址 用==比较返回true equals比较的是内容/值 ==比较的是地址