Obiect

来源:互联网 发布:js时间段选择控件 编辑:程序博客网 时间:2024/06/05 14:52
Object类是所有类的父类,如果一个类没有使用extends关键字明确标识继承另外一个类,那么这个类默认继承Object类,且Object类中的方法适合所有子类
1.toString()方法
在Object类里面定义toString()方法的时候返回的对象的哈希code码(对象地址字符串)
如果我们在代码里面直接输出一个对象,会输出这个对象在内存中的地址,我们把它称为哈希码,哈希码是通过哈希算法生成的一个字符串用来唯一区分对象的

可以通过重写toString()方法表示出对象的属性

(我们经常在输出对象的时候希望得到子类的属性值,那么我们就要重写从父类继承来的toString()方法,eclipse中右键菜单栏-源码source-生成generate toString(),他就会根据我们对象的属性帮我们生成一个toString()方法来输出属性值)

getClass()可以得到一个类对象,当我们new的时候得到的是一个类的对象如果对象调用getClass()方法我们得到的是类对象,类对象描述的是类的代码信息(类的代码信息:这个类有哪些属性\它是什么类型\变量名是什么\它有哪些方法\方法名是什么\方法里面的代码是什么;而类的对象关注的是对象的属性值的信息或者说这个对象的数据信息)


2.equals()----返回值是布尔类型
比较的是对象的引用是否指向同一块内存地址-------对象实例化时,即给对象分配内存空间
使用方法如:dog.equals(dog2);
如果是两个对象,但想判断两个对象的属性是否相同,则重写equals()方法
1.地址是否相同----if (this == obj)
2.对象是否为空----if (obj == null)
3.getClass()可以得到类对象,判断类型是否一样-----if (getClass() != obj.getClass())
new出来的是类的对象,关注的是类的属性的具体的数据;
类对象是类的代码信息,关注的是类有什么属性和方法
4.属性值是否一样----if (age != other.age)


equals 和 == 
基本数据类型直接比较值,用==
引用数据类型之间比较对象的引用是否相同一般用equals,是指比较引用是否指向同一地址
若 ==用于比较引用数据类型,还是比较对象的引用是否相同
重写equals方法可以直接比较对象的属性值


Java之Object类 II
equals()方法,比较的是对象的引用是不是指向同一块内存
再次理解一下这句代码 Dog dog = new Dog(); 是创建了一块内存这块内存的地址赋给了dog,这和之前的C/C++里面的指针/引用的概念是一样的。
也就是说equals()方法比较的是不是同一个内存块,这种相等的含义是同一个。这和生活中的相等含义是不一样的,生活中的相等表示的是属性的值是不是相等。比如说,我们买的手机时一模一样的,其暗含的含义是两部手机的牌子,型号、参数完全一样,就像是

0 0
原创粉丝点击