20180306 java this关键字的使用
使用this的六个场景:
1、解决成员变量和参数(局部变量)之间的二义性,必须使用。
eg:
class User
{
private String name = NULL;
public String getName()
{
return name;
}
public String setName(String name)
{
this.name = name;//解决成员变量和参数之间的二义性
}
}
2、同类中实例方法间互相调用(也可以不用this)。
class User{
public void show()
{
Systtem.out.println("word");
}
public void sayHello()//当调用了sayHello()时,
//就调用了本类中的show方法
{
Systtem.out.println("hello");
this.show();//但是我们编写程序时,经常把this省略
//这样调用this方法也没错。
}
}
3、将this作为参数传递给另一个方法(不常用)。
4、将this作为方法的返回值(不常用)。
5、构造器重载的互调 this([参数])必须写在构造方法第一行(重点讲)。
6、static和this不能一起使用。
原因:当字节码被加载进JVM,static成员就已经存在了,
但是此时对象还没有创建,没有对象 就没有this,
因为this是对象中指向自己的一个引用。
eg:
public static void main(String[] args)
{
System.out.println(this);//错误,this不能与static一起使用
}
5、构造器重载的互调 this([参数])必须写在构造方法第一行。
详细解析:
class User
{
private String name = NULL;
private int age;
User()//默认构造器,什么都不做
{
}
User(String name)//创建对象,初始化name
{
this.name = name;
}
User(String name)//创建对象,初始化name和age
{
this.name = name;//this表示当前创建的对象
this.age = age;
}
public void show()
{
System.out.println(name + " "+ age);
}
}
class ThisDemo{
public static void main(String[] args)
{
User u1 = new User("张三",16);//调用有参数的构造器
u1.show();//此处输出: 张三 16
}
};