欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

引用傳遞示例,以及String類型如何傳遞的原理-創(chuàng)新互聯(lián)

問題引入

大家都知道值傳遞和引用傳遞,下面我來通過以一個問題和示例來解決引用類型傳遞的原理

創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比東興網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式東興網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋東興地區(qū)。費用合理售后完善,十年實體公司更值得信賴。

? 1)先創(chuàng)建了引用類型Person里面有String name 和int age?

? 2)new 一個對象,把這個對象的值賦給a,再把a賦給Person類型的b

package classtest1224;

public class Person {
    private String name;
    private int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
主函數(shù)
Person a = new Person();
        a.setAge(18);
        a.setName("zzt");
        Person b = a;
        System.out.println("--------------");
        System.out.println(a);
        System.out.println(b);
        System.out.println("--------------");
        System.out.println("接下來改變a的Name看看b的值能不能改變");
        b.setName("慢慢學(xué)");
        System.out.println(a);
        System.out.println(b);

思考:將a的值賦值給了b,通過改變b的值能改變a的值嗎?

你的結(jié)果是這樣嗎?

Person{name='zzt', age=18}
Person{name='慢慢學(xué)', age=18}

測試結(jié)果如下

Person{name='慢慢學(xué)', age=18}
Person{name='慢慢學(xué)', age=18}

是不是挺奇怪的,這就是引用傳遞具體

可以見下面這張圖?

提出問題

所以所有引用類型的值是不是都是這也傳遞的呢?經(jīng)過我的學(xué)習(xí),除了String類剩下的都是可以的下來就看看String類到底是怎么樣的

1.String的字符串池問題
String s1 = "abc";
        String s2 = "abc";
        System.out.println(s1==s2);

比較結(jié)果會是怎么樣的?true?false?

是內(nèi)容一樣但是地址不一樣,所以結(jié)果是false嗎?

測試結(jié)果:true?

我先看了String源碼發(fā)現(xiàn)底層是final的字符數(shù)組,意思就是她的值是不可改變的,那為什么字符串可以進行a+="abc";操作呢?

原因是:每次修改String類型的值都會重新創(chuàng)建一個出來,所以對字符串的操作是非常浪費資源的。但因為java的垃圾回收機制,長時間不用的又會被回收掉!

不多廢話了!直接上代碼!!!

String c = "abc";
        String d = c;
        System.out.println("改變c看看d的值是否改變");
        c+="d";
        System.out.println(d);

測試結(jié)果如下?

通過改變c的值發(fā)現(xiàn)d的值并沒有改變

原理是:String類型有特定的字符串池,每次改變字符串的值就會向常量池中添加新的字符串,如下如圖所示:?

以上是我這篇博客的內(nèi)容如有不正確的地方希望大家指出!!!

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

網(wǎng)頁題目:引用傳遞示例,以及String類型如何傳遞的原理-創(chuàng)新互聯(lián)
本文地址:http://www.chinadenli.net/article2/psooc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗網(wǎng)站改版域名注冊全網(wǎng)營銷推廣自適應(yīng)網(wǎng)站搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化