字符串在各个场景下的 ==
备注: 当然正常情况下还是equals来处理是否相等,只是了解下
代码见截图:
执行结果:
个人理解:
1. a 和 a1相等 ,是因为这两个变量都未在堆中生成实例,而是直接指向了方法区的运行常量池的 "helloworld" 元素,所以二者连地址值都是一样的
2. String f = "hello"+"world" ; 其实是因为jvm的优化,编译器编译结束后,其实已经变成 String f = "helloworld" ,同上 ,返回true .
备注: 当然正常情况下还是equals来处理是否相等,只是了解下
代码见截图:
执行结果:
个人理解:
1. a 和 a1相等 ,是因为这两个变量都未在堆中生成实例,而是直接指向了方法区的运行常量池的 "helloworld" 元素,所以二者连地址值都是一样的
2. String f = "hello"+"world" ; 其实是因为jvm的优化,编译器编译结束后,其实已经变成 String f = "helloworld" ,同上 ,返回true .