为了账号安全,请及时绑定邮箱和手机立即绑定

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入门第二季 升级版
  • 参与学习       529885    人
  • 解答问题       6086    个

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

进入课程

this关键字

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信