IBMJava面试题,String s = "a" + "b" + "c" + "d" + "e"; 问此语句共创建了几个对象

1个。
编译器编译的时候就处理为"abcde"了 。


就创建了一个
String s = "a" + "b" + "c" + "d" + "e";
赋值符号右边的"a"、"b"、"c"、"d"、"e"都是常量
对于常量,编译时就直接存储它们的字面值而不是它们的引用
在编译时就直接讲它们连接的结果提取出来变成了"abcde"
该语句在class文件中就相当于String s = "abcde"
然后当JVM执行到这一句的时候, 就在String pool里找
如果没有这个字符串,就会产生一个

 

s只是引用不是对象

String s = null;

不生成任何对象

你可能感兴趣的:(jvm,C++,c,面试,C#)