我们来介绍一下 ==和equals()的区别,==是相等,equals()也是相等。这两个词的区别是什么呢?这是找工作时很多面试官的问题。我们来解答一下。首先我们看这么个例子。实践:
public class TestEquals {
public static void main(String[] args) {
MyDate date1 = new MyDate(14, 3, 1976);
MyDate date2 = new MyDate(14, 3, 1976);
if ( date1 = = date2 ) {
System.out.println("date1 is identical to date2");
} else {
System.out.println("date1 is not identical to date2");
}
if ( date1.equals(date2) ) {
System.out.println("date1 is equal to date2");
} else {
System.out.println("date1 is not equal to date2");
}
System.out.println("设 date2 = date1;");
date2 = date1;
if ( date1 == date2 ) {
System.out.println("date1 is identical to date2");
} else {
System.out.println("date1 is not identical to date2");
}
}
}
这个例子中的MyDate类代码如下
public class MyDate {
private int day;
private int month;
private int year;
public MyDate(int day, int month, int year) {
this.day = day;
this.month = month;
this.year = year;
}
public boolean equals(Object o) {
boolean result = false;
if ( (o != null) && (o instanceof MyDate) ) {
MyDate d = (MyDate) o;
if ( (day == d.day) && (month == d.month)
&& (year == d.year) ) {
result = true;
}
}
return result;
}
public int hashCode() {
return (day ^ month ^ year);
}
}
将这两个类放置到同一个文件夹中,只需要编译TestEquals类,就可以将MyDate一同编译了。然后执行java TestEquals查看结果。如图28-1所示
图28-1
也就是说date1 = = date2 虽然都是new MyDate(14, 3, 1976);但是new了两次就是两个对象了,不能==了。==是指引用是否相同。
那么用equals()呢,equals()是Object里的方法,任何对象都继承Object。所以equals()方法也适用于所有的类。为什么这回date1和date2就equals了呢?equals()是指值是否相等。因为都是(14,3,1976)所以相等。
我们把date1赋值给date2,结果当然是==了,都已经把引用赋给它了。还能不==吗
分享到:
相关推荐
### 30种Java技术框架概述 #### 一、Java类加载器架构 Java类加载器是Java虚拟机(JVM)的重要组成部分之一,主要负责在程序运行时将类文件加载到内存中,并对其进行验证、准备和解析等初始化操作。类加载器采用双亲...
Java技术介绍论文.pdf
《SOA与Java:用Java技术实现面向服务》的几位作者都是业界的领袖,ThomasErl更是SOA领域的领军,本书详细的介绍了使用Java技术实现SOA的方法,对于想要学习SOA的Java程序员,以及想要使用Java实现设计的SOA从业者...
Java技术精髓Java技术精髓Java技术精髓Java技术精髓Java技术精髓Java技术精髓Java技术精髓
Java技术资料书籍
Java技术,作为一门广泛使用的编程语言,由James Gosling、Mike Sheridan和Patrick Naughton在1991年6月启动开发。最初,Java被设计用于互动电视,但由于当时数字有线电视行业的发展水平,这一目标并未实现。项目...
java技术教程基础篇java技术教程基础篇
java 技术分析.txt
java技术体系和学习提纲 是我们PM整理的,还不错。
Java技术学习路线图--描述如何一步一步学习Java,每一步该学习什么内容等等
Java平台及应用Java技术的安全问题研究,关于这方面的可以一看
这是本人积累多年的Java技术资料,大部分是在各个项目期间,遇到难题或者技术瓶颈时,查阅网上或者书上的资料保留下来的,当作积累保存,如果大家觉得可以,以后会多多上传,希望这些对于大家能有所帮助;...
java技术栈.xmind
Java技术:Java程序设计及应用.pdf
与java相关的演讲ppt,简单的介绍java的简单知识
Java技术的介绍与如何运用,仅供参考:下来看看吧
java技术学习——基于Java线程池技术实现Knock Knock游戏项目(包含服务端、客户端两部分) java技术学习——基于Java线程池技术实现Knock Knock游戏项目(包含服务端、客户端两部分) java技术学习——基于Java...
JAVA技术合集(本人总结CHM)
Java技术教程.基础篇,介绍java的基础知识
从数据结构,到开发设计模式,再到java基础详细讲述java面试常见问题,让你面试轻松过关,并且懂得面试技巧,增加自身基础知识