<a href="http://www.verejava.com/?id=16992832835152">http://www.verejava.com/?id=16992832835152</a>java
/** 知识点: Object 类 注意: 1. Object 是全部类的根类, 也就是说全部类默认都继承Object 只是省略没有写 2. 当 println()输出一个对象的时候 自动调用了 Object的 toString() 方法 3. Object toString() 方法返回的是 : 类名+@+16进制的哈希码hashCode地址 哈希码 表明对象的内存地址,因此若是比较两个对象的引用相等==必须 哈希码相等 4. Object equals(Object obj) 方法比较的也是引用内部是以==实现的 5. String 对象的equals()方法怎么是比较内容了? 6. 若是要equals()比较两个对象的内容相等咱们须要复写equals 方法 7. 当Object的子类复写了 toString() 方法, println()输出时调用子类复写的 toString() 方法 8. 若是复写了equals()方法,为了保证对象相等哈希码hashcode必须相等的特性, 咱们也要复写hashCode()方法使保持对象的一致性 9. Object 能够接收任意引用数据类型(类,数组,接口) 回顾知识点: 1. 若是一个类定义了带参数的构造方法, 当用不带参数的构造方法调用时,java 虚拟机不会自动生成默认的构造方法,必须得手动显示定义不带参数的默认构造方法。 */ public class TestObject { public static void main(String[] args) { //实例化一个 Student Object p=new Student("李明"); Student p2=(Student)p; Student p3=new Student("张涛"); Student p4=new Student("李明"); System.out.println(p); System.out.println(p==p2); System.out.println(p3); System.out.println(p.equals(p3)); System.out.println(p==p4); System.out.println(p.equals(p4)); System.out.println(p); System.out.println(p4); Person p5=new Student("李明"); System.out.println(p4.equals(p5)); String[] p6=new String[1]; p6[0]="李明"; System.out.println(p4.equals(p6)); } } interface Person { /** 什么人能够说话 */ public void say(); } class Student extends Object implements Person { private String name; public Student() { } public Student(String name) { this.name=name; } public String getName() { return this.name; } public void say() { System.out.println("学生会说英语"); } public boolean equals(Object obj) { //若是地址都相等, 两个对象确定相等 if(this==obj) { return true; } //判断是不是 Student 对象实例 if(obj instanceof Student) { //将obj向下转型成 Student Student p=(Student)obj; //若是内容相等返回true if(this.name.equals(p.getName())) { return true; } } return false; } public int hashCode() { return this.name.hashCode(); } public String toString() { return this.name; } }
<a href="http://www.verejava.com/?id=16992832835152">http://www.verejava.com/?id=16992832835152</a>数组