常用类及其方法
1.1、类的概念
类:类是一个模板,它描述一类对象的行为和状态。
问题:解释类中的基类,子类,派生类,父类,超类
答:基类,父类,超类都是一个意思,只不过是不同的说法而已。子类和派生类也一样。
例如:
class A{
};
class B extends A{
};
//这里B叫做父类或者基类,A叫做子类或者派生类
1.2、Object类
Object类是所有类(包括超类,基类)的直接或间接父类,位于继承树的最顶层。任何类,如果没有书写extends显式地继承某个类,都默认直接继承Object类,否则为间接继承。它当中所定义的方法,是所有对象都具备的方法。Object类中可以存储任何对象,它作为参数时,可以接受任何对象;作为返回值时,可返回任何对象。
1.2.1、getClass()方法
getClass()方法会返回引用中存储的实际对象,通常用来判断连个引用中实际对象的类型是否一致。
public class test {
static class Student{
private String name;
private int age;
public Student(String name, int age) {
this.name=name;
this.age=age;
}
}
public static void main(String[] args) {
Student stu1 = new Student("aaa", 20);
Student stu2 = new Student("bbb", 22);
//判断stu1和stu2是不是同一类型
Class class1 = stu1.getClass();
Class class2 = stu2.getClass();
if (class1 == class2) {
System.out.println("二者属于同一类型");
} else {
System.out.println("二者不是同一类型");
}
}
}
1.2.2、hashCode()方法
hashCode()方法会返回该对象的hash码值。hash值是根据对象的地址或者数字使用hash短发计算出来的int类型的数值。一般情况下,相同的对象会返回相同的hash码。
public class test {
static class Student{
private String name;
private int age;
public Student(String name, int age) {
this.name=name;
this.age=age;
}
}
public static void main(String[] args) {
Student stu1 = new Student("aaa", 20);
Student stu2 = new Student("bbb", 22);
System.out.println(stu1.hashCode());
System.out.println(stu2.hashCode());
Student stu3=stu1;
System.out.println(stu3.hashCode());
}
}
1.2.3、toString()方法
toString()方法会返回该对象的字符串表示,我么可以根据程序需求覆盖该方法,如:展示对象的各个属性的值
测试一:不重写Object类的toString()方法(Student类默认继承Object)
package com.Sam;
public class test {
static class Student{
private String name;
private int age;
public Student(String name, int age) {
this.name=name;
this.age=age;
}
}
public static void main(String[] args) {
Student stu1 = new Student("aaa", 20);
Student stu2 = new Student("bbb", 22);
System.out.println(stu1.toString());
System.out.println(stu2.toString());
}
}
解释:Object类自身的toString()方法会返回一个字符串,即:
包名+类名+@+此对象哈希码的无符号十六进制表示
getClass().getName() + ‘@’ + Integer.toHexString(hashCode());菜鸡如我表示看不懂xd。
测试二:重写Object类的toString()方法
package com.Sam;
public class test {
static class Student{
private String name;
private int age;
public Student(String name, int age) {
this.name=name;
this.age=age;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
public static void main(String[] args) {
Student stu1 = new Student("aaa", 20);
Student stu2 = new Student("bbb", 22);
System.out.println(stu1.toString());
System.out.println(stu2.toString());
}
}
1.2.4、equals()方法
该方法默认实现为(this==obj),即比较两个对象地址是否相同,也可重写,比较两个对象的内容是否相同。
package com.Sam;
public class test {
static class Student{
private String name;
private int age;
public Student(String name, int age) {
this.name=name;
this.age=age;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
public static void main(String[] args) {
Student stu1 = new Student("aaa", 20);
Student stu2 = new Student("bbb", 22);
Student stu3=stu1;
System.out.println(stu1.equals(stu2