- Object概述:
Object:是所有类的根类,通过不断抽取而来,具备着所有对象都具备的共性内容。 - 常用方法:
1.boolean equals(Object obj) :用于比较两个对象是否相等。
注意: equals方法在底层用的还是 == 进行比较。所以:
class Person{
private String name;
Person(String name){
this.name=name;
}
}
class Demo{
public static void main(String[] args){
Person p1=new Person("小明");
Person p2=new Person("小明");
System.out.print(p1 == p2);
System.out.print(p1.equals(p2));
//结果都是false
}
}
- 重写equals方法:
class Person{
private String name;
Person(String name){
this.name=name;
}
public boolean equals(Object o){
//健壮性判断,向下转型
if(!(o instanceof Person)){
throw new ClassCastException("类型错误!");
}
Person p=(Person)o;
return this.name=o.name;
}
}
class Demo{
public static void main(String[] args){
Person p1=new Person("小明");
Person p2=new Person("小明");
//false
System.out.print(p1 == p2);
//true
System.out.print(p1.equals(p2));
}
}
根据对象的特有内容,建立判断对象是否相同的依据。
2.int hashCode();返回该对象的哈希码值。
- 重写hashCode方法:
class Person{
private String name;
private int age;
Person(String name){
this.name=name;
}
public boolean equals(Object o){
//健壮性判断,向下转型
if(!(o instanceof Person)){
throw new ClassCastException("类型错误!");
}
Person p=(Person)o;
return this.name=o.name;
}
public int hashCode(){
return age;
}
}
class Demo{
public static void main(String[] args){
Person p1=new Person("小明");
Person p2=new Person("小明");
//false
System.out.print(p1 == p2);
//true
System.out.print(p1.equals(p2));
}
}
3.class getClass方法:返回此Object的运行时类(当前对象所属的字节码文件对象)。
class Person{
private int age;
Person(int age){
this.age=age;
}
}
class Demo{
public static void main(String[] args){
Person p1=new Person(18);
Person p2=new Person(20);
Class c1=p1.getClass();
Class c2=p2.getClass();
//true 两个对象都是同一个字节码文件产生的
System.out.print(c1.equals(c2));
//Person
System.out.print(c1.getName(););
}
}
4.String toString方法:返回该对象的字符串表示形式。
注意:它的值等于:getClass().getName+’@’+Integer.toHexString(hashCode());
class Person{
private int age;
Person(int age){
this.age=age;
}
//重写toString方法
public String toString(){
return "Person:"+age;
}
}
class Demo{
public static void main(String[] args){
Person p1=new Person(18);
Person p2=new Person(20);
//Person:18
System.out.print(p1.toString());
}
}
- 包(package)
对类文件进行分类管理。
给类提供多层命名空间。
写在程序文件的第一行。
类名的全称是 包名.类名
包也是一种封装形式。
注意:
包与包之间的类进行访问,被访问的包中的类必须是public,方法也必须是public。 - 导包:
import packa.DemoA;//导入了packa包中的DemoA类,这样就不用packa.DemoA了。
import packa.*;//导入packa包中的所有类不导入包中的包。
导包的原则:用到哪个类就导哪个类。