个人理解
final String str1 = "黑马"+ 123; str1是一个指向一个内存地址,连接上123 指向的仍然是一个堆内存地址,int 基本类型不指向堆内存
final String str2 = "黑马" +String.valueOf(123); 但是 String.valueOf(123)就不是了,你可以看下方法,里面最后会new 一个 String 因为不是equals ==是比较物理地址,第二个就相当于 分别指向了堆里面的2个内存地址,然后赋值给栈
所以就是说两个字符串连接的值都是在栈里面连接的,但是指向的内存地址就不一样了
C:\Documents and Settings\Administrator\桌面 |