java认证考试编程题(13)
来源 :中华考试网 2016-10-05
中public class Test
{
public static void main(String[] args)
{
String a = new String("A");
String b = new String("B");
a.concat("aa");
System.out.println(a + "," + b);
}
}
这个还是会输出A,B
原因同上.
package intervie;
public class Test
{
public static void main(String[] args)
{
String a = new String("A");
String b = new String("B");
a = a.concat("aa");
System.out.println(a + "," + b);
}
}
做了下改动,再来看看.结果就不同了.
输出的是Aaa,B
因为String 是final类型的.所以执行到
a = c.concat("aa");
会在heap里新创建一个对象,而a指向它.
这是一新的地址,同String a 这个已经不同了.
所以输出的是后一个.即改变后的值.