Java 中equals和toString()方法重写
1,equals方法
(1)什么时候需要重写?
如果希望不同内存但相同内容的两个对象equals时返回true,则需要重写equals
(2)怎么重写?
class A
{ public int i;
pulic A(int i)//构造函数
{this.i=i;
}
public boolean equals(Object obj)//重写equals
{A aa=(A)obj;
if(this.i==aa.i)
return true;
else
return flase;
}
}
public class testEquals{
public staric void main(String[] args){
A aa1=new A(10);
A aa2=new A(10);
System.out.println(aa1.equals(aa2));
}
}
(3)注意问题:
String类系统已经重写equals了,不必再重写;
另外区分equals和==
public class extendsPrivateTest {
public static void main(String[] args){
String str1=new String("China");
String str2=new String("China");
System.out.println(str1.equals(str2));
System.out.println(str1==str2);
String str3="China";
String str4="China";
System.out.println(str3.equals(str4));
System.out.println(str3==str4); } }
str1和str2放在堆里
true//equals已经被系统重写
false
str3和str4是放在数据区,都是指向一个数据
true
true
2.toString方法
(1)为什么需要重写toString?
Object类中的toString方法返回的是类的名字和该对象的哈希码组成的一个字符串,例,A@deced
而我们实际想用System.out.printf(类对象名)输出该对象的toStringd()方法返回的字符串不是上述的时,就必须重写toSring方法。
(2)怎么重写toString方法?
注意:为了实际需要,建议子类重写从父类Object继承的toString()方法
class Point{
private int i,j;
puvlic Point(int i,int j){
this.i=i;
this.j=j;
}
public String toString(){
return "["+i+","+j+"]";
}
}
public class testtoString{
public static void main(String[] args){
Point p1=new Point(1,3);
System.out.println(p1);
}
}
Java 中equals和toString()方法重写的更多相关文章
- java中equals和hashCode方法随笔二
前几天看了篇关于java中equals和hashCode方法的解析 1.Object类中的equals方法和hashCode方法. Object类中的equals和hashCode方法简单明了,所有的 ...
- java中equals与hashCode的重写问题
这几天有一个朋友问我在重写equals和hashCode上出现了问题,最后我帮她解决了问题,同时也整理出来分享给大家 现上Object的equals与HashCode的代码 public boolea ...
- java中equals和hashCode方法的解析
解析Java对象的equals()和hashCode()的使用 前言 在Java语言中,equals()和hashCode()两个函数的使用是紧密配合的,你要是自己设计其中一个,就要设计另外一个.在多 ...
- Java中equals和hashcode的区别?
Java中equals和hashcode方法是在Object对象中的,所以每个对象都有这两个方法,大多数时候我们为了实现特定需求需要重写这两个方法 equals和hashcode方法常用在同一个类中用 ...
- java中equals方法和==的用法
java中equals方法的用法以及==的用法(参考一)equals 方法是 java.lang.Object 类的方法.两种用法说明:(1对于字符串变量来说,使用“==”和“equals()”方法比 ...
- Java中equals与==和comparaTo的区别
一.先说说Java中equals和==的区别: Java中的数据类型,可分为两类: 1.基本数据类型(也叫原始数据类型) 八大基本数据类型 char byte short int long doubl ...
- java中equals和==的区别 (转)
java中equals和==的区别 值类型是存储在内存中的堆栈(以后简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中. ==操作比较的是两个变量的值是否相等,对于引 ...
- Java中Set的contains()方法
Java中Set的contains()方法 -- hashCode与equals方法的约定及重写原则 翻译人员: 铁锚 翻译时间: 2013年11月5日 原文链接: Java hashCode() a ...
- 深入探究Java中equals()和==的区别是什么
目录 相等判断符"==" "=="判断基本类型数据 "=="判断引用类型数据 相等判断方法equals() 思考:为什么要设计equals( ...
随机推荐
- Java自制人机小游戏——————————剪刀、石头、布
package com.hello.test; import java.util.Scanner; public class TestGame { public static void main(St ...
- 在CentOS下安装Redis
Redis比较傲娇,在windows上还没有很好的安装方式,不得已搞了个虚拟机玩玩. 装Redis十分简单,按照下面的几个命令来就行了. 安装命令 wget http://download.redis ...
- SQL判断临时表是否存在
IF EXISTS(select * from tempdb..sysobjects where id=object_id('tempdb..#tb')) BEGIN DROP TABLE #tb E ...
- Scrum Meeting---Two(2015-10-26)
这次会议主要有两个方面 一.讨论项目 经过我们团队的激烈讨论,我们团队决定专注于做二手交易这一块.即将之前决定要做的学习经验交流以及校园交由这两块删除. 二.后两天的任务规划 以下便是我们的任务规划: ...
- Redis基础知识之—— 缓存应用场景
转载原文:http://www.cnblogs.com/jinshengzhi/articles/5225718.html 一.MySql+Memcached架构的问题 Memcached采用客户端- ...
- [转载] LinkedIn架构这十年
原文: http://colobu.com/2015/07/24/brief-history-scaling-linkedin/ 原文: A Brief History of Scaling Link ...
- poj2451Uyuw's Concert(半平面交)
链接 逆时针给出线段,如果模板是顺时针的修改下系数的符号进行平面交即可. #include <iostream> #include<cstdio> #include<cs ...
- iOS开发之 UIScrollView的frame、contentSize、contentOffset和contentInset属性
ios中下拉图片变大效果 http://blog.csdn.net/mad2man/article/details/14169197 IOS中UIScrollView的frame.contentSiz ...
- linux 文件类型 文件权限
linux中常见的文件类型有: “—”表示普通文件 :-rw-r--r-- 1 root root 41727 07-13 02:56 install.log “d”表示目录 :drwxr-xr- ...
- [转]C++中引用(&)的用法和应用实例
from: here 对于习惯使用C进行开发的朋友们,在看到c++中出现的&符号,可能会犯迷糊,因为在C语言中这个符号表示了取地址符,但是在C++中它却有着不同的用途,掌握C++的&符 ...