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 @ 2025-02-09 21:57  f-52Hertz  阅读(9)  评论(0)    收藏  举报