zoukankan      html  css  js  c++  java
  • 【Java编程基础】Java中this关键字的使用

    1.第一种用法:通过this关键字去访问类的成员变量

    2.第二种用法:通过this关键字调用成员方法

    3.第三种用法:在其中一个构造方法中,使用this()的形式来调用其他的构造方法。

    4.第四种用法:比较两个对象是否相等。

    简单示例:

    package cn.york.thisTest;
    
    public class Person {
         //属性
         private String name;
         private int age;
         private String sex;
        
         //方法
         public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
        public String getSex() {
            return sex;
        }
        public void setSex(String sex) {
            this.sex = sex;
        }
        //构造方法,初始化类的对象
        public Person()
        {
            //this(name, age, sex);//注意事项3:同一个类的两个构造方法不能互相调用
            System.out.println("我是无参构造方法!");
        }
        public Person(String name,int age,String sex)
        {
            //3.在其中一个构造方法中,使用this()的形式来调用其他的构造方法。
            this();
            //1.通过this关键字去访问类的成员变量
            this.name=name;
            this.age=age;
            this.sex = sex;
            //this(); //注意事项2:使用this()调用构造方法,必须放在该构造方法的第一行,而且只能调用一次。
            System.out.println("我是有参构造方法!");
        }
            
        public void Speak()
        {
            //this();//注意事项1:this()方式只能在构造方法中使用,不能在其他成员变量中去使用。
            //2.通过this关键字调用成员方法
            System.out.println("我的名字叫"+this.getName());
        }
        
        public void printInfo()
        {
            //4.表示当前正在调用该方法的对象
            System.out.println("Person类--》"+this);
        }
        
         public boolean compare(Person per){
              //调用此方法时里面存在两个对象:当前对象、传入的对象
               Person p1 = this ; // 当前的对象,就表示per1
               Person p2 = per ; // 传递进来的对象,就表示per2
              if(p1==p2){ // 判断是不是同一个对象,用地址比较
               return true ;
              }
              // 之后分别判断每一个属性是否相等
              if(p1.name.equals(p2.name)&&p1.age==p2.age&&p1.sex.equals(p2.sex)){
               return true ; // 两个对象相等
              }else{
               return false ; // 两个对象不相等
              }
             }
        
        
        public static void main(String arg[])
        {
            Person p1= new Person();
            Person p2 = new Person("YorkShare",35,"男");
            Person p3 = new Person("YorkShare",35,"男");
            //调用成员方法
            p2.Speak();
            //打印对象的信息
            p1.printInfo();
            p2.printInfo();
            //比较两个对象
            if(p2.compare(p3))
            {
                System.out.println("两个对象相等!") ;
            }
            else {
                System.out.println("两个对象不相等!") ;
            }
        }  
    }

    运行结果:

    注意:

    (1)this()方式只能在构造方法中使用,不能在其他成员方法中去使用。

    (2)使用this()调用构造方法,必须放在该构造方法的第一行,而且只能调用一次。

    (3)同一个类的两个构造方法不能互相调用。

    参考文章:

    https://www.jb51.net/article/121103.htm

    https://www.cnblogs.com/attentle/p/8745404.html

    转载文章链接已标明,如有侵权请告知。文章仅作为知识记忆所用,如有错误,敬请指正。
  • 相关阅读:
    操作系统--精髓与设计原理(第八版)第六章复习题答案
    操作系统--精髓与设计原理(第八版)第五章复习题答案
    操作系统--精髓与设计原理(第八版)第四章复习题答案
    操作系统--精髓与设计原理(第八版)第三章复习题答案
    操作系统--精髓与设计原理(第八版)第二章复习题答案
    操作系统--精髓与设计原理(第八版)第一章复习题答案
    跟着webbench学习C++网络编程(二)
    跟着webbench学C++网络编程(一)
    每日一问11:C++程序的内存格局
    Redis系列三:redis支持的数据类型
  • 原文地址:https://www.cnblogs.com/YorkZhangYang/p/14042465.html
Copyright © 2011-2022 走看看