object是比较特殊的类,是所有类的父类,当一个类被创建后没有指定继承的父类,那么默认继承object类
例:public class person{}和public class person extends object{}是一样的
object中常用的两个方法equals()和string()
一、equals()方法
在学习听课过程中对equals很不理解,尤其是重写前后的作用以及和“==”的区别
(1)“==”的含义
基本数据类型:byte、short、int、long、double、float、Boolean、char之间比较的是值
引用数据类型:比较的是在内存中的存储地址,是否是指向内存中的同一个对象
(2)equals()
equals方法不能比较基本数据类型,只能比较引用数据类型
equals的源码: public Boolean equals(object obj){
return(this==obj);
}
初始默认行为是比较数据存储地址是否相同。jdk的类中有一些类覆盖率object类中equals()方法,比较规则:如果两个对象的类型一直,并且内容一直,则返回true。这写类有:string,file,date,包装类(integer,Double等)。
也可以自己重写:
第一种,没有重写,比较数据的存储地址
public class person {
private String name;
private int age;
public person() {}
public person(String name,int age) {
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;
}
}
测试类:
public class test {
public static void main(String[] args) {
// TODO Auto-generated method stub
person p=new person("徐",18);
person p1=new person("徐",18);
boolean b=p.equals(p1);
System.out.println(b);
}
}
p和p1的地址不同,返回值为false
第二种:equals被重写
public class person {
private String name;
private int age;
public person() {}
public person(String name,int age) {
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;
}
@Override
//重写的equals方法
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;
}
}
测试类:
public class test {
public static void main(String[] args) {
// TODO Auto-generated method stub
person p=new person("徐",18);
person p1=new person("徐",18);
boolean b=p.equals(p1);
System.out.println(b);
}
}
对象p的name和age与对象p1的name和age的值相等,b的值为true;