this关键字

来源:7-4 Java 中的 this 关键字

慕仰9213596

2017-08-20 12:04

没使用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回答

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

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

    慕婉清644...

    回答真棒

    2018-02-23 15:42:20

    共 4 条回复 >

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

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

    慕仰9213...

    谢谢!

    2017-08-21 10:22:55

    共 1 条回复 >

  • 慕妹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 ;

    慕仰9213...

    谢谢!

    2017-08-21 10:22:11

    共 1 条回复 >

Java入门第二季 升级版

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

530650 学习 · 6091 问题

查看课程

相似问题