Java 參數(shù)的傳遞、String 相關(guān)知識點

參數(shù)傳遞問題:

小伙伴們先看看以下代碼,在心里寫下自己的答案:

public class Base {

    public static void main(String[] args) {
        StringBuffer s = new StringBuffer("hello");
        StringBuffer s2 = new StringBuffer("hi");
        test(s, s2);
        System.out.println("方法調(diào)用后s的值:" + s);
        System.out.println("方法調(diào)用后s2的值:" + s2);
    }

    static void test(StringBuffer s3, StringBuffer s4) {
        System.out.println("方法初始化時s3的值:" + s3);
        System.out.println("方法初始化時s4的值:" + s4);
        s4 = s3;
        s3 = new StringBuffer("new");
        System.out.println("第一步變化后s3的值:" + s3);
        System.out.println("第一步變化后s4的值:" + s4);
        s3.append("boy");
        s4.append("gril");
        System.out.println("第二步變化后s3的值:" + s3);
        System.out.println("第二步變化后s4的值:" + s4);

    }

}

執(zhí)行結(jié)果為:

方法初始化時s3的值:hello
方法初始化時s4的值:hi
第一步變化后s3的值:new
第一步變化后s4的值:hello
第二步變化后s3的值:newboy
第二步變化后s4的值:hellogril
方法調(diào)用后s的值:hellogril
方法調(diào)用后s2的值:hi

以上代碼摘錄自以下鏈接,我覺得挺不錯的,把參數(shù)的傳遞講的很詳細,一起看看唄。

https://blog.csdn.net/weixin_43030796/article/details/81974190?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control

String 相關(guān)知識點:

同樣的我們先來看一段代碼:

public class Mytest {

    public static void main(String[] args) {
        String ss = "a";
        String s2 = ss + "b" + "c";

        String s1 = "a" + "b" + "c";
        String s3 = "abc";
        System.out.println((s1 == s2));
        System.out.println((s1 == s3));
        test(s3);
        System.out.println("main 里面的 hashCode :" + s3.hashCode());
    }

    private static void test(String s) {
        System.out.println("改變前 hashCode:" + s.hashCode());
        s += s;
        System.out.println("改變后的值:" + s);
        System.out.println("改變后 hashCode:" + s.hashCode());
    }
}

執(zhí)行結(jié)果為:
false
true
改變前 hashCode:96354
改變后的值:abcabc
改變后 hashCode:-1424388928
main 里面的 hashCode :96354

如果和你想的答案不一樣,可以先看看這篇文章:
https://www.iteye.com/topic/634530

當"+"兩端均為編譯期確定的字符串常量時,編譯器會進行相應的優(yōu)化,直接將兩個字符串常量拼接好,所以:s1 == s3

而 s2 是在堆中生成新的對象,所以:s1 != s2

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容