object类
-
超类,基类,所有类的直接或间接父类,位于继承树的最顶层
-
任何类,如没有书写extends显示继承某个类,都默认直接继承某个类,都默认直接继承object类,否则为间接继承
-
object类中所定义的方法,是所有对象都具备的方法
-
object类型可以存储任何对象
- 作为参数,可接受任何对象
- 作为返回值,可返回任何对象
-
getClass()方法
-
publi final Class<?>getClass(){}
-
返回引用中存储的实际类型对象
-
应用:通常用于判断两个引用中实际存储对象类型是否一致
-
public class Student {private String name;private int age;public Student(String aaa, int i) {this.name = name;}public Student(int age) {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) {Student s1= new Student("aaa",20);Student s2 = new Student("bbb", 22);//判断s1和s2是不是同一个类型Class class1= s1.getClass();Class class2= s2.getClass();if(class1==class2){System.out.println("他俩为同一类型");}else{System.out.println("他俩部位同一个类型");}} }
-
-
hashCode()方法
-
public int hashCode(){}
-
返回该对象的哈希码值
-
哈希码值根据对象的地址 或字符串或数字使用hash算法计算出来的int类型的数值
-
一般情况下相同对象返回相同哈希码
-
//hashcode方法System.out.println(s1.hashCode());System.out.println(s2.hashCode());Student s3=s1;System.out.println(s3.hashCode());//结果是一样的,因为s1赋给s3的是地址,所以两者的地址是一样的,两个int值应该也是一yang
-
-
toString()方法
-
public String toString(){}
-
返回该对象的字符串表示(表现形式)
-
可以根据程序要求覆盖方法
-
//不满足现有需求,重写方法 toString,重写需要相同方法名,参数列表,返回值@Overridepublic String toString() {return name+":"+age;} }
-
//toString()fangfaSystem.out.println(s1.toString());System.out.println(s2.toString());
-
-
equals()方法
-
public boolean equals(Object obj){}
-
默认实现为(this==obj),比较两个对象地址是否想同
-
可进行覆盖,比较两个对象的内容是否相同
-
//equals()方法:判断两个对象是否相等System.out.println(s1.equals(s2));Student s4 = new Student("小明",17);Student s5 = new Student("小明",17);System.out.println(s4.equals(s5));}}
-
@Overridepublic boolean equals(Object obj) {//1.判断两个对象是否为同一个引用if(this==obj){return true;}//2.判断obj是否为nullif(obj==null){return false;}//3.判断是否为同一个类型if(obj instanceof Student){//4.强制类型转换Student s=(Student)obj;//5.比较熟悉if(this.name.equals(s.getName())&&this.age==s.getAge());{return true;}}return false;}
-