运行了下程序得到了这样的结果:
a == z:false
x == hello:true
a == x+y:false
这是因为==比较的是双方的引用变量,a与z很容易辨认是两个不同的引用变量创建了两个字符串对象,因而比较为false。x = "hello"呢是定义的字符串常量放到了常量池中x与常量"hello"比较的时候,就从常量里引用x因而比较结果是true。x+y相当与是StringBuffer.append(x).append(y),这是在创建新的实例对象,创建了新的引用因而不会与a这个字符串常量的引用相等,比较结果也就是false了。