Object

来源:互联网 发布:linux daemon 进程 编辑:程序博客网 时间:2024/05/01 23:08

Object

类 Object 是类层次结构的根类。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。

 Object类中的方法

String toString() 返回该对象的字符串表示。

打印对象时,会默认调用toString方法

源代码:returngetClass().getName() + '@' + Integer.toHexString(hashCode())

code:

package cn.river.object;class Person{}public class ObjectDemo {         publicstatic void main(String[] args) {                   Personp = new Person();                   System.out.println(p);//cn.river.object.Person@811c88                   System.out.println(p.toString());//cn.river.object.Person@811c88         }}


覆盖toString方法,目的:就是为了展示类中成员变量的值

package cn.river.object;class Person{         Stringname;         intage;         publicPerson(String name,int age){                   this.name=name;                   this.age= age;         }         //覆盖toString方法         publicString toString(){                   returnname+age;         }}public class ObjectDemo {          publicstatic void main(String[] args) {                   Personp = new Person("river",22);                   System.out.println(p);// river22System.out.println(p.toString());//river22         }}


Object类中的方法 public booleanequals(Object obj){}

         源代码

         publicboolean equals(Object obj){

         return (this==obj);   //比较的是内存地址值

}

code:

package cn.river.object;public class ObjectDemo2 {         publicstatic void main(String[] args) {                   Personp = new Person("river",22);                   Personp1 = new Person("river",22);                   System.out.println(p.equals(p1));         }}class Person{         Stringname;         intage;         publicPerson(String name, int age){                   this.name=name;                   this.age=age;         }}


覆盖equals方法:目的建立自己的比较方式,比较对象中的其他内容

code:

package cn.river.object;public class ObjectDemo2 {         publicstatic void main(String[] args) {                   Personp = new Person("river",22);                   Personp1 = new Person("river",22);                   System.out.println(p.equals(p1));         }}class Person{         Stringname;         intage;         publicPerson(String name, int age){                   this.name=name;                   this.age=age;         }//覆盖equals方法         publicboolean equals(Object obj){                   if(this==obj)                            returntrue;                   if(objinstanceof Person) {                            Personp1 = (Person) obj;                            if(p1.age==this.age&& p1.name==this.name){                                     returntrue;                            }                   }                   returnfalse;         }}


== 与 equals 方法的区别:

|-- ==是比较运算符,equals是方法,==用于比较基本数据类型的数值是否相等,在引用类型数据时,比较的是内存中引用地址是否相等

|-- equals 是Object类中的方法,默认比较的也是地址,但是我们可以覆盖equals方法,建立自己的比较形式

 

void finalize()对象被垃圾回收的时候,JVM自动调用对象的finalize()方法

finalize final finally 有什么区别?

finalize是回收垃圾是JVM自动调用对象的方法

final 是一个最终的修饰符

finally 是配合异常使用时最终要运行的代码