如果使用字符串常量,我们的行为是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提供相同的行为。
一只斗牛犬
四季花海
随时随地看视频慕课网APP
相关分类