Java中的参数传递及此情景下的String

2018-08-03  本文已影响0人  帕博雷克斯丢丢
public class Demo {

    public static void main(String[] args) {
        StrStb strb = new StrStb();


        strb.add(strb.strCon);
        System.out.println(strb.strCon);

        strb.add(strb.strBuf);
        System.out.println(strb.strBuf);

    }
}


class StrStb {
    public String strCon = "hello";
    public String strObj = new String("dont BB");
    public StringBuffer strBuf = new StringBuffer("string buffer");


    public void add(String s) {
        System.out.println(s == strCon);
        System.out.println("1:" + s);
        s = "No Hello";
        System.out.println(s == strCon);
        System.out.println("2:" + s);
        System.out.println("3:" + strCon);
    }

    public void add(StringBuffer sb) {
        sb.append("------FinalEnd");
    }
}

在传递参数的时候,add(String s)方法执行时,是先在堆中声明一个String类型的s,并把这个s指向栈中的strb.strCon,然后在字符串常量区产生一个"No Hello",并把s指向这个对象。
上一篇 下一篇

猜你喜欢

热点阅读