JAVA重写equals方法
VA问题的引出:今天编写贪吃蛇程序的时候遇到这样一个问题
public class Coordinate {
public int headX, headY;
Coordinate(int headX, int headY) {
this.headX = headX;
this.headY = headY;
}
public boolean equals(Coordinate c) {
if(this.headX == c.headX && this.headY == c.headY) {
return true;
} else {
return false;
}
}
说明:Coordinate 是一个坐标类,重写equals方法的原因是要比较蛇身是否到达了记录下来的蛇头的转弯点,于是自己重写了equals方法,但是发现没有效果,即使x,y的值一样,返回的也是false。
为了进一步熟悉equals方法,于是自己又先写了下面一个验证的程序:
public class TestEquals {
public static void main(String[] args) {
Dog d1 = new Dog(1);
Dog d2 = new Dog(1);
System.out.println(d1 == d2);
System.out.println(d1.equals(d2));
}
}
class Dog {
int weight;
Dog(int weight) {
this.weight = weight;
}
public boolean equals(Dog d) {
if(this.weight == d.weight) {
return true;
} else {
return false;
}
}
}
当然结果是一样的,为了进一步验证,于是就进一步重写了hashCode()方法:
public int hashCode() {
return 0;
}
因为有时候优先比较的是hashCode码。但是结果还是不行。我只好找回原来看过的马士兵老师的视频教程,才发现自己对这个重写很不熟悉,正确的写法应该是:
public class Coordinate {
public int headX, headY;
Coordinate(int headX, int headY) {
this.headX = headX;
this.headY = headY;
}
public int hashCode() {
return 0;
}
public boolean equals(Object obj) {
if(obj == null) {
return false;
&n
相关文档:
Java学习从入门到精通
一、 JDK (Java Development Kit)
JDK是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库(rt.jar)。不论什么Java应用服务器实质都是内置了某个版本的JDK。因此掌握JDK是学好Java的第一步。最主流的J ......
create PROCEDURE pagelist
@tablename nvarchar(50),
@fieldname nvarchar(50)='*',
@pagesize int output,--每页显示记录条数
@currentpage int output,--第几页
@orderid nvarchar(50),--主键排序
@sort int,--排序方式,1表示升序,0表示降序排列
......
一:准备 www.savarese.org download
1. rocksaw-1.0.0-src.tar.gz
2. vserv-tcpip-0.9.2-src.tar.gz
二:编译源文件得到jar包 使用Ant
1. build vserv-tcpip-0.9.2-src
在vserv-tcpip-0.9.2目录下面建一个tests目录,然后在cmd窗口下进入 ......
导入配置jar包 substance.jar
然后在frame的主函数 加入如下代码
JFrame.setDefaultLookAndFeelDecorated(true);
JDialog.setDefaultLookAndFeelDecorated(true);
try {
UIManager.setLookAndFeel(new org.jvnet.substance.skin.SubstanceModerateLookAndFeel()) ; ......
类的初始化和对象初始化是 JVM 管理的类型生命周期中非常重要的两个环节,Google 了一遍网络,有关类装载机制的文章倒是不少,然而类初始化和对象初始化的文章并不多,特别是从字节码和 JVM 层次来分析的文章更是鲜有所见。
本文主要对类和对象初始化全过程进行分析,通过一个实际问题引入,将源代码转换成 JVM 字节码后, ......