java

导航

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 这个已经不同了.
所以输出的是后一个.即改变后的值.

分享到

相关资讯