Object中方法
概述:
- object中自带方法有(详见文档)
toString()方法
返回该对象的字符串表示
有时候有的项目SUN公司给的方法不满足于项目需求所以需要重写SUN公司中的方法
public class ToString { String name; int age; ToString(String name,int age) { this.name = name; this.age = age; } // 重写SUN公司中的Object.lang中的toString的方法 public String toString() { return "toStrimg" + "[name: " + this.name + ",age: " + this.age + "]"; } } // 测试类 class ToStringTest{ public static void main(String[] args) { ToString toString = new ToString("小王",30); System.out.println(toString.toString());//-->toStrimg[name: 小王,age: 30] } }
equals(Object obj)方法
指示其他某个对象是否与此对象“相等”。
object中的equals方法比较的是内存地址,而在现实的业务逻辑当中,不应该比较内存地址,应该比较内容,所以 Object中的 equals方法也要重写
public class Equals { int id; // 定义一个身份证号 String name; // 定义一个姓名 // constructor public Equals(int id, String name) { this.id = id; this.name = name; } public static void main(String[] args) { Equals equals1 = new Equals(200,"小王"); Equals equals2 = new Equals(200,"小王"); System.out.println(equals1.equals(equals2)); // 字符串之间的比较 String a1= new String("xiaoming"); String a2 = new String("xiaoming"); System.out.println(a1 == a2); // 如果使用“==”比较字符串返回 ---》 false System.out.println(a1.equals(a2)); // equals方法在Object中比较的是两个内存地址是否相同 // 但是在String中的equals在String中比较的是内容是否相同(String继承自Object), // 说明String重写了父类(Object)中的equals方法 } public boolean equals(Object obj) { // 如果当前对象和要比较的对象的内存地址相同,则说明这两个对象是相同的(值也是相同的) if (this == obj) { return true; } // 因为形参中创建的Object中不含有id这个成员变量所以需要父(Object) -----> 子(Equals)向下转型 // Equals默认继承于Object对象 if (obj instanceof Equals) { // 如果这个对象属于Equals这个类 Equals s = (Equals) obj; if (this.id == s.id && this.name.equals(s.name)) { // s.name == this.name (关于字符串类型比较的不是内存地址而是字符串是否相同) return true; } } return false; } }
finalize() 方法
System.gc() 运行垃圾回收器。
finalize()当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。
public class Finalize { // 重写Object中的finalize方法 protected void finalize() throws Throwable { // 创建要给finalize方法 // Finalize p = this; // 注意: 运行GC不一定回收可以将当前地址引用给其他堆内存中 System.out.println("垃圾即将被回收"); } } class test{ public static void main(String[] args) { Finalize finalize1 = new Finalize(); finalize1 = null; // 注意:程序猿只能”建议“GC回收垃圾 System.gc(); } }
hashCode()方法
返回该对象的哈希码值。支持此方法是为了提高哈希表
public class HashCode { public static void main(String[] args) { HashCode hashCode1 = new HashCode(); // 返回一个哈希值 System.out.println(hashCode1.hashCode()); } }