厦门做网站哪家好,网站开发python,wordpress 页头,邢台网站推广公司java中 String a “123” “234”; String b “123”; String c b “234”; 其中a和c的区别是什么#xff1f; a c 为什么为false
在Java中#xff0c;字符串的处理特别是涉及到字符串常量和字符串变量的连接时#xff0c;会涉及到字符串池#xff08;String Pool “123” “234”; String b “123”; String c b “234”; 其中a和c的区别是什么 a c 为什么为false
在Java中字符串的处理特别是涉及到字符串常量和字符串变量的连接时会涉及到字符串池String Pool和字符串对象的创建方式。
String a “123” “234”; 这里123和234都是字符串常量。在编译时Java编译器会优化这种字符串常量的连接实际上它会将这两个字符串合并为一个字符串常量123234。因此a引用的是字符串池中的一个字符串。
String b “123”; 这里b是一个对字符串常量123的引用。
String c b “234”; 在这里由于b是一个变量所以b 234的连接操作是在运行时完成的。这意味着会创建一个新的字符串对象来表示连接后的字符串并且这个新对象不会被放入字符串池中除非显式调用.intern()方法。
总结 a c为false的原因是
a是对字符串池中的字符串常量的直接引用。 c是一个在运行时创建的新字符串对象即使它的内容与a相同它们在内存中是两个不同的对象。