栈中一个a,字符串常量池中一个"ab"。a指向"ab"。
栈中一个b,b指向字符串常量池的"ab"。
"a" + "b"这个会有一个运算的过程,现在jdk1.5以后在编译器有个优化,会自动吧+替换成StringBuilder的append,运算之后会把“ab”的引用返给b。然后“a”,"b"会被回收。
"a"+"b"和"ab"都是常量,对编译器来说常量都会在编译过程中合并,即编译器会把String a="a"+"b";变成String a="ab";。所以编译出来的程序没有性能上的区别。
如果是两个变量相加情况就不一样了。
丑了点~但是基本就是这个意思了
返回true啊
a 和 b 是指向同一个地址的
java 中 == 比较俩个对象的地址。