1、代指类中的属性,我们采用this 代码如下:
/**
* 1、类中的属性调用都要用this
*/
public class TestStudent001 {
public static void main(String[] args) {
Student001 st001 = new Student001("Kobe",38);
System.out.println(st001.getInfo());
}
}
class Student001{
private String name;
private Integer age;
// public Student001(String ss,Integer mm){
// name = ss;
// age = mm;
// }
public Student001(String name,Integer age){
this.name = name;
this.age = age;
}
public String getInfo(){
return "学生名: "+name+" 的年纪"+age;
}
}
// 方法中的参数名称不好,所以我们就用this 明确,参数的作用更加形象化。如上代码,代表的是外层的this对象
2、代指当前对象
//this 关键字的作用
public class TestStudent {
public static void main(String[] args) {
Student studentA = new Student();
System.out.println("学生A "+ studentA);
studentA.print();
System.out.println("-----------这是分界线--------------");
Student studentB = new Student();
System.out.println("学生B "+ studentB);
studentB.print();
}
}
/**
* 所谓的当前对象指的就是当前正在调用类中方法的对象
* 哪个对象调用了print方法,this 就自动与此对象指向同一块内存地址。this就是当前调用方法的对象
*/
class Student{
public void print(){
System.out.println("this------- " + this);
}
}
输出结果:
学生A com.alfred.study.Student@4554617c
this------- com.alfred.study.Student@4554617c
-----------这是分界线--------------
学生B com.alfred.study.Student@74a14482
this------- com.alfred.study.Student@74a14482
3、解决方法的重复调用
//利用this 解决方法的重复调用 this()调用构造方法形式的代码只能放在构造方法的首行;进行构造方法互相调用的时候,一定要预留调用的出口
public class TestStudent002 {
public static void main(String[] args) {
Student002 stu002 = new Student002("James",36);
System.out.println(stu002.getInfo());
}
}
class Student002{
private String name;
private Integer age;
public Student002(){
System.out.println("这是一个类的无参构造");
}
public Student002(String name){
this();//调用本类的无参构造
System.out.println("这里有一个参数");
this.name = name;
}
public Student002(String name,Integer age){
this(name);
System.out.println("这里有二个参数");
this.age = age;
}
public String getInfo(){
return "学生名: "+name+" 的年纪"+age;
}
}
输出结果:
这是一个类的无参构造
这里有一个参数
这里有二个参数
学生名: James 的年纪36