1、表示当前这个对象,也就是说当前谁调用这个方法则这个对象就是谁
2、可以访问本类中的实例变量
1.当局部变量和成员变量没有同名时,则编写属性名,等价于this
属性名,如:id 等价于 this.id
public class Test {
//成员变量
int i = 5;
public void print() {
//局部变量
int i = 6;
System.out.println("局部变量i:" + i);
System.out.println("成员变量i:" + this.i);
}
public static void main(String[] args) {
Test test01 = new Test();
test01.print();
}
}
输出结果:
2.当局部变量和成员变量同名时,访问成员变量则必须写成,如:this.id;
public class Test {
//成员变量
int i = 5;
public void print() {
//局部变量
int i = 6;
System.out.println("局部变量i:" + i);
System.out.println("成员变量i:" + this.i);
}
public static void main(String[] args) {
//创建第一个对象
System.out.println("第一个对象");
Test test01 = new Test();
test01.print();
System.out.println("分界线--------------------------");
//创建第二个对象
System.out.println("第二个对象");
Test test02 = new Test();
test02.i = 10;
test02.print();
}
}
输出结果为:
3、可以访问本类中的实例方法
1.如:方法名称([参数列表]) 等价于 this.方法名称([参数列表])
public class Test {
//成员变量
int i = 5;
public void print() {
//局部变量
int i = 6;
System.out.println("局部变量i:" + i);
System.out.println("成员变量i:" + this.i);
}
public void print02() {
this.print();
}
public static void main(String[] args) {
//创建第一个对象
System.out.println("第一个对象");
Test test01 = new Test();
test01.print();
System.out.println("分界线--------------------------");
//创建第二个对象
System.out.println("第二个对象");
Test test02 = new Test();
test02.i = 10;
//test02.print();
//通过调用print02来调用print
test02.print02();
}
}
输出结果为:
4、可以访问本类中的其他构造方法
1.this();访问本类无参构造方法
2.this([参数1,参数2,参数3,.....]);访问带参构造方法
3.当使用this访问本类构造方法时,则只能编写在构造方法中,并且只能是该构造方法中的第一条语句
Student04类
public class Student04 {
//构造方法
public Student04() {
}
public Student04(int sid,String name) {
this.sid = sid;
this.name = name;
}
public Student04(int sid,String name,String sex,int age) {
//将局部变量sid和name的值,给带两个参数的构造方法赋值
this(sid,name);
this.sex = sex;
this.age = age;
}
//属性:学号、姓名、性别、年龄、所在班级
int sid;
String name;
String sex;
int age;
public void stuinfo() {
System.out.println("学生信息如下:");
System.out.println("学号:" + sid);
System.out.println("姓名:" + name);
System.out.println("性别:" + sex);
System.out.println("年龄:" + age);
}
}
Test04类
public class Test04 {
public static void main(String[] args) {
//创建学生对象同时对学生中所有属性赋值
Student04 stu04 = new Student04(40101,"张三","男",21);
stu04.stuinfo();
}
}
输出结果为:
4.构造方法不能出现递归调用,会出现死循环
例:
public Student04(int sid,String name,String sex,int age) {
this(sid,name,sex,age);
}