Java this 关键字

Java this

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

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

作用

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

访问属性

class ... {
    public static void main (String[] args) {
        Person mike = new Person("Mike", (byte)18, 1.71);
    }
}

class Person {
    String name;
    byte age;
    double 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, 1.72);
        System.out.println(mike.name + mike.hashCode());
        Person tony = new Person("Tony", (byte)30, 1.71);
        System.out.println(tony.name + tony.hashCode());
    }
}

class Person {
    String name;
    byte age;
    double 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, 1.72);
    }
}

class Person {
    String name;
    byte age;
    double 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, 1.71);
    }
}

class Person {
    String name;
    byte age;
    double higth;
    // 构造器
    public Person (String name, byte age, double higth) {
        this.name = name;
        this.age = age;
        this.higth = higth;
    }
    // 无参构造器
    public Person () {
        this("张三", (byte)18, 1.7);
    }
}
posted @   假文艺青年。  阅读(36)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
点击右上角即可分享
微信分享提示