java 中的对象比较
来源:互联网 发布:策略模式 java示例 编辑:程序博客网 时间:2024/05/22 05:14
- “==”
“==”比较,既可以是数值类型比较也可以是引用类型比较
① 数值类型比较,值等则为true 否则为 false
② 引用类型比较,引用指向同一个对象为true 否则为false;引用类型的比较等号两边的变量被显示申明的类型必须是同种类型或者具有继承关系,即位于继承树的同一个继承分支,否则编译报错;实际比较的时候Java虚拟机会根据实际引用作比较.
Cat cat= new Cat(); Dog dog=new Dog();
System.out.println(cat == dog); //编译报错- equals() 方法
①所有对象隐式继承Object 的equals()方法,object 对象的equals() 方法比较规则:
当参数obj引用的对像与当前对象是同一个引用时返回true否则为false.
②在JDK中有些对象复写了object 的equals()方法,他们的比较规则是:
如果两个对象的类型相同,并且值相同那么返回true
这些对象有基本类型的包装类,File,String,Date 等
- equals() 方法
复写 equals() 方法:
注意:当此方法被重写时,通常有必要重写 hashCode 方法,以维护 hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码。如下:
①当obj1.equals(obj2)为true时,obj1.hashCode() == obj2.hashCode()必须为true
②当obj1.hashCode() == obj2.hashCode()为false时,obj1.equals(obj2)必须为false
class Person { private String id; public Person (String id) { this.id = id; } public String toString(){ return this.id; } public boolean equals(Object obj) { if (obj instanceof Person ) { Person p= (Person ) obj; System.out.println("equal"+ p.id); return (id.equals(p.id)); } return super.equals(obj); } public int hashCode() { Person p= (Person ) this; System.out.println("Hash" + p.id); return id.hashCode(); } }
3.instanceof 操作符
用于判断一个引用类型所引用的对象是否是一个类(或子类)的实例.
obj instanceof ClassName
或
obj instanceof InterfaceName
instanceod左边操作元的显示申明类型与右边类型必须是同种类型或者具有继承关系,即位于继承树的同一个继承分支,否则编译报错;
Cat cat= new Cat(); Dog dog=new Dog();
System.out.println(cat instanceof dog); //编译报错
阅读全文
0 0
- java中的对象比较
- Java中的对象比较
- java 中的对象比较
- java 集合类中的对象如何比较
- php5中的对象比较
- java中的对象比较 == 和equals
- Java比较器给List中的对象排序
- JAVA [ 类对象比较 ]
- Java对象的比较
- Java-对象比较器
- java 对象比较
- Java 对象比较
- Java 对象的比较
- java对象的比较
- java对象比较
- Java对象比较
- Java 对象比较
- 比较两个Java对象
- MySQL创建用户与授权方法
- Dijkstra 算法
- FastJSON序列化特殊字符BUG
- 单点登陆cookie安全详解
- 助力AI淘金:机器学习公开数据集
- java 中的对象比较
- 数据结构课程设计机场管理系统 C++ 最新版本
- vs2010 c++ release dump 文件生成
- ubuntu安装caffe
- markdown的使用
- Linux下线程与进程
- C++ 算法系列之贪婪算法
- 排序问题
- Oracle查询以及修改表空间大小,临时表空间大小,SGA