• java中this关键字的作用


    1、this调用当前属性:其主要作用是当需要给类中的数据进行初始化时,可以通过this来进行赋值,而不用随便定义一个变量来进行赋值,更有利于代码的阅读与理解

      如:

    class Book{//定义书的类
        private String name;//书本名字
        private int price;//书本价格
        public Book(String name,int price){ //使用this对类的数据进行初始化
            this.name = name;        
         this.price = price; } /*public Book(String n,int p){ //若不使用this关键字只能这样进行赋值,不利于将变量与属性统一起来 name = n; price = p; }*/ public String getInfo(){ return "书籍:" + name + ",价格:" + price; } } public class ThisDemo{ public static void main(String args[]){ System.out.printIn(new Book("Java",89.9).getInfo()) } }

    2、this调用方法(普通方法、构造方法)

      (1)普通方法:

     1 class Book{//定义书的类
     2     private String name;//书本名字
     3     private int price;//书本价格
     4     public Book(String name,int price){//使用this对类的数据进行初始化
     5         this.name = name; 6         this.price = price;
     7         this.print();//调用本类普通方法,虽然可以不用使用this也可以进行本类普通方法的调用,但是好的习惯最好应该加上,目的是可以区分方法的定义来源
     8     }
     9     public String getInfo(){
    10         return "书籍:" + name + ",价格:" + price;
    11     }
    12     public void print(){
    13         System.out.printIn("***********");
    14     }
    15 }
    16 public class ThisDemo{
    17     public static void main(String args[]){
    18         System.out.printIn(new Book("Java",89.9).getInfo())
    19     }
    20 }

      (2)构造方法:普通方法与构造方法的区别是构造方法在创建后只能掉用一次,用来初始化数据,而普通方法在创建后可以调用多次。

         当需要使用构造方法输出同一重复内容时,若不使用this关键字,则只能使用如下代码:

    class Book{//定义书的类
        private String name;//书本名字
        private int price;//书本价格
        public Book(){//无参构造
            System.out.printIn("*************");
        }
        public Book(String name){//一参构造
            System.out.printIn("*************");
            this.name = name;
        }
        public Book(String name,int price){//二参构造
            System.out.printIn("*************");
            this.name = name;
            this.price = price;
            }
        public String getInfo(){
            return "书籍:" + name + ",价格:" + price;
        }
    }
    public class ThisDemo{
        public static void main(String args[]){
            System.out.printIn(new Book("Java",89.9).getInfo())
        }
    }

       显然,这样大大浪费了代码行数,而应该使用this进行构造方法的调用,方法如下:

     1 class Book{//定义书的类
     2     private String name;//书本名字
     3     private int price;//书本价格
     4     public Book(){//无参构造
     5         System.out.printIn("*************");
     6     }
     7     public Book(String name){//一参构造
     8         this();//调用本类中的无参构造
     9         this.name = name;
    10     }
    11     public Book(String name,int price){//二参构造
    12         this(name);//调用本类中的一参构造
    13         this.price = price;
    14         }
    15     public String getInfo(){
    16         return "书籍:" + name + ",价格:" + price;
    17     }  
    18 
    19 }
    20 public class ThisDemo{
    21     public static void main(String args[]){
    22         System.out.printIn(new Book("Java",89.9).getInfo())
    23     }
    24 }

      注:对this调用必须是构造方法中的第一个语句,否则便会出错,当然也不能在普通方法中调用构造方法。

        最为重要的是,使用this调用不能形成循环,即不能形成递归调用而没有出口。

    3、this表示当前方法

    class Book{
        
        public void fun(){
            System.out.printIn("FUN方法"+this);
        }
        }
    }
    public class ThisDemo{
        public static void main(String args[]){
            Book b1 = new Book();
            System.out.printIn("MAIN方法"+b1);
            b1.fun();//有b1调用fun方法(this = b1)
            //两个输出结果的地址一样,代表着此时this代表着b1
            System.out.printIn("*************")
            Book b2 = new Book();
            System.out.printIn("MAIN方法"+b2);
            b2.fun();//此时输出结果和b2一样
        }
    }

      在整个过程中,this的定义没有变,只要有某一个对象调用本类中的方法,此时this就表示当前执行的对象。

  • 相关阅读:
    XML学习教程
    JSON 的含义?
    局域网共享问题全方位解决
    VMware虚拟化培训手册
    信息化建设中的IT规划精要
    洛谷1265 公路修建
    洛谷1144 最短路计数
    NOI题库05 派
    NOI题库7624 山区建小学(162:Post Office / IOI2000 POST OFFICE [input] )
    vijosP1014 旅行商简化版
  • 原文地址:https://www.cnblogs.com/attentle/p/8745404.html
Copyright © 2020-2023  润新知