public class Test { public static void main(String[] args) { Me me = new Me("qiudajiang",13); Me me1 = new Me("qiudashuai",11); //判断me和me1是不是同一个类型 Class aClass = me.getClass(); Class bClass = me1.getClass(); if (aClass == bClass){ System.out.println("me和me1类型相同"); } else { System.out.println("不是同一个类型"); } } }
2.hashCode方法:返回该对象的哈希码值(根据对象的地址或数字或字符串使用hash算法计算出来的int类型的数值,一般情况下相同对象返回相同哈希码)
实例代码
public class Test { public static void main(String[] args) { Me me = new Me("qiudajiang",13); Me me1 = new Me("qiudashuai",11);//hashCode()方法 System.out.println(me.hashCode()); System.out.println(me1.hashCode()); Me me2 = me1; System.out.println(me2.hashCode()); } }
3.toString()方法:返回该对象的字符串表示
示例代码
System.out.println(me.toString());
System.out.println(me1.toString());
4.equals()方法:比较两个对象地址是否相同,该方法可重写,改变比较两个对象的内容
实例代码
如要实现若内容相同则返回true,重写equals()方法,代码如下:
public boolean equals(Object obj){ //1.判断两个对象是否是同一个引用 if (this == obj){ return true; } //2.判断obj是否null if (obj == null){ return false; } //3.判断是否是同一个类型 // if (this.getClass() == obj.getClass()){ // } if (obj instanceof Me){ //4.强制类型抓换 Me me = (Me)obj; //5.比较属性 if (this.name.equals(me.getName()) && this.age == ((Me) obj).getAge()){ return true; } } return false; }
测试代码:
public class Test { public static void main(String[] args) { Me me = new Me("qiudajiang",13); Me me1 = new Me("qiudashuai",11); //equals(0方法,判断两个对象地址是否相等 System.out.println(me.equals(me1)); Me me3 = new Me("qdj",10); Me me4 = new Me("qdj",10); System.out.println(me3.equals(me4)); } }
5.finalize()方法:当对象被判定为垃圾对象时,由JVM自动调用。
finalize()方法重写:
@Override protected void finalize() throws Throwable { System.out.println("对象被回收了"); }
测试代码:
public class Test2 { public static void main(String[] args) { // Me a = new Me("aaa",1); // Me b = new Me("bbb",2); // Me c = new Me("ccc",3); // Me d = new Me("ddd",4); // Me e = new Me("eee",5); new Me("aaa",1); new Me("bbb",2); new Me("ccc",3); new Me("ddd",4); new Me("eee",5); //回收垃圾 System.gc(); System.out.println("回收垃圾"); } }