Object类是所有类的父类,因此研究Object类很重要。多看源码,多总结。
Object类方法:
一 Object类方法总结
1.Object(),默认构造方法。
2.clone(),创建并返回此对象的一个副本。
3.equals(Object obj),指示某个其他对象是否与此对象“相等”
Object类equals方法源码
指示某个其他对象是否“等于”此对象。
理解Object 是一个类,也是一个对象。 源码中对于Object类来说==和equals是相同的。Object的值是引用(地址),==与equals没有区别。(对于基本类型来说,==是取值,不能用equals) ==比较的是内存地址,"equals"比较的是值
下面这个例子能很好理解==和equals的区别
int num = 15;
int num2 = 15;
String x = "string";/*字符串常量是对象(string),因此可以把字符串常量的引用赋值给一个字符串变量。*/
String y = "string";/*所以x与y具有相同的引用,因而具有相同的实体*/
String z = new String("string");
Object a = new Object();
Object b = new Object();
//1.基本数据类型不属于对象,所以不能调用equals方法,==判断的是数据的值
System.out.println("基本数据类型");
System.out.println(num == num2);
//2.引用类型数据,==取的是引用的值,引用的值就是内存地址,equals方法取比较两个对象的实体是否相同
System.out.println("引用类型数据");
System.out.println(x==y); // true,x和y的引用值是相等的,
System.out.println(x==z); // false
System.out.println(x.equals(y)); // true
System.out.println(x.equals(z)); // true
//3.对于Obejct对象==与equals没有区别,因为Object对象的值就是地址。
System.out.println("Obeject类");
System.out.println(a==b);//false
System.out.println(a.equals(b));//false