zoukankan      html  css  js  c++  java
  • 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 +"
    " + 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()方法输出的结果也是相同的。
  • 相关阅读:
    动态图片 Movie android-gif-drawable GifView
    X5SDK 腾讯浏览器内核
    AS 自动生成选择器 SelectorChapek
    Genymotion 模拟器 VirtualBox
    360加固保 安全防护 多渠道打包
    Thread 如何安全结束一个线程 MD
    面试题 HashMap 数据结构 实现原理
    nGrinder3.4 性能测试框架安装
    java内存泄漏的定位与分析
    JVM总结-内存监视手段及各区域内存溢出解决
  • 原文地址:https://www.cnblogs.com/huang-changfan/p/9313391.html
Copyright © 2011-2022 走看看