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
相关文档:
package Demo;
// Java泛型数组
public class GenericsDemo30 {
public static void main(String args[]) {
Integer i[] = fun1(1, 2, 3, 4, 5, 6); // 返回泛型数组
fun2(i);
}
public static <T> T[] fun1(T... arg) { // 接收可变参数
return arg; // 返回泛型数组
}
public static <T> ......
总结关键字final的用法。
author: ZJ 07-3-16
Blog: [url]http://zhangjunhd.blog.51cto.com/[/url]
在Java中声明属性、方法和类时,可使用关键字final来修饰。final变量即为常量,只能赋值一次;final方法不能被子类重写;final类不能被继承。
1.final成员
声明 final 字段有助于优化器作出更好的优化决定,因为如果 ......
基本操作
一、创建文件
拟生成一个名为“测试数据.xls”的Excel文件,其中第一个工作表被命名为“第一页”,大致效果如下:
/*
* Created on Dec 30, 2007
*
* To change the template for this generated file go to
* Window>Preferences>Java>Code Generation>Cod ......
Java数据类型
Hibernate数据类型
标准SQL数据类型
byte
byte
TINYINT
short
short
SMALLINT
int
integer
INGEGER
long
long
BIGINT
float
float
FLOAT
double
double
DOUBLE
java.math.BigDecimal
big_decimal
NUMERIC
char, java.lang.Character
character
CHAR(1)
boolean, java.lang.Boole ......
在已经排好序的序列中查找待插入的元素的插入位置,并将待插入元素插入到有序列表中的过程。
将数组分成两部分,初始化时,前部分数组为只有第一个元素,用来存储已排序元素,我们这里叫 arr1 ;后部分数组的元素为除第一个元素的所有元素,为待排序或待插入元素,我们这里叫 arr2 。
排序时使用二层循环:第一 ......