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泛型无法向上转型
class Info23<T> {
private T var; // 定义泛型变量
public void setVar(T var) {
this.var = var;
}
public T getVar() {
return this.var;
}
public String toString() { // 直接打印
return this.var.toString();
}
}
public class GenericsDem ......
下面的例子,就是使用ObjectSNMP获取RFC1213-MIB的例子:其中的system和ifTable对象就是对应的SNMP MIB中的system组合interface中的ifTable表。
class TestMibMapping
{
SNMPAPI snmpapi;
SNMPNodeParam nodeParam;
public TestMibMapping()
{
try
{
/**
......
类的初始化和对象初始化是 JVM 管理的类型生命周期中非常重要的两个环节,Google 了一遍网络,有关类装载机制的文章倒是不少,然而类初始化和对象初始化的文章并不多,特别是从字节码和 JVM 层次来分析的文章更是鲜有所见。
本文主要对类和对象初始化全过程进行分析,通过一个实际问题引入,将源代码转换成 JVM 字节码后, ......
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 ......
反射的基石——Class类
Java程序中的各个Java类属于同一类事物,描述这类事物的Java类名就是Class。比如:众多的人可以用一个Person类来表示,而这个类就可以描述人的信息(姓名、年龄、性别等等),而众多的Java类就可以用Class来表示。
Question:Person类代表人,它的实例对象可以是张三、李四, ......