如果使用字符串常量,我们的行为是Java编译器将使用相同的实例
String a = "abc"; String b = "abc"; //a == b String c = new String("abc"); // c is a brand new object on the heap;
为什么java编译器不优化新的String并用等效赋值替换它?是否有一些深层次的设计决定,或者只是巧合?我们是否可以期望不同的JVM或编译器更具攻击性,并且实际上用一个众所周知的静态对象替换不可变对象的堆实例?虽然String是最臭名昭着的例子,但我们可以为Integer提供相同的行为。
四季花海
相关分类