JAVA SE 学习第三天
来源:互联网 发布:知乎 大提琴 专辑 编辑:程序博客网 时间:2024/06/06 00:59
equals
public boolean equals(Object obj)
指示某个其他对象是否与此对象“相等”。
Object
类的 equals 方法实现对象上差别可能性最大的相等关系;即,对于任何非空引用值 x
和y
,当且仅当 x
和 y
引用同一个对象时,此方法才返回true
(x == y
具有值 true
)。
注意:当此方法被重写时,通常有必要重写 hashCode 方法,以维护hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码。
- 参数:
obj
- 要与之比较的引用对象。- 返回:
- 如果此对象与 obj 参数相同,则返回
true
;否则返回false
。
hashCode
public int hashCode()
- 返回该对象的哈希码值。支持该方法是为哈希表提供一些优点,例如,
java.util.Hashtable
提供的哈希表。hashCode
的常规协定是:- 在 Java 应用程序执行期间,在同一对象上多次调用 hashCode 方法时,必须一致地返回相同的整数,前提是对象上 equals 比较中所用的信息没有被修改。从某一应用程序的一次执行到同一应用程序的另一次执行,该整数无需保持一致。
- 如果根据 equals(Object) 方法,两个对象是相等的,那么在两个对象中的每个对象上调用
hashCode
方法都必须生成相同的整数结果。 - 以下情况不 是必需的:如果根据
equals(java.lang.Object)
方法,两个对象不相等,那么在两个对象中的任一对象上调用hashCode 方法必定会生成不同的整数结果。但是,程序员应该知道,为不相等的对象生成不同整数结果可以提高哈希表的性能。
实际上,由 Object 类定义的 hashCode 方法确实会针对不同的对象返回不同的整数。(这一般是通过将该对象的内部地址转换成一个整数来实现的,但是 JavaTM 编程语言不需要这种实现技巧。)
- 返回:
此对象的一个哈希码值。
- 返回:
JAVA 对象的相等判断确实有点小意思....
public class TestEquals {
public static void main(String[] args) {
Cat c1 = new Cat(1,2,3);
Cat c2 = new Cat(1,2,4);
System.out.println(c1.equals(c2));
}
}
class Cat {
int color;
int height, weight;
public Cat(int color, int height, int weight) {
this.color = color;
this.height = height;
this.weight = weight;
}
public boolean equals(Object obj) {
if(obj == null) {
return false;
} else {
if(obj instanceof Cat) {
Cat c = (Cat)obj;
if(c.color == this.color && c.height == this.height && c.weight == this.weight) {
return true;
}
}
}
return false;
}
}
对象转型:可以使用引用变量 instanceof类名 来判断该引用型变量所指向的对象是否属于该类或者该类的子类。
多态:动态绑定,是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。(非编译期间)
final 1、变量的值不能被改变;2、方法不能被重写;3、类不能被继承
接口你抽象方法和常量值的定义的集合。只有常量和方法的定义而没有实现。
- JAVA SE 学习第三天
- Java学习第三天
- Java学习第三天
- 学习Java第三天
- Java学习第三天
- java学习第三天
- java学习第三天
- JAVA 学习第三天
- 学习JAVA第三天
- Java学习第三天
- JAVA学习第三天
- JAVA学习第三天
- java学习第三天
- java学习第三天
- java学习第三天
- JAVA学习第三天
- Java学习第三天
- 学习Java第三天
- cURL
- Shell遍历文件
- Kinect知识学习
- 单片机控制的红外库
- exit和return的区别
- JAVA SE 学习第三天
- python中的sort方法使用详解
- 怎么删除或者彻底卸载输入法
- CKFinder 2.x 去除广告
- JAVA 2 实用教程 5.3 子类与对象
- MySql学习之简单关键字、检索、通配
- error: C2664: 不能将参数从“const char *”转换为“LPCWSTR” 的解决办法
- 【Android】52、在碎片中模拟返回栈
- Java设计模式—命令模式