亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

this關鍵字

沒使用this關鍵字

package com.imooc;

//import com.imooc.second.people;

public class packAge {

? ?private int Eyes;

? ?private int nose;

? ?private int ears;

? ?public static void main(String[] args){

? packAge hello = new packAge();

? hello.seteyes(5);

int aa= ? hello.geteyes();

? ?System.out.println("Eyes:"+aa);

? ?}


public int geteyes(){

return Eyes;

}

public void seteyes(int Eyes){

? Eyes=Eyes;

}

}

運行結果:

Eyes:0

使用this關鍵字

this. Eyes=Eyes;

運行結果:

Eyes:5

我想請問出現0的情況是怎么回事?

正在回答

3 回答

沒有使用this關鍵字,你的set方法里邊的賦值是沒有意義的,它相當于把一個set 方法里的一個私有變量 Eyes等于自己的值,而整個類里邊的全局變量Eyes并沒有被賦值,當你打印的時候,它還是用的自己初始化的默認值0。

4 回復 有任何疑惑可以回復我~
#1

慕仰9213596 提問者

非常感謝!
2017-08-21 回復 有任何疑惑可以回復我~
#2

魂千瀧

hello.seteyes(5);這代表什么含義?
2017-11-02 回復 有任何疑惑可以回復我~
#3

魂千瀧 回復 魂千瀧

明白了
2017-11-02 回復 有任何疑惑可以回復我~
#4

慕婉清6441602

回答真棒
2018-02-23 回復 有任何疑惑可以回復我~
查看1條回復

方法是放在方法區的,方法只有那么一個,但是會調用它的對象會很多,在該代碼中this強調是當前對象調用了方法,沒有this,就不知道是誰調用了方法。ps:左邊的Eyes是屬性,右邊的是變量,變量由形參傳入數據。

0 回復 有任何疑惑可以回復我~
#1

慕仰9213596 提問者

謝謝!
2017-08-21 回復 有任何疑惑可以回復我~

public void seteyes(int Eyes){

? Eyes=Eyes;

}

這里你改變 的 Eyes 只是 該方法里面的 Eyes 變量

public void seteyes(int Eyes){

? this.Eyes=Eyes;

}

改變的是 this.Eyes 這個屬性?

之所以 Eyes = 0 ,是因為方法的Eyes 變量 和 Eyes 屬性的變量名重復了,方法優先選擇Eyes

所以,你可以試試

public void seteyes(int a){

? Eyes=a;

}

這時候輸出 Eyes = 5 ;

2 回復 有任何疑惑可以回復我~
#1

慕仰9213596 提問者

謝謝!
2017-08-21 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
Java入門第二季 升級版
  • 參與學習       531142    人
  • 解答問題       6326    個

課程升級!以終為始告別枯燥,在開發和重構中體會Java面向對象編程的奧妙

進入課程

this關鍵字

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號