package com.wck.test729;
public class Object1 {
public static void main(String[] args) {
Person person=new Person("tom",19);
Person person1=new Person("tom",19);
System.out.println(person.getClass());
//匿名内部类也是类
A a=new A() {
};
System.out.println(a.getClass());
System.out.println("hashCode:"+person.hashCode());
System.out.println("hashCode:"+person1.hashCode());
System.out.println(person.toString());
System.out.println(person.equals(person1));
String c="abc";
String b=new String("abc");
//为什么==能判断String;String存在常量池会先比较是否有相同的值若有,一个空间指向两个变量。
//所以可以能用==;但是若果new了之后就会开辟新的地址就必须 用equals比较。
System.out.println("abc"==b?true:false);
}
}
//墨默认继承object
class Person{
private String name;
private int age;
//垃圾回收机制自动 system.gc();手动
@Override
protected void finalize() throws Throwable {
// TODO Auto-generated method stub
super.finalize();
}
//相同内容的hash值都相同;但是相同hash值的内容不一定相同。自定义重写hashcode
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + age;
result = prime * result +name.hashCode()+ ((name == null) ? 0 : name.hashCode());
return result;
}
//==运算符是判断对象的地址是否相同,比较对象使用equals。在object类中的equals仍让是比较
//地址,必须重写equals。
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Person other = (Person) obj;
if (age != other.age)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
//没重写之前的tostring默认访问当前字符串表示;分为两部分。
//以@分开前面是类名后面是地址16进制的比如:com.wck.test729.Person@388b2
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}
public Person() {
super();
}
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
interface A{
}
hashcode、equals、toString、finalize等详解
最新推荐文章于 2024-05-21 22:13:42 发布