Java this 关键字

Java this

关键字 this 指对象本身,只能在类中使用。

Python基础的理解为self就行了。

作用

  1. 可以访问本类的属性、方法、构造器
  2. 区分当前类属性和局部变量

访问属性

class ... {     public static void main (String[] args) {         Person mike = new Person(Mike, (byte)18, 85.6);     } }  class Person {     this.name;     this.age;     this.higth;     // 构造器     public Person (String name, byte age, double higth) {         this.name = name;         this.age = age;         this.higth = higth;     } } 

this指向的就是调用它的对象的内存地址

在构造器中使用this.name = name 你可以理解为mike.name = name

变量名mike也是指向对象的内存地址,而this是哪个对象调用它,它就指向那个对象的内存地址,也可以说this就是对象本身。

查看哈希Code值

每个对象的hashCode值,都是唯一的,如果hashCode值一样,说明是同一个对象

现在利用hashCode值确认this是否是指向当前对象的

class ... {     public static void main (String[] args) {         Person mike = new Person(Mike, (byte)18, 85.6);         System.out.println(mike.name + mike.hashCode());         Person tony = new Person(Tony, (byte)30, 70.2);         System.out.println(tony.name + tony.hashCode());     } }  class Person {     this.name;     this.age;     this.higth;     // 构造器     public Person (String name, byte age, double higth) {         this.name = name;         this.age = age;         this.higth = higth;         System.out.println(this.name + this.hashCode());     } } 

访问方法

语法this.方法名 (形参列表);

class ... {     public static void main (String[] args) {         Person mike = new Person(Mike, (byte)18, 85.6);     } }  class Person {     this.name;     this.age;     this.higth;     // 构造器     public Person (String name, byte age, double higth) {         this.name = name;         this.age = age;         this.higth = higth;     }     // 走路方法     public void walk () {              }     // 爬山方法     public void climb () {         // 调用走路方法         this.walk();     } } 

访问构造器

语法this(参数列表)

访问构造器的语句只能在构造器中使用,即在一个构造器中访问另外一个构造器,且只能放在这个构造器中的第一条语句

class ... {     public static void main (String[] args) {         Person mike = new Person(Mike, (byte)18, 85.6);     } }  class Person {     this.name;     this.age;     this.higth;     // 构造器     public Person (String name, byte age, double higth) {         this.name = name;         this.age = age;         this.higth = higth;     }     // 无参构造器     public Person () {         this(张三, (byte)18, 60);     } }