Java 參數(shù)傳遞分析

前言

再講Java參數(shù)傳遞分析之前先給大家看段代碼溢吻,想想代碼輸出結(jié)果是啥呀!

  public static void main(String[] args) {
      String str=" I am Jack";
      changeStr(str);
      System.out.println("mian方法中值: "+str);
    
   }
  public static void changeStr(String str){
      str="I am Tom";
      System.out.println("changStr方法():"+str);
      
  }

看完之后 大家心中應(yīng)該有答案了吧种蝶!給出答案后!不知道大家想的和實(shí)際輸出的是否有出入了瞒大!大家請(qǐng)看螃征!

Paste_Image.png

看到答案后大家是否有點(diǎn)疑惑,我明明調(diào)用changStr()方法了, 為啥在 main方法中 Str 的值還是 “ I am Jack”透敌? 說到這 就開始進(jìn)入我今天所要講的主題Java參數(shù)分析盯滚,先看看Java 基本類型參數(shù)分析!

基本類型傳遞

整數(shù):byte,short, int ,long
浮點(diǎn)型 :float double
邏輯型 :boolean
字符型 :char
這四類八種類型 都是值傳遞酗电,因?yàn)橹凳侵苯颖4嬖跅?nèi)存中的,所以傳遞的時(shí)候直接拷貝過去了

  public static void main(String[] args) {
     int  num=3;
     changeNum(num);
     System.out.println("num:"+num);//輸出結(jié)果3
    
   }
  public static void changeNum(int newNum){
      newNum=5;
     System.out.println("newNum:"+newNum);//輸出結(jié)果5
      
  }
Paste_Image.png

這些改變都是在changNum()方法中 魄藕,并不影響外面的值 ,這樣就可以解釋輸出結(jié)果顾瞻!

Java 對(duì)象傳遞

這也是我們開發(fā)中經(jīng)常遇到的 理解好對(duì)我們開發(fā)很有幫助泼疑,廢話不多說直接上代碼

例一

簡單實(shí)體類

public class Student {
    private String name;
    private String address;

    public Student(String name, String address) {
        this.name = name;
        this.address = address;
    }

    public String getName() {
        return name;
    }

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

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

}

Test類

  public static void main(String[] args) {
    Student stu=new Student("jack","廣東廣州");
    changeStudent(stu);
    System.out.println("main() "+stu.getName());
    
   }
  public static void changeStudent(Student changeStu){
    changeStu.setName("Tom");
    System.out.println("changeStudent() "+changeStu.getName());
      
  }

大家思考下 這個(gè)輸出結(jié)果是啥了德绿!如果按照基本類型去思考 你就掉坑了荷荤,哈哈哈,給大家看下答案吧移稳!

Paste_Image.png

對(duì)改變成功了 兩次輸出都是Tom 而不是按照基本數(shù)據(jù)類型傳遞 看起來現(xiàn)在給大家分析下吧蕴纳!

Paste_Image.png

可以明確看出stu,changStu 指向同堆空間 意思 在changeStudent()方法中操作也就是同堆空間,這樣的話不管是在changeStudent() 輸出還是 在這個(gè)方法外輸出 改變?nèi)匀挥行А?/p>

例二

 public static void main(String[] args) {
   Student stu=new Student("jack","廣東廣州");
   changeStudent(stu);
   System.out.println("main() "+stu.getName());
   
  }
 public static void changeStudent(Student changestu){
     changestu=new Student("Tom", "廣東廣州");
   System.out.println("changeStudent() "+changestu.getName());
     
 }

這個(gè)輸出結(jié)果大家再想想是啥个粱! 現(xiàn)在我就來公布答案古毛,請(qǐng)看!

Paste_Image.png

是不是又有迷惑了都许,看下分析圖

Paste_Image.png

例三

直接上代碼吧稻薇!

 public static void main(String[] args) {
    Student stu=new Student("jack","廣東廣州");
    changeStudent(stu);
    System.out.println("main() "+stu.getName());
    
   }
  public static void changeStudent(Student changestu){
      changestu.setName("scott");
      changestu=new Student("Tom", "廣東廣州");
      System.out.println("changeStudent() "+changestu.getName());
      
  }

我想大家通過上面分析輸出結(jié)果,已經(jīng)知道了但是 我還是分析呀胶征!加深印象
結(jié)果是

Paste_Image.png

分析圖

Paste_Image.png

現(xiàn)在回到 開篇說問題塞椎,我相信大家都可以很好的解釋了 他的輸出結(jié)果了
因?yàn)镾tring對(duì)象具有不可變性,所以針對(duì)操作str = "I am Tom"
,在String池中不存在的時(shí)候,就是相當(dāng)于str = new String()
,這樣變化下的話,那么就和例二具體圖一樣,所以就不畫了,希望對(duì)你有幫助.

總結(jié)

1睛低,對(duì)于基本類型,直接拷貝值傳遞過去
2案狠,對(duì)于對(duì)象,拷貝當(dāng)前對(duì)象的引用地址,然后把該地址傳遞過去,所以也是值傳遞.

在最后 我想給大家看段代碼 ,看看它的輸出結(jié)果是什么钱雷?

  public static void main(String[] args) {
    String str=null;
    str+="I am Jack";
    System.out.println("str=== "+str);
}

請(qǐng)?jiān)谠u(píng)論中說出你的答案和理由骂铁,這是我在項(xiàng)目中的發(fā)現(xiàn)一個(gè)有趣的東西,想和大家分享下罩抗!隨便看下和我的理解是否一樣 拉庵。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市套蒂,隨后出現(xiàn)的幾起案子钞支,更是在濱河造成了極大的恐慌阱扬,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,029評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件伸辟,死亡現(xiàn)場(chǎng)離奇詭異麻惶,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)信夫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,395評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門窃蹋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人静稻,你說我怎么就攤上這事警没。” “怎么了振湾?”我有些...
    開封第一講書人閱讀 157,570評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵杀迹,是天一觀的道長。 經(jīng)常有香客問我押搪,道長树酪,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,535評(píng)論 1 284
  • 正文 為了忘掉前任大州,我火速辦了婚禮续语,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘厦画。我一直安慰自己疮茄,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,650評(píng)論 6 386
  • 文/花漫 我一把揭開白布根暑。 她就那樣靜靜地躺著力试,像睡著了一般。 火紅的嫁衣襯著肌膚如雪排嫌。 梳的紋絲不亂的頭發(fā)上畸裳,一...
    開封第一講書人閱讀 49,850評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音躏率,去河邊找鬼躯畴。 笑死,一個(gè)胖子當(dāng)著我的面吹牛薇芝,可吹牛的內(nèi)容都是我干的蓬抄。 我是一名探鬼主播,決...
    沈念sama閱讀 39,006評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼夯到,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼嚷缭!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,747評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤阅爽,失蹤者是張志新(化名)和其女友劉穎路幸,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體付翁,經(jīng)...
    沈念sama閱讀 44,207評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡简肴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,536評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了百侧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片砰识。...
    茶點(diǎn)故事閱讀 38,683評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖佣渴,靈堂內(nèi)的尸體忽然破棺而出辫狼,到底是詐尸還是另有隱情,我是刑警寧澤辛润,帶...
    沈念sama閱讀 34,342評(píng)論 4 330
  • 正文 年R本政府宣布膨处,位于F島的核電站,受9級(jí)特大地震影響砂竖,放射性物質(zhì)發(fā)生泄漏真椿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,964評(píng)論 3 315
  • 文/蒙蒙 一晦溪、第九天 我趴在偏房一處隱蔽的房頂上張望瀑粥。 院中可真熱鬧挣跋,春花似錦三圆、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,772評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至查库,卻和暖如春路媚,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背樊销。 一陣腳步聲響...
    開封第一講書人閱讀 32,004評(píng)論 1 266
  • 我被黑心中介騙來泰國打工整慎, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人围苫。 一個(gè)月前我還...
    沈念sama閱讀 46,401評(píng)論 2 360
  • 正文 我出身青樓裤园,卻偏偏與公主長得像,于是被迫代替她去往敵國和親剂府。 傳聞我的和親對(duì)象是個(gè)殘疾皇子拧揽,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,566評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法淤袜,繼承相關(guān)的語法痒谴,異常的語法,線程的語...
    子非魚_t_閱讀 31,598評(píng)論 18 399
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理铡羡,服務(wù)發(fā)現(xiàn)积蔚,斷路器,智...
    卡卡羅2017閱讀 134,633評(píng)論 18 139
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 3,805評(píng)論 0 11
  • https://developer.android.com/studio/index.html 然后在 正常...
    我的皮皮貓閱讀 6,159評(píng)論 0 3
  • 我是一個(gè)廣播迷烦周。 最愛一個(gè)人库倘,捧著杯紅茶,靜靜地在夜里聽著收音機(jī)论矾,主持人的聲音教翩,或熱烈或溫婉,或親切或感性...
    兩個(gè)梨窩閱讀 1,573評(píng)論 0 2