1.5(java学习笔记)this关键字

this关键字主要有三个作用

1.调用本类中的属性。

 1 public class TextThis {
 2       public static void main(String[] args){
 3           Person p1 = new Person();
 4           p1.getInfo();  
 5       }    
 6 }
 7 
 8 class Person{
 9     String name;
10     int age;
11     public Person(String n, int a){
12         name = n;
13         age = a;
14     }
15     public String getInfo(){
16         System.out.println();
17         return null;
18     }
19 }

上述程序可以正常运行,但是构造方法中形参名称对于我们来说不便于识别,那我们可不可以这样呢?

 1 public class TextThis {
 2       public static void main(String[] args){
 3           Person p1 = new Person();
 4           p1.getInfo();  
 5       }    
 6 }
 7 
 8 class Person{
 9     String name;
10     int age;
11     public Person(String name, int age){ //将形参名称和类中属性名称一致,这样可以便于我们识别。
12         name = name;                     //但是这个程序可以正常运行吗?显然是不能的,这个里的
13         age = age;                       //name = name 都是形参变量本身,相当于自己给自己赋值
14     }                                    //这是不行的。
15     public String getInfo(){
16         System.out.println();
17         return null;
18     }
19 }

这时我们就以用this关键字来实现在构造方法中调用类的属性。

 1 public class TextThis {
 2       public static void main(String[] args){
 3           Person p1 = new Person();
 4           p1.getInfo();  
 5       }    
 6 }
 7 
 8 class Person{
 9     String name;
10     int age;
11     public Person(String name, int age){
12         this.name = name;      //name起来么加了this就代表这个属性是类中的属性,后面的name是形参。
13         this.age = age;        //这样就没有问题了
14     }
15     public String getInfo(){
16         System.out.println();
17         return null;
18     }
19 }

2.调用构造方法。

例如

 1 public class TextThis {
 2       public static void main(String[] args){
 3           Person p1 = new Person("hcf", 21);
 4           p1.getInfo();  
 5       }    
 6 }
 7 
 8 class Person{
 9     String name;
10     int age;
11     public Person(){
12         System.out.println("调用了无参的构造方法Person()"); //无参的构造方法被调用就会打印出此语句。
13     }
14     public Person(String name, int age){
15         this();                                         //通过this()调用无参的构造方法。
16         this.name = name;                               //此代码运行完我们会发现,打印出了“调用了无参的构造方法...”
17         this.age = age;                                 /说明我们实现了通过this()调用了构造方法。
18     }
19     public String getInfo(){
20         System.out.println(name +"\n" + age);
21         return null;
22     }
23 }

3.代表当前对象

 1 public class TextThis {
 2       public static void main(String[] args){
 3           Person p1 = new Person();
 4           Person p2 = new Person();
 5           System.out.println(p1); //打印p1的地址
 6           p1.getInfo();           //调用p1中的getInfo()方法,打印当前this的地址
 7           System.out.println(p2); //打印p2的地址
 8           p2.getInfo();           //调用p2中的getInfo()方法,打印当前this的地址。
 9           
10           
11       }    
12 }
13 
14 class Person{
15     public String getInfo(){
16         System.out.println(this);   //this代表当前对象,例如调用p1.getInfo()方法,此时打印的this就是p1
17         return null;                //同理,调用p2.getInfo()方法,打印的this就是p2.
18     }                               //所以该代码运行后,p1和p1.getInfo();输出的结果是相同的,
19 }                                   //p2和P2.getInfo()方法输出的结果也是相同的。

猜你喜欢

转载自www.cnblogs.com/huang-changfan/p/9313391.html