Java学习笔记13(equals()方法;toString()方法)
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;
}
}
Java学习笔记13(equals()方法;toString()方法)的更多相关文章
- Java SE学习笔记 --->高级类特性 ---> toString() 方法
概述: toString() 方法在面向对象当中十分常见,使用频率很高,和equals() 方法一样,也是Object类中定义的方法. jdk中 源码: java.lang.Object类中ToStr ...
- 【JAVA】笔记(6)--- toString方法;equals方法;finalize方法;package与import;内部类;
toString: 1.每创建一个类时,都要重写 toString 方法,这是敲代码的基本素养: 2.重写规则:简单明了: 3.String 类中也有toString方法(SUN公司写的): equa ...
- java学习笔记(13) —— google GSON 实现json转化方法
1.配置struts.xml <action name="getGsonAction" class="com.test.action.json.GetGsonAct ...
- Java学习笔记-File类的基本方法
要渐渐养成写博客的习惯-----> 前段时间看Mars的java中的I/O流没怎么懂,发现I/O流好难啊.今天重新看一遍其他教学,还有书籍,做些笔记,记录下每天的学习生活. File类的一些方法 ...
- C#学习笔记13:静态方法、方法重载和ref、out参数
静态方法 调用:如果你写的方法和Main()方法在同一个类中,直接写方法名. 如果不在一个类中,需要类名.方法名(); 非静态方法: 调用:创建一个类的对象 对象名.方法名(); Person pe ...
- Java学习笔记6---字符串比较方法compareTo(String str)
方法原型为int compareTo(String str),返回值为int型,参数为字符串类型. 下面是简单示例: /* * compareTo()返回参与比较的两个字符串的ascii码差值 * O ...
- Java学习笔记之equals和Objects.equals
equals 相信大家就知道,就是比较,我们平时也会在自己定义的类中加入自己重写的equals用来比较两个类是否相同,例如这样 public class Person { private String ...
- Java学习笔记--“==”与"equals"
java中的数据类型,可分为两类: 1. 基本数据类型,也称原始数据类型.byte,short,char,int,long,float,double,boolean 他们之间的比较,应用双等号(==) ...
- Java学习笔记-13.创建窗口和程序片
1.init()方法:程序片第一次被创建,初次运行初始化程序片时调用. start()方法:每当程序片进入web浏览器中,并且允许程序片启动他的常规操作时调用(特殊的程序片被stop()关闭):同样在 ...
随机推荐
- 非常不错的地区三级联动,js简单易懂。封装起来了
首先需要引入area.js,然后配置并初始化插件: 例: <!-- 绑定银行卡开始 --> <script src="js/area.js"></sc ...
- Hadoop设置任务执行队列及优先级
Hive设置方法: SET mapreduce.job.queuename=root.up; SET mapreduce.job.priority=HIGH; set tez.queue.name=c ...
- Linux系统(X64)7 安装Oracle11g完整安装图文教程另附基本操作
在linux 7.6 安装 oracle 11g mount 挂载yum源 yum –y sys* gcc* lib* sys* ma* un* gli* elf* bin* com* ...
- SQL Server跨服务器建立视图
create view View_AppCus as select dwmch,zjm from ksoa.dbo.mchk SQL Server跨服务器操作经常需要用到,下面就为你介绍的是SQL S ...
- 22. Generate Parentheses C++回溯法
把左右括号剩余的次数记录下来,传入回溯函数. 判断是否得到结果的条件就是剩余括号数是否都为零. 注意判断左括号是否剩余时,加上left>0的判断条件!否则会memory limited erro ...
- 通过cassandra-cli客户端了解cassandra的内部数据结构
和cassandra数据库交互的方式有两种,一种是通过类似于cassandra-cli命令的thrift api,或者通过cassandra提供的cql(cassandra query lanugag ...
- ECharts柱状图添加点击事件
参考: https://zhuanlan.zhihu.com/p/33050579 https://blog.csdn.net/sophia_xiaoma/article/details/780559 ...
- SQL SERVER版本补丁体系及升级
首先了解几个定义: RTM : 表示 Release to Manufacturing ,这是产品的原始发布版本,当从光盘或 MSDN 下载的默认版本.不过现在下载 SQL Server 版本时,也有 ...
- ActiveMQ queue 分页
分页:即获取部分数据,queue按页从message cursor读取消息,然后分发给consumer. 页大小: public abstract class BaseDestination impl ...
- weblogic启动比一般机器慢原因
weblogic启动慢一般先看setDomainEnv.sh中分配给JVM的内存大小,如果分配足够(没部应用一般也要1G以上)那么再用free -g看本机剩余内存是否充足.如果都没问题还是比一般机器启 ...