Java连载56-toSting方法和equals方法

167 阅读2分钟

Java

连载
56-toSting
方法和
equals
方法

一、关于

object

中的
toString
​方法:

1.SUN

公司在
Object
类中设计
toString
方法的目的:返回
java
对象的字符串的表示形式。

2.

在现实的开发过程中,
Object
里面的
toString
方法已经不够用了,因为
Object
toString
方法实现​的结果不满意。
Object
中的
toString
方法实现的结果不满意。
Object
中的呢
toString
​方法要被重写了。

3.println

打印的如果是对象的话,那么就会默认打印对象的
toString
方法得到的结果。

4.SUN

公司的默认
toString
方法是这样的

复制代码

public String toString(){

return getClass().getname() + "@" + Interger.toHexString(hashCode());

}

复制代码

object

中的
toString
方法返回:类名
@java
对象的内存地址经过哈希算法得到的
int
类型值在转换为​十六进制。这个输出可以等同看作
java
对象在堆中内存地址​。

5.

举个例子

复制代码

package com.bjpowernode.java_learning;

public class D56_1_ {

public static void main(String[] args) {

Object o1 = new Object();

String s1 = o1.toString();

System.out.println(s1);

Person56 p1 = new Person56("sha",52);

System.out.println(p1);//

我们可以看出来,这里打印出来的不是对象,而是打印的对象的
toString
方法的结果,所以和第
11
行结果相同

String s2 = p1.toString();

System.out.println(s2);

}

}

class Person56 {

String name;

int age;

Person56(String name ,int age){

this.name = name ;

this.age = age;

}

//

重写这个方法,就要按照项目的实际需求进行重新编写

public String toString() {

return "Person[name=" + name + ",age=" + age +"]";

}

}

复制代码

二、关于

Object

中的
equals
方法

1.Object

中的
equals
方法:

复制代码

public boolean equals(o2){

return (this == obj);//

等号两边是引用类型,则比较内存地址,地址相同则返回
true.
反之,则返回
false

}

复制代码

//Object

中的
equals
方法比较的是两个引用的内存地址。
java
对象中的
equals
方法的设计目的在于:判断两个对象是否一样。

2.

举个例子

复制代码

package com.bjpowernode.java_learning;

public class D56_2_equalsMethodAnalysis {

public static void main(String[] args) {

Object o1 = new Object();

Object o2 = new Object();

boolean b1 = o1.equals(o2);

System.out.println(b1);

Star56 s1 = new Star56(100,"xiaoming");

Star56 s2 = new Star56(100,"xiaoming");

System.out.println(s1.equals(s2));

//

这样比较出来的是
false,
因为比较的是两个对象的内存地址,但是这样显然是不符合我们的预期

//

其实我们想要比较的是两个对象里面的内容是不是一致的。于是我们重写

}

}

class Star56{

int id;

String name;

public Star56(int id,String name) {

this.id = id;

this.name = name;

}

}

复制代码

三、源码:

D56_1_toStringMethodAnalysis,java

D56_2_equalsMethodAnalysis.java