本文共 1766 字,大约阅读时间需要 5 分钟。
1.表示对当前对象的引用
一般应用场景为有参构造和Setter/Getter方法中,也就是我们常说的标准类public class Person { private String name; private int age; public Person(){ } public Person(String name,int age){ this.name=name; this.age=age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; }}
那么其中的this关键字是指什么勒?
其实就是我们通过Person类生成的对象,比如我们Person one=new Person(); one.setAge(18);
new了一个one对象,通过one对象去调用setAge方法,那么this.age=age就等效于one.age=age,也就是说这个this就是我们的one对象,不信的话可以在setAge里面去打印一下this,看看和我们的one对象是不是一个地址。
也就是说this.age=age等效于我们之前在主函数里面用对象调用成员变量,并且赋值。 也就是说,this是指向对象本身的一个指针2.在构造方法里面中引用满足参数类型的构造器(其实也就是构造方法)
这个作用其实有点鸡肋,我个人觉得做个了解即可
其实翻译成白话就是,在无参构造中可以直接调用有参,在有参构造中可以直接调用无参。 下面来举例,先说无参构造中调用有参public class Person { String name; int age; public Person(){**//第二步** this("大白袜",23);//无参中调用有参构造 } public Person(String name,int age){**//第三步** this.name=name; this.age=age;**//第四步** } public static void main(String[] args){ Person two=new Person();**//第一步** System.out.println(two.age);**//第五步** }}
也就是说,我们在new一个对象的时候,它的代码执行顺序就如图所示。
同理假如在有参构造中,调用无参就该这么写
public class Person { String name; int age; public Person(){ } public Person(String name,int age){ this();//有参中调用无参构造 this.name=name; this.age=age; }
必须注意的是:只能引用一个构造方法,且必须位于开始
什么叫位于开始? 就是this();前面没有任何代码,前面就是public 类名()这行代码. 什么叫只能引用一个构造方法? 就是在有参中调用无参了,就不能再在无参中调用有参了,只能引用一个构造方法 而且,这种用法只能用于构造方法中,别的地方不能用3.调用当前对象中的其它成员方法
public class Person { String name; int age; public void eat(){ this.sleep();//调用对象其它成员方法,这里this也可以省略 System.out.pintln("吃饭'); } public void sleep(){ System.out.pintln("睡觉'); } public static void main(String[] args){ Person three=new Person(); three.eat();//输出结果为:睡觉 吃饭 } }
转载地址:http://pwslf.baihongyu.com/