this的作用:
this
表示的是当前对象本身- 更准确地说,
this
代表当前对象的一个引用。
构造方法中使用this:
- 使用this来调用其它构造方法
- 位置:必须是第一条语句
当构造方法中的参数名跟类的成员变量名称一样的时候,可以使用this代表当前对象
(*******有了this之后,可以将构造方法的参数跟成员变量保持一致*******)
代码语言:javascript复制public class ThisDemo1 {
String name;
int age;
//构造方法中使用this
public ThisDemo1(String name,int age){
this.name =name;
this.age = age;
}
public static void main(String[] args) {
ThisDemo1 td = new ThisDemo1("lisi",23);
System.out.println(td.name);
System.out.println(td.age);
}
}
当构造方法中需要调用其他的构造方法时,可以使用this()
.
public class ThisDemo {
String name;
int age;
public ThisDemo(){
}
public ThisDemo(String name){
System.out.println("one");
this.name =name;
}
public ThisDemo(String name,int age){
this(name);//this调用其他构造方法,必须位于方法体的第一行
System.out.println("two");
this.name =name;
this.age = age;
}
public static void main(String[] args) {
ThisDemo td = new ThisDemo("lisi",23);
System.out.println(td.name);
System.out.println(td.age);
}
}
普通方法中使用this:
- 区分类成员属性和方法的形参
- 调用当前对象的其他方法(可以省略)
- 位置:任意位置
当多个普通方法之间需要调用的时候,可以使用this来进行调用,指的是当前对象的其他方法
代码语言:javascript复制public class ThisDemo1 {
String name;
int age;
//构造方法中使用this
public ThisDemo1(String name,int age){
this.name =name;
this.age = age;
}
public void test1(){
System.out.println("test1");
}
//普通方法中使用this
public void test2(){
System.out.println("test2");
this.test1();
}
public static void main(String[] args) {
ThisDemo1 td = new ThisDemo1("lisi",23);
System.out.println(td.name);
System.out.println(td.age);
td.test2();
}
}
成员变量使用this:
当方法中的参数名称跟成员变量保持一致的时候,使用this.变量名称
表示的是对象的值,而使用变量名称表示形参列表中的值
public class ThisDemo1 {
String name;
int age;
//构造方法中使用this
public ThisDemo1(String name,int age){
this.name =name;
this.age = age;
}
public void test1(){
System.out.println("test1");
}
//普通方法中使用this
public void test2(String name){
System.out.println("test2");
this.test1();
//打印参数里面的属性
System.out.println(name);
//打印当前对象的属性
System.out.println(this.name);
}
public static void main(String[] args) {
ThisDemo1 td = new ThisDemo1("lisi",23);
System.out.println(td.name);
System.out.println(td.age);
td.test2("huahua");
}
}
注意:this
不能用于static
方法