1 Object类的概述
- 类Object是类层次结构的根类。每个类都使用
Object 作为超类。所有对象(包括数组)都实现这个类的方法。
- Object类是不断抽取而来的。
2 equals()方法
public boolean equals(Object obj)
public boolean equals(Object obj) {
return (this == obj);
}
package java011;
/**
* 2017/9/18
* 说明:
*/
public class Person {
private String name;
private int age;
public Person(){
}
public Person(String name,int age){
this.name = name;
this.age = age;
}
}
package java011;
/**
* 2017/9/18
* 说明:
*/
public class Test {
public static void main(String[] args) {
Person p = new Person("张三",15);
Person p2 = new Person("张三",15);
System.out.println(p == p2);//false
System.out.println(p.equals(p2));//false
}
}
package java011;
/**
* 2017/9/18
* 说明:
*/
public class Person {
private String name;
private int age;
public Person(){
}
public Person(String name,int age){
this.name = name;
this.age = age;
}
@Override
public boolean equals(Object obj) {
if(obj == null){
return false;
}
if(obj instanceof Person){
Person p = (Person) obj;
if(!this.name.equals(p.name) && this.age!=p.age ){
return false;
}
}
return true;
}
}
package java011;
/**
* 2017/9/18
* 说明:
*/
public class Test {
public static void main(String[] args) {
Person p = new Person("张三",15);
Person p2 = new Person("张三",15);
System.out.println(p == p2);//false
System.out.println(p.equals(p2));//true
}
}
3 hashcode()方法
public native int hashCode();
package java011;
/**
* 2017/9/18
* 说明:
*/
public class Person {
private String name;
private int age;
public Person(){
}
public Person(String name,int age){
this.name = name;
this.age = age;
}
@Override
public boolean equals(Object obj) {
if(obj == null){
return false;
}
if(obj instanceof Person){
Person p = (Person) obj;
if(!this.name.equals(p.name) && this.age!=p.age ){
return false;
}
}
return true;
}
}
package java011;
/**
* 2017/9/18
* 说明:
*/
public class Test {
public static void main(String[] args) {
Person p = new Person("张三",15);
Person p2 = new Person("张三",15);
System.out.println(p);//java011.Person@1b6d3586
System.out.println(p.hashCode());//460141958
System.out.println(Integer.toHexString(p.hashCode()));//1b6d3586
}
}
4 getClass()方法
public final Class<?> getClass()
public final native Class<?> getClass();
package java011;
/**
* 2017/9/18
* 说明:
*/
public class Person {
private String name;
private int age;
public Person(){
}
public Person(String name,int age){
this.name = name;
this.age = age;
}
@Override
public boolean equals(Object obj) {
if(obj == null){
return false;
}
if(obj instanceof Person){
Person p = (Person) obj;
if(!this.name.equals(p.name) && this.age!=p.age ){
return false;
}
}
return true;
}
}
package java011;
/**
* 2017/9/18
* 说明:
*/
public class Test {
public static void main(String[] args) {
Person p = new Person("张三",15);
Class<?> clazz = p.getClass();
System.out.println(clazz);//class java011.Person
System.out.println(clazz.getName());//java011.Person
}
}
5 toString()方法
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
package java011;
/**
* 2017/9/18
* 说明:
*/
public class Person {
private String name;
private int age;
public Person(){
}
public Person(String name,int age){
this.name = name;
this.age = age;
}
@Override
public boolean equals(Object obj) {
if(obj == null){
return false;
}
if(obj instanceof Person){
Person p = (Person) obj;
if(!this.name.equals(p.name) && this.age!=p.age ){
return false;
}
}
return true;
}
}
package java011;
/**
* 2017/9/18
* 说明:
*/
public class Test {
public static void main(String[] args) {
Person p = new Person("张三",15);
System.out.println(p);//java011.Person@1b6d3586
System.out.println(p.toString());//java011.Person@1b6d3586
}
}