重写toString()和equals()方法(algs4)
2017-08-07 18:55
309 查看
API
public class Date2 |
private final int value; |
public Date2(int m,int d,int y) 构造函数对参数进行移位存储,初试化变量 public int month() public int day() public int year() public String toString() 重写toString()方法 public boolean equals(Object x) 重写equals()方法 |
package date; /*封装日期的数据类型的实现*/ public class Date2 { private final int value; public Date2(int m,int d,int y) { value=(y<<9)+(m<<5)+d; /*一定要有括号 !! value=y*512+m*32+d;*/ } /*移位运算符优先级高于">"低于"—"*/ public int month() { return (value>>5)%16; /*value/512%16*/ } public int day() { return value%32; } public int year() { return value>>9; /*value/512*/ } /* * Object类的 toString 方法返回一个字符串, * 该字符串由类名(对象是该类的一个实例)、at标记符“@”和此对象哈希码的无符号十六进制表示组成。 * 换句话说,该方法返回一个字符串,它的值等于: * public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); } * */ public String toString() { return month()+"/"+day()+"/"+year(); } /*==用于比较引用和比较基本数据类型时具有不同的功能: *比较基本数据类型,如果两个值相同,则结果为true *而在比较引用时,如果引用指向内存中的同一对象,结果为true **/ /*Object类中的equals源码 * public boolean equals(Object obj) * { return (this == obj); } */ /* * equals(),一种等价性关系 * 1、自反性:x.equals(x)返回true; * 2、对称性:若x.equals(y)为true,则y.equals(x)亦为true; * 3、传递性:若x.equals(y)为true且y.equals(z)也为true,则x.equals(z)亦为true; * 4、一致性:x.equals(y)的第一次调用为true,那么x.equals(y)的第二次、第三次、第n次调用也均为true,前提条件是没有修改x也没有修改y; * 5、非空性:x.equals(null)永远返回为false。 * Java为Integer、Double和String等标准数据类型以及一些如File和URL的复杂数据类型提供了实现, * 在处理这些数据类型时,可以直接使用内置的实现。在定义自己的数据类型时需要重载equals()方法 * */ public boolean equals(Object x) { /* * 检查值是否相同 * 1.该对象和参数对象的引用相同,返回true * 2.参数为空(null),根据约定返回false * 3.该对象和参数对象的类不同,返回false * 4.将参数对象的类从Object转换到自定义的数据类型(Date) * 5.任意实例变量的值不相同返回false * */ if(this==x) return true; if(x==null) return false; if(this.getClass()!=x.getClass()) return false; Date2 that=(Date2) x; if(this.day()!=that.day()) return false; if(this.month()!=that.month()) return false; if(this.year()!=that.year()) return false; return true; } }
相关文章推荐
- equals方法和tostring方法重写《从我的微博上转载过来的,创建时间为2015-07-10》
- 44 java toString 方法 重写equals 方法
- equals、hashCode、toString 方法重写
- 说说重写ToString()方法和Equals()方法
- 白菜之重写toString()、equals()方法的注意事项
- 使用commons-lang.jar包以及反射机制实现javabean的equals,hashCode和toString三个方法重写
- Object 开发中常用的重写方法总结toString,equals,hashCode,compareTo
- 22-JAVA面向对象-重写toString()与equals()方法
- 实体类自动重写toString(),equals()和hashCode()方法
- Java之面向对象例子(三) 多态,重写,重载,equals()方法和toString()方法的重写
- 一起学Java_Eclipse开发工具介绍及equals、toString方法的重写equals
- 【Core Java Volume1】重写equals,hashCode,toString方法
- 【原创】关于java对象需要重写equals方法,hashcode方法,toString方法 ,compareto()方法的说明
- 重写 toString() & equals() 方法
- 重写toString以及equals方法
- java equals() 和toString()方法重写
- java上机课代码。。。重写equals方法,toString方法。。。
- java学习之旅40--面向对象_13_继承_Object类用法_toString和equals方法_重写toString
- Object 开发中常用的重写方法总结toString,equals,hashCode,compareTo
- 重写equals和 toString方法