java面向对象(七) 对象比较
来源:互联网 发布:电脑连接多重网络 编辑:程序博客网 时间:2024/06/06 20:37
如果要比较两个对象是否相等,需要依次比较两个对象中的每一个属性的内容.范例如下:
class Person{private String name ;private int age ;public Person(){}public Person(String name, int age){this.name = name ;this.age = age ;}public void setName(String name){this.name = name ;}public void setAge(int age){this.age = age ;}public String getName(){return this.name ;}public int getAge(){return this.age ;}}public class TestDemo{public static void main(String args[]){Person per1 = new Person("张三",20) ;Person per2 = new Person("张三",20) ;if(per1.getName().equals(per2.getName()) && per1.getAge() == per2.getAge()){System.out.println("是同一个对象") ;}else{System.out.println("不是同一个对象") ;}}}运行结果:
以上程序虽然实现了两个对象的比较操作,但是在比较的时候是由主类判断的,这是不合适的,这种比较操作应该是每一个对象自己具备的功能,应该由本类完成.所以,修改后的范例如下:
class Person{private String name ;private int age ;public Person(String name , int age ){this.name = name ;this.age = age ;}public boolean compare(Person per){if(per == null){ //为避免NullPointerException的产生,增加一个null的判断return false ;}if(this == per){ //为了防止浪费性能的情况出现(要判断的属性较多),使用地址判断,因为相同的对象地址相同return true ;}//compare()方法中有两个对象:传入的Person,另外一个是this,进行属性的依次比较if(this.name.equals(per.name) && this.age == per.age){return true ;}return false ;}public void setName(String name){this.name = name ;}public void setAge(int age){this.age = age ;}public String getName(){return this.name ;}public int getAge(){return this.age ;}}public class TestDemo{public static void main(String args[]){Person per1 = new Person("张三",20) ;Person per2 = new Person("张三",20) ;if(per1.compare(per2)){System.out.println("是同一个对象.");}else{System.out.println("不是同一个对象.") ;}}}运行结果:
0 0
- java面向对象(七) 对象比较
- Java面向对象之七-继承
- JAVA基础复习七-面向对象二
- 面向对象基础七
- 面向对象七
- javascript面向对象(七)
- 面向对象(七)
- 七、面向对象
- 葵花宝典 七 面向对象
- (七)面向对象
- java和C++面向对象比较
- PHP与Java面向对象不完全比较
- JAVA(七)java面向对象1-面向对象的概念,类与对象
- 面向对象的比较
- Java面向对象-打印和比较对象-对象生命周期-匿名对象
- 软件工程七:面向对象技术
- 温故知新(七):面向对象(一)
- 七、java的面向对象程序设计(详解equals方法)
- Python变量-下划线,私有变量
- HDU 1509 Windows Message Queue
- Yii 联表查询
- 软件安全性能测试
- Android解Bug的策略和思路
- java面向对象(七) 对象比较
- Hibernate主键生成策略
- 迭代器
- OpenCV图像处理和图像识别常用函数
- java枚举类型的基本用法
- 王立平-- android:layout_weight
- unity3d 理解刚体(Rigidbody)和碰撞体(Collider)以及触发器(Is Trigger),边学边更新
- vxworks编译时常见的问题分析
- POJ 1990 MooFest 树状数组