Object类的toString() 方法和equals()方法
程序员文章站
2022-03-18 11:32:29
...
Object类的toString()方法显示的不直观,建议子类重写。
Object类的equals比较的是地址值,如果要比较内容,建议子类重写。而作为Object的子类String已经重写类toString()的方法,所以再其他子类重写的时候可以直接调用String中的toString()方法或者是模仿。
以下内容为转载:https://www.cnblogs.com/lh-cml/p/11058993.html
toString()和equals()方法详解
一:toString()方法
Object中toString方法
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
返回的值: 类名aaa@qq.com+十六位的hashCode值
通常使用的toString()方法是利用重写覆盖Object中的toString()方法,自定义toString方法。
复制代码
public class Animal {
String name;
int age;
//重写的toString()方法,返回的是name和age
@Override
public String toString() {
return "Animal{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
复制代码
二:equals()方法
Java中 “==” 比较:如果是基本数据类型比较的是值,如果是引用数据类型比较的是地址。
(1)Object中equals方法:
public boolean equals(Object obj) {
return (this == obj);
}
(2)String中重写的equals方法:(比较两字符串的值是否相等)
复制代码
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
//instanceof表示判断左边的对象是否是右边类或子类的的对象
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = value.length;
if (n == anotherString.value.length) {
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n-- != 0) {
if (v1[i] != v2[i])
return false;
i++;
}
return true;
}
}
return false;
}
复制代码
(3)自定义比较规则,重写equals方法。
package com.lwh.test02;
public class Student {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Student other = (Student) obj;
if (age != other.age)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
}
name.equals(other.name) 就是String的equals()方法。
而String的equals()内容就是如下
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = count;
if (n == anotherString.count) {
char v1[] = value;
char v2[] = anotherString.value;
int i = offset;
int j = anotherString.offset;
while (n-- != 0) {
if (v1[i++] != v2[j++])
return false;
}
return true;
}
}
return false;
}
上一篇: Object类之toString方法和equals方法
下一篇: 浮动静态路由配置
推荐阅读
-
C#使用Object类实现栈的方法详解
-
Javascript中类式继承和原型式继承的实现方法和区别之处
-
[python] 在 python2和3中关于类继承的 super方法简要说明
-
PHP取得一个类的属性和方法的实现代码
-
详解Javascript百度地图接口开发文档中的类和方法
-
==运算符和equals()方法的区别
-
PowerShell中调用.NET对象的静态方法、静态属性和类方法、类属性例子
-
jdk基础之Object类hashCode()和equal()方法
-
Python自定义一个数组类,支持数组之间的四则运算和其他常见方法
-
实例解析JS布尔对象的toString()方法和valueOf()方法