• 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

  • 相关阅读:
    基于SpringMVC框架使用ECharts3.0实现堆叠条形图的绘制(下篇)
    使用Poi对EXCLE的导入导出
    使用JXL对EXCLE的导入导出
    在线API
    Java中使用poi导入、导出Excel
    SpringMVC框架下使用jfreechart绘制折线图,柱状图,饼状图
    让div在屏幕中居中(水平居中+垂直居中)的几种方法
    如何使用Canvas及动画实现
    $state、$watch、$scope、$rootScope分别是什么?
    【修真院“善良”系列之三】技术面试的时候该怎么样介绍自己?
  • 原文地址:https://www.cnblogs.com/XuGuobao/p/7258648.html
Copyright © 2020-2023  润新知