這里有兩個類
1 class Driver
2 {
3 //構造方法
4 public Driver(){}
5
6 //成員變量
7 Score score;
8 }
和
1 class Score
2 {
3 int score;
4
5 public Score(int score)
6 {
7 this.score=score;
8 }
9 }
對于實例化對象Driver defender =new Driver();等號左邊是一個對象,等號右邊new了一個對象,整句就是new了一個叫做defender的對象。這是我的理解。
但是對于defender.score = new Score(5);這一句代碼,等號左邊是一個變量,等號右邊new了一個對象,這又應該怎么解釋呢?還是我對實例化的理解本身就出了問題?新手,請指點,謝謝??!
8 回答

當年話下
TA貢獻1890條經驗 獲得超9個贊
Driver defender =new Driver();
等號左邊?Driver defender 是告訴jvm,我現在需要一個driver類型的變量,該變量的名字叫defender。(jvm會在棧中創建一個變量,此變量是指向Driver 類型的實例的引用)
等號右邊?new Driver(),告訴jvm幫我創建一個Driver類型的變量,此變量實際會在堆內存中新增,
整句代碼的意思就是 讓jvm在堆內存中初始化一個Driver的實例并將此實例的引用傳給棧內存中的defender 變量。
defender.score = new Score(5)
這句和上邊一樣,jvm會先初始化一個Source類型的實例,并將此實例的引用賦值給defender的屬性score。

侃侃爾雅
TA貢獻1801條經驗 獲得超16個贊
這算啥問題,不都是這樣用的嗎,那個變量的類型就是Score,defender.score不就是Score score嗎,Score score = new Score(5);沒問題呀

汪汪一只貓
TA貢獻1898條經驗 獲得超8個贊
defender.score = new Score(5); 等同于 Score tempScore= new Score(5); defender.score=tempScore
構造函數也是函數,允許傳值進去。
在這里理解為初始化
添加回答
舉報
0/150
提交
取消