问答详情
源自:7-4 Java 中的 this 关键字

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的情况是怎么回事?

提问者:慕仰9213596 2017-08-20 12:04

个回答

  • 九尾猿
    2017-08-20 12:25:17
    已采纳

    没有使用this关键字,你的set方法里边的赋值是没有意义的,它相当于把一个set 方法里的一个私有变量 Eyes等于自己的值,而整个类里边的全局变量Eyes并没有被赋值,当你打印的时候,它还是用的自己初始化的默认值0。

  • 慕粉4113795
    2017-08-20 14:32:11

    方法是放在方法区的,方法只有那么一个,但是会调用它的对象会很多,在该代码中this强调是当前对象调用了方法,没有this,就不知道是谁调用了方法。ps:左边的Eyes是属性,右边的是变量,变量由形参传入数据。

  • 慕妹3397157
    2017-08-20 12:38:37

    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 ;