本人java新手菜鸟,请问java this关键字到底指的是成员变量还是方法里的参数值?

看书没看明白this的用法啊!!!有人能解释清楚吗?请不要给我粘概念,谢谢!

有this表示的是成员变量,没有this修饰的就近原则,那个离他进就是哪个。比如成员变量跟参数都是同一个名(例 int age)。在方法里面,有this修饰的就是表示成员,没有的就是参数。都没有修饰,就表示是离他近的参数啦。。
当然这个回答只是回答了你的问题、
扩展一下内容吧=====
(当虚拟机创建一个对象,会创建一个指针指向自己)this就表示引用自己的指针,所以在静态或静态的代码快中不能有this,因为没有创建对象。
总结一下,其实this主要要三种用法:
1、表示对当前对象的引用!
2、表示用类的成员变量,而非函数参数,注意在函数参数和成员变量同名是进行区分!其实这是第一种用法的特例,比较常用,所以那出来强调一下。
3、用于在构造方法中引用满足指定参数类型的构造器(其实也就是构造方法)。但是这里必须非常注意:只能引用一个构造方法且必须位于开始!
还有就是注意:this不能用在static方法中!所以甚至有人给static方法的定义就是:没有this的方法!虽然夸张,但是却充分说明this不能在static方法中使用!
说明在什么情况下需要用到this:
第一、通过this调用另一个构造方法,用发是this(参数列表),这个仅仅在类的构造方法中,别的地方不能这么用。
第二、函数参数或者函数中的局部变量和成员变量同名的情况下,成员变量被屏蔽,此时要访问成员变量则需要用“this.成员变量名”的方式来引用成员变量。当然,在没有同名的情况下,可以直接用成员变量的名字,而不用this,用了也不为错,呵呵。
第三、在函数中,需要引用该函所属类的当前对象时候,直接用this。
其实这些用法总结都是从对“this是指向对象本身的一个指针”这句话的更深入的理解而来的,死记不然容易忘记而且容易搞错,要理解!
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-27

this指代成员方法中的成员自身,可以省略不写

举个例子

class Show
{
    private String name;
    public void setName(String name)
    {
        //这里的name是参数传递过来的值,this.name是成员变量自身的private String name属性
        this.name=name+",你好";
    }
    public String getName()
    {
        //返回当前对象的name属性值
        return this.name;
    }
}

public class Test
{
    public static void main(String[] args)
    {
        //创建一个新的Show对象,名称为shower
        Show shower=new Show();
        //这里传了一个值给shower,可以获知shower的name值为 "巨人战舰,你好"
        shower.setName("巨人战舰");
        //输出的是shower的name值,这里的shower相当于getName()中的this
        System.out.println(shower.getName());
    }
}

本回答被提问者采纳
第2个回答  2014-02-02
this 指的不是成员变量还是方法里的参数值
指得是这个类自身

class a
{
int i = 0;
public void aa(){
System.out.print(i);
}
public void ab(){
aa();
}
}
上边这个类是肯定可以正常编译运行的 但是那是经过编译器修改过以后才可以的 这个类真正的样子是这样的
class a
{
int i = 0;
public void aa(){
System.out.print(this.i);
}
public void ab(){
this.aa();
}
}
看见没有 类在调用自己成员变量和方法的时候其实都是必须要在前边加上this.的
第3个回答  2014-02-02
哪个对象调用的成员函数,this就指向哪个对象,它指向的是调用它的对象
至于成员变量请用 对象+. 也就是成员操作符来指明。
第4个回答  2014-02-02
this 就是这个的意思,引申一下就是这个类的意思,有时候因为实际需要,类里边要调用自己的话,就用this代表自己。相当于张三要说自己的时候不用“张三”而是用“我”
相似回答