Object类

来源:互联网 发布:廊坊管家婆软件 编辑:程序博客网 时间:2024/06/03 06:21


一、概述。

1.java.lang.Object类,是所有类的根父类。

2.Object类仅有一个空参的构造器  public Object(){  }

二、Object类相关方法:

 1.equals()方法和==

Object类的equals():判断两个对象是否是同一个对象,即引用地址是否相同

==:对于基本数据类型,判断两个数据值是否相等,对于引用数据类型,则判断两个对象是否是同一个对象

==用的时候分两种情况:
1基本数据类型:根据基本数据类型的值判断是否相等。相等返回true,反之返回false

注:两端数据类型可以不同在不同的情况下,也可以返回true。

**如一个是int类型,一个是double类型,在比较的时候会自动将int型转化为double型再进行比较

int a=10;float b=10L;char c=10;System.out.println(a==b);//trueSystem.out.println(a==c);//true

 2引用数据类型:比较引用类型变量的地址值是否相等

Person p1=new Person();Person p2=new Person();System.out.println(p1==p2);//false,二者的引用地址不相等p1=p2;System.out.println(p1==p2);//true 

equals()方法:

1)只能处理引用类型变量

2)在Object类,equals()比较的是两个引用变量的地址值是否相等

Person p1=new Person();Person p2=new Person();System.out.println(p1.equals(p2));//false,两个对象的引用地址不一样p1=p2;System.out.println(p1.equals(p2));//true

Object类中的源码:

public boolean equals(Object obj) {        return (this == obj);//实际使用的是==方法判断两个对象的引用地址是否相等   }

**特殊情况:

1)像String 类,包装类,File类,Date类这些重写Object类的equals()方法,比较是两个对象的内容是否相同,即使两个对象不是同一个对象,也会返回true

String str1=new String("aa");String str2=new String("aa");System.out.println(str1==str2);//false,两个对象不是同一个对象System.out.println(str1.equals(str2));//true,两个对象的内容相同

2)字符串所在内存位置解析

String str1 = "AA";String str2 = "AA";String str3 = new String("AA");System.out.println(str1.equals(str2));//trueSystem.out.println(str1.equals(str3));//true

上面两条输出语句都是true,原因是str1,str2,str3都有相同的内存位置所指,如下图所示



上述三条语句执行步骤如下:

1)String str1 = "AA";

在方法区创建开辟一个空间存储字符串“AA”,并在栈内存开辟一个名为“str1”的引用,首地址ox1111(假设的)指向“AA”.

2)String str2 = "AA";

在栈内存建立一个名为“str2”的引用,并指向“AA”.

3)String str3 = new String("AA");

在堆内存开辟一个空间存储对字符串“AA”的引用,并在栈内存开辟一个名叫“str3”的引用指向堆内存

 2.toString()方法

当我们输出一个对象的引用时,会调用toString()方法。

1)Object类的toString()方法源代码

public StringtoString() {        return getClass().getName() +"@" + Integer.toHexString(hashCode());    }

当我们没有重写Object类的toString()方法时,打印的就是对象所在的类,以及对象实体在堆空间的位置

2)一般我们需要重写Object类的toString()方法,将此对象的各个属性值返回。

3)像String类、Date、File类、包装类都重写了toString()方法。