this应用总结

1、使用this调用本类中的属性

 1 class Person{
 2     private String name;
 3     private int age;
 4     public Person(String name,int age){
 5         this.name = name;
 6         this.age = age;
 7     }
 8     public String getInfo(){
 9         return name + ";;;;" + age;
10     }
11 }
12 
13 public class ThisDemo02 {
14     public static void main(String[] args) {
15         Person per1 = new Person("zhangsan", 30);
16         System.out.println(per1.getInfo());
17     }
18 
19 }

输出结果为:zhangsan;;;;30

2、使用this调用构造方法

  如果一个类中有多个构造方法,也可以利用this关键字互相调用;

  注意:构造方法是在实例化对象时被自动调用的,也就是说在类中的所有方法中,只有构造方法是被优先调用的,所以使用this调用构造方法必须也只有放在构造方法的第一行。

 1 class Person{
 2     private String name;
 3     private int age;
 4     public Person(){
 5         System.out.println("一个新的Person对象被实例化。");
 6     }
 7     public Person(String name,int age){
 8         this();
 9         this.name = name;
10         this.age = age;
11     }
12     public String getInfo(){
13         return name + ";;;;" + age;
14     }
15 }
16 
17 public class ThisDemo02 {
18     public static void main(String[] args) {
19         Person per1 = new Person("zhangsan", 30);
20         System.out.println(per1.getInfo());
21     }
22 }

输出结果为:

一个新的Person对象被实例化。
zhangsan;;;;30

3、this表示当前对象

 1 class Person{
 2     public String getInfo(){
 3         System.out.println("Person类" + this);
 4         return null;
 5     }
 6 }
 7 
 8 public class ThisDemo02 {
 9     public static void main(String[] args) {
10         Person per1 = new Person();
11         Person per2 = new Person();
12         System.out.println("main方法" + per1);
13         per1.getInfo();
14         System.out.println("....................." );
15         System.out.println("main方法" + per2);
16         per2.getInfo();
17     }
18 }

输出结果为:

main方法thisdemo.Person@1db9742
Person类thisdemo.Person@1db9742
.....................
main方法thisdemo.Person@106d69c
Person类thisdemo.Person@106d69c

4、判断对象是否相等

  方法一、

 1 class Person{
 2     private String name;
 3     private int age;
 4     public  Person(String name,int age){
 5         this.setName(name);
 6         this.setAge(age);
 7     }
 8     public String getName() {
 9         return name;
10     }
11     public void setName(String name) {
12         this.name = name;
13     }
14     public int getAge() {
15         return age;
16     }
17     public void setAge(int age) {
18         this.age = age;
19     }
20     
21 }
22 
23 public class ThisDemo02 {
24     public static void main(String[] args) {
25         Person per1 = new Person("zhangsan",30);
26         Person per2 = new Person("zhangsan",30);
27         if(per1.getName().equals(per2.getName()) && per2.getAge() == per2.getAge()){
28             System.out.println("两个对象相等");
29         }else{
30             System.out.println("两个对象不相等");
31         }    
32     }
33 }

输出结果为:两个对象相等

   方法二

 1 class Person{
 2     private String name;
 3     private int age;
 4     public  Person(String name,int age){
 5         this.setName(name);
 6         this.setAge(age);
 7     }
 8     public String getName() {
 9         return name;
10     }
11     public void setName(String name) {
12         this.name = name;
13     }
14     public int getAge() {
15         return age;
16     }
17     public void setAge(int age) {
18         this.age = age;
19     }
20     public boolean compare(Person per){
21         Person p1 = this;
22         Person p2 = per;
23         
24         if(p1 == p2){
25             return true;
26         }
27         if(p1.name.equals(p2.name) && (p1.age == p2.age)){
28             return true;
29         }else{
30             return false;
31         }    
32         
33     }
34 }
35 
36 public class ThisDemo02 {
37     public static void main(String[] args) {
38         Person per1 = new Person("zhangsan",30);
39         Person per2 = new Person("zhangsan",3);
40         if(per1.compare(per2)){
41             System.out.println("两个对象相等");
42         }else{
43             System.out.println("两个对象不相等.........");
44         }
45     }
46 }

输出结果为:两个对象不相等.........

5、

 1 public class Tester {
 2     int var;
 3     Tester(double var) {
 4         this.var = (int) var;
 5     }
 6     Tester(int var) {
 7         this("hello");
 8     }
 9     Tester(String s) {
10         this();
11         System.out.println(s);
12     }
13     public Tester() {
14         System.out.println("googbay");
15     }
16     public static void main(String[] args) {
17         Tester t = new Tester(5);
18     }
19 }

输出结果为:

googbay
hello

原文地址:https://www.cnblogs.com/XuGuobao/p/7258648.html