1 String s1 = "a"; 2 String s2 = s1.concat(""); 3 String s3 = null; 4 new String(s1);
这段代码会涉及3个String类型的变量,
1、s1,指向下面String实例的1
2、s2,指向与s1相同
3、s3,值为null,不指向任何实例
以及3个String实例,
1、"a"字面量对应的驻留的字符串常量的String实例
2、""字面量对应的驻留的字符串常量的String实例
(String.concat()是个有趣的方法,当发现传入的参数是空字符串时会返回this,所以这里不会额外创建新的String实例)
3、通过new String(String)创建的新String实例;没有任何变量指向它。
String s = new String("xyz"); 在运行时涉及几个String实例? 答案:两个,一个是字符串字面量"xyz"所对应的、驻留(intern)在一个全局共享的字符串常量池中的实例,另一个是通过new String(String)创建并初始化的、内容与"xyz"相同的实例
String s = new String("xyz"); 涉及用户声明的几个String类型的变量? 答案:一个,就是String s。 String s = null; 涉及用户声明的几个String类型的变量? 答案:同上。