易截截图软件、单文件、免安装、纯绿色、仅160KB

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 5.0 泛型之 Java泛型数组

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> ......

Java关键字介绍之final

总结关键字final的用法。
author: ZJ 07-3-16
Blog: [url]http://zhangjunhd.blog.51cto.com/[/url]
在Java中声明属性、方法和类时,可使用关键字final来修饰。final变量即为常量,只能赋值一次;final方法不能被子类重写;final类不能被继承。
1.final成员
声明 final 字段有助于优化器作出更好的优化决定,因为如果 ......

深入java反射

反射的基石——Class类
Java程序中的各个Java类属于同一类事物,描述这类事物的Java类名就是Class。比如:众多的人可以用一个Person类来表示,而这个类就可以描述人的信息(姓名、年龄、性别等等),而众多的Java类就可以用Class来表示。
   Question:Person类代表人,它的实例对象可以是张三、李四, ......

java线程池

          线程池主要是用来 处理多个请求时,减少资源消耗,提高应用性能。
        下面的代码是来自于 孙卫琴:<<Java网络编程精解>> 中线程池实现源码, 代码结构简单清晰,对于理解线程池,wait(),notify()方法都有有很 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号