您的位置:首页 > 编程语言 > Java开发

Java的this关键字

2017-06-13 14:09 357 查看

1.什么是this

 表示当前对象,什么优势当前对象.

 this主要存在于两个位置:

          构造器中:  就表示当前创建的对象.

          方法中:  哪一个对象调用this所在的方法,那么此时this就表示哪一个对象.

当一个对象创建之后,JVM会分配一个引用自身的引用:this.



2.使用this

① 解决成员变量和参数(局部变量)之间的二义性,必须使用;

public class ThisDemo
{
private int age;
private String name;

public void setAge(int age){
this.age = age; //把调用者传递的age赋值给字段age
}
public int getAge(){
return age;
}

public void setName(String name){
this.name = name; //把调用者传递的name赋值给字段name
}
public String getName(){
return name;
}

public static void main(String[] args){
ThisDemo demo = new ThisDemo();
demo.setAge(18);
demo.setName("杨哥");
System.out.println(demo.getAge());
System.out.println(demo.getName());
}
}② 同类中实例方法间互调(此时可以省略this,但是不建议省略)。
public class ThisDemo
{
private int age;
private String name;

public void setAge(int age){
this.age = age; //把调用者传递的age赋值给字段age
}
public int getAge(){
return age;
}

public void setName(String name){
this.name = name; //把调用者传递的name赋值给字段name
}
public String getName(){
return name;
}

public void show(){
System.out.println("hello");
}
public void sayHello(){
show(); // 也可以省略this,不建议
this.show(); //调用本类中的方法
}

public static void main(String[] args){
ThisDemo demo = new ThisDemo();
demo.sayHello();
}
}③ 将this作为参数传递给另一个方法;



④ 将this作为方法的返回值(链式方法编程);



⑤ 构造器重载的互调,this([参数])必须写在构造方法第一行;



上面的代码,没问题:

但是:存在一些问题.

       1):代码功能重复? this.name  = name;

       2):重复会导致代码维护性低.

所以修改如下:



但是当多个构造器重载时,或者多个方法重载时,一般的,我们是少参数的调用多参数的.

----------------------------------------------------

因为参数越多,该方法考虑的未知的因素也越多,也就是说功能更强大.JDK中的类也是这么设计的



⑥ static不能和this一起使用;

             当字节码被加载进JVM,static成员已经存在了.

             但是此时对象还没有创建,没有对象,就没有this.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息