Java学习笔记13(equals()方法;toString()方法)
2024-10-14 18:10:46
equals()方法;
equals方法是Object类中的方法;Object是所有类的祖宗,所以所有类都有equals()方法;
boolean equals(Object obj);
equals方法是比较两个对象是否相等;对象为引用数据类型,比较的是内存地址;
public class Person {
private String name; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} }
public class Test1 {
public static void main(String[] args) {
Person p1=new Person();
p1.setName("张三");
System.out.println(p1);//p1内存地址
Person p2=new Person();
p2.setName("张三");
System.out.println(p2);//p2内存地址boolean b=p1.equals(p2);
System.out.println(b);
}
}//运行结果:com.zs.demo5.Person@15db9742
// com.zs.demo5.Person@6d06d69c
// false
可以看出,虽然p1与p2内用相同,但是内存地址却不同,所以比较结果为false;很多情况下我们是要比较他们的内容是否相同,所以需要重写equals方法;
public class Person {
private String name; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} @Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
} @Override
public boolean equals(Object obj) {//重写equals方法
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Person other = (Person) obj;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
}
public class Test1 {
public static void main(String[] args) {
Person p1=new Person();
p1.setName("张三");
System.out.println(p1);//p1内存地址
Person p2=new Person();
p2.setName("张三");
System.out.println(p2);//p2内存地址boolean b=p1.equals(p2);
System.out.println(b);
}
}
//运行结果:com.zs.demo5.Person@bd308
// com.zs.demo5.Person@1f
// true
toString()方法;输出语句中调用的是toString方法,上例中,输出的是内存地址,当需要看对象中的值的时候,就重写toString()方法;
public class Person {
private String name; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} @Override
public String toString() {//重写toString()方法
return "Person [name=" + name + "]";
} }
public class Test1 {
public static void main(String[] args) {
Person p1=new Person();
p1.setName("张三");
System.out.println(p1);//p1内存地址
Person p2=new Person();
p2.setName("张三");
System.out.println(p2);//p2内存地址
}
}//运行结果:
//Person [name=张三]
//Person [name=张三]
这里添加一个特殊的例子
public class Demo { public static void main(String[] args) {
String s="hello";//String 直接赋值的时候,可以通过==判断是否相等;
String s2="hello";
System.out.println(s==s2);//==判断;返回值为true
String s3=new String("hello");//创建string对象
String s4=new String("hello");
System.out.println(s3==s4);//当string为引用类型变量创建的对象时,s2、s3代表的是对象;比较的是内存地址;结果是false;
System.out.println(s3.equals(s4));//String重写了Object中equals()方法,比较结果为true;
}
}
最新文章
- nuget包重装
- jQuery基础课程
- CCNA网络工程师学习进程(3)常规网络设计模型与基本的网络协议
- 运行java的class文件方法详解
- cl.exe命令方式编译cpp
- php计算时间差
- 一步步学敏捷开发:5. Scrum的4种会议
- 04SpringMvc_映射器_BeanNameUrlHanderMapping
- linux设备树笔记__dts基本概念及语法【转】
- IIS7程序发布后 之 报图表处理程序配置 [c:\TempImageFiles\] 中的临时目录无效
- 百度地图SDk 使用
- BZOJ 1601: [Usaco2008 Oct]灌水( MST )
- 为了解决这个问题:07文本WORD文档超链接、页码成{HYPERLINK&;quot;网站&;quot;}、{PAGE}/{NUMPAGES}
- ZOJ3629 Treasure Hunt IV(找到规律,按公式)
- 【JAVASCRIPT】React + Redux
- amd和cmd区别
- 栈的实现Java
- 提升 Hive Query 执行效率 - Hive LLAP
- vue 之webpack打包工具的使用
- 百度echarts 3.0版本和2.0版本的兼容问题