一 不加this关键字且局部和成员变量名称不同
1.定义类
public class ThisDemo {
private String name;
private int age;
ThisDemo(String n){
name=n;
}
ThisDemo(String n,int a){
name=n;
age=a;
}
public void speak(){
System.out.println(name+"....."+age);
}
}
2.执行类
public class Test {
public static void main(String[] args) {
ThisDemo td=new ThisDemo("lisi");
td.speak();
}
}
3.运行结果
运行结果为:lisi.....0
二.不加this关键字且局部和成员变量名称相同
1.代码
public class ThisDemo {
private String name;
private int age;
ThisDemo(String name){
name=name;
}
ThisDemo(String n,int a){
name=n;
age=a;
}
public void speak(){
System.out.println(name+"....."+age);
}
}
2.测试代码
public class Test {
public static void main(String[] args) {
ThisDemo td=new ThisDemo("lisi");
td.speak();
}
}
3. 测试结果
运行结果:null.....0
三 使用this关键字(局部,成员可相同可不相同)
public class ThisDemo {
private String name;
private int age;
ThisDemo(String name){
this.name=name;
}
ThisDemo(String n,int a){
this. name=n;
this.age=a;
}
public void speak(){
System.out.println(name+"....."+age);
}
}
2.测试
public class Test {
public static void main(String[] args) {
ThisDemo td=new ThisDemo("lisi");
td.speak();
ThisDemo td2=new ThisDemo("lisi",50);
td2.speak();
}
}
3.运行结果
四 this关键字的总结
1.this相当于对象的预存位置。
2.区别成员变量和局部变量名相同的情况。
3.this代表本类对象的引用;代表所在函数所属对象的引用。即:那个对象在调用this所在函数,this就代表那个对象。
4.当定义类中功能时,该函数内部用到调用该函数对象时,用this对象。
.public boolean compare(ThisDemo p){
if(this.age==p.age){
......
}
}
调用: p1.compare(p2) 那么 this.age中指的是p1,p.age指的是p2
5.this用于构造函数之间互相调用,切记只能定义在构造函数的第一行,因为初始化要使用。
public class ThisDemo {
private String name;
private int age;
ThisDemo(String name){
this. name=name;
}
ThisDemo(String n,int a){
this(n);// this.name=n;
this.age=a;
}
public void speak(){
System.out.println(name+"....."+age);
}
}
public static void main(String[] args) {
ThisDemo td=new ThisDemo("lisi",3);
td.speak();
}
结果为:结果为:lisi.....3
最后:但凡本类中用到了本类对象,就要使用this对象。