this关键字

== 我的疑问:==
当形参名name和类中的名name一样时,
name=name是什么意思
输出的又是哪个name

1.不用this锁出现的问题
指向它,就相当于是它的名字

public class Tis01 {
    public static void main(String[] args) {
        Dog1 dog=new Dog1("xiaoming",2);
        dog.info();
    }
}
class Dog1{
    public String name;
    public int age;
    /*
    构造器的形参要能直接携程属性名,使代码更好
    出现问题:构造器中的name和age指的是形参还是局部变量?
    是局部变量,name就只能是null,age就只能是0
    -->this的出现
     */
    public Dog1(String dname, int dage){
        name=dname;
        age=dage;
    }
    //成员变量,输出属性信息
    public void info(){
        System.out.println(name+" "+age);
    }
}

2.每个对象都有一个this
哪个对象调用,this就是哪个对象
解决之后的构造器代码:
public Dog1(String name, int age){ //this.name是当前对象的属性name this.name=name; //this.age是当前对象的属性age this.age=age; }

hashCode()是将地址转化为整数

public class Tis01 {
    public static void main(String[] args) {
        Dog1 dog=new Dog1("xiaoming",2);
        dog.info();
        System.out.println("dog.hashCode()="+dog.hashCode());
        Dog1 dog1=new Dog1("xiaoli",1);
        dog1.info();
        System.out.println("dog1.hashCode()="+dog1.hashCode());
    }
}
class Dog1{
    public String name;
    public int age;
    /*
    构造器的形参要能直接携程属性名,使代码更好
    出现问题:构造器中的name和age指的是形参还是局部变量?
    是局部变量,name就只能是null,age就只能是0
    -->this的出现
     */
    public Dog1(String name, int age){
        this.name=name;
        this.age=age;
    }
    //成员变量,输出属性信息
    public void info(){
        System.out.println(name+" "+age);
        System.out.println("this.hashCode()="+this.hashCode());
    }
}

posted @   f-52Hertz  阅读(1)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示