宝剑锋从磨砺出,梅花香自苦寒来。这篇文章主要讲述#yyds干货盘点# 面试高频题:Object类常用方法相关的知识,希望能为你提供帮助。
Object常用方法java面试经常会出现的一道题目,Object的常用方法。下面给大家整理一下。
object常用方法有:toString()、equals()、hashCode()、clone()等。
toString
默认输出对象地址。
public class Person
private int age;
private String name;
public Person(int age, String name)
this.age = age;
this.name = name;
public static void main(String[] args)
System.out.println(new Person(18, "程序员大彬").toString());
//output
//me.tyson.java.core.Person@4554617c
可以重写toString方法,按照重写逻辑输出对象值。
public class Person
private int age;
private String name;
public Person(int age, String name)
this.age = age;
this.name = name;
@Override
public String toString()
return name + ":" + age;
public static void main(String[] args)
System.out.println(new Person(18, "程序员大彬").toString());
//output
//程序员大彬:18
equals
默认比较两个引用变量是否指向同一个对象(内存地址)。
public class Person
private int age;
private String name;
public Person(int age, String name)
this.age = age;
this.name = name;
public static void main(String[] args)
String name = "程序员大彬";
Person p1 = new Person(18, name);
Person p2 = new Person(18, name);
System.out.println(p1.equals(p2));
//output
//false
可以重写equals方法,按照age和name是否相等来判断:
public class Person
private int age;
private String name;
public Person(int age, String name)
this.age = age;
this.name = name;
@Override
public boolean equals(Object o)
if (o instanceof Person)
Person p = (Person) o;
return age == p.age & & name.equals(p.name);
return false;
public static void main(String[] args)
String name = "程序员大彬";
Person p1 = new Person(18, name);
Person p2 = new Person(18, name);
System.out.println(p1.equals(p2));
//output
//true
hashCode
将与对象相关的信息映射成一个哈希值,默认的实现hashCode值是根据内存地址换算出来。
public class Cat
public static void main(String[] args)
System.out.println(new Cat().hashCode());
//out
//1349277854
clone
java赋值是复制对象引用,如果我们想要得到一个对象的副本,使用赋值操作是无法达到目的的。Object对象有个clone()方法,实现了对
象中各个属性的复制,但它的可见范围是protected的。
protected native Object clone() throws CloneNotSupportedException;
所以实体类使用克隆的前提是:
- 实现Cloneable接口,这是一个标记接口,自身没有方法,这应该是一种约定。调用clone方法时,会判断有没有实现Cloneable接口,没有实现Cloneable的话会抛异常CloneNotSupportedException。
- 覆盖clone()方法,可见性提升为public。
public class Cat implements Cloneable
private String name;
@Override
protected Object clone() throws CloneNotSupportedException
return super.clone();
public static void main(String[] args) throws CloneNotSupportedException
Cat c = new Cat();
c.name = "程序员大彬";
Cat cloneCat = (Cat) c.clone();
c.name = "大彬";
System.out.println(cloneCat.name);
//output
//程序员大彬
下面介绍下浅拷贝和深拷贝。
浅拷贝【#yyds干货盘点# 面试高频题(Object类常用方法)】拷?对象和原始对象的引?类型引用同?个对象。
以下例子,Cat对象里面有个Person对象,调用clone之后,克隆对象和原对象的Person引用的是同一个对象,这就是浅拷贝。
public class Cat implements Cloneable
private String name;
private Person owner;
@Override
protected Object clone() throws CloneNotSupportedException
return super.clone();
public static void main(String[] args) throws CloneNotSupportedException
Cat c = new Cat();
推荐阅读
- vue3.0的生命周期和父子传值,一学就会#yyds干货盘点#
- 前缀和与差分
- #yyds干货盘点# 解决华为机试(称砝码)
- FunTester测试框架Redis性能测试实践#yyds干货盘点#
- #yyds干货盘点#java导出excel文件
- 谷歌通用搜索排名的工作原理大揭秘(搜索远不止竞价排名)
- Hudi Bucket Index 在字节跳动的设计与实践
- 基于 Kafka 的实时数仓在搜索的实践应用
- #yyds干货盘点# 升级爸爸程序员了(用Python给自己的宝贝下载200+绘本动画吧!)