Object类:
•Object类是所有类的父类
•一个类没有使用extends关键字来明确标识继承关系,默认继承Object类(包括数组)
•java中的每一个类都可以使用Object类中的方法
关于Object类中的equals方法,及在String类中重写的equals方法:
public class Test1 {
public static void main(String[] args) {
Animal one = new Animal("花花",2);
Animal two = new Animal("花花",2);
//equals()测试:
//1、继承自Object的equals方法时,比较的是两个引用是否指向同一个对象
//2、子类可以重写equals方法,来改变比较的内容
boolean flag = one.equals(two);
System.out.println("one和two的引用比较:"+flag);//结果是false
System.out.println("one和two的引用比较:"+(one == two));//结果是false
String str1 = new String("hello");
String str2 = new String("hello");
flag = str1.equals(str2);
System.out.println("str1和str2的引用比较:"+flag);//结果是true,
//在String类里重写了equals方法,只进行比较字符串是否相同
System.out.println("str1和str2的引用比较:"+(str1 == str2));//结果是false
}
}
在Animal类中重写equals()方法:用来比较Animal 类实例化对象值的内容
// 重写Object类里的equals()方法
public boolean equals(Object obj){
if (obj == null) {
return false;
}
// 将Object强制转换为Animal类
Animal temp = (Animal)obj;
if (this.getName()==temp.getName() && this.getMonth() == temp.getMonth())
return true;
else
return false;
}
toString()方法:
//toString()测试:
//1、输出对象名时,默认会直接调用类中的toString()方法
//2、继承自Object类中的toString()方法时,输出对象的字符串表现形式:类型信息+@+地址信息
//3、子类也可以通过重写toString()方法,来改变输出的内容
System.out.println(one.toString());//会输出:com.imooc.animal.Animal@7852e922
System.out.println(two.toString());
final关键字:
•final + class:表示该类不允许被继承
譬如:public final class Animal{},或者final public class Animal{}, 表示Animal类不允许被继承
•final + 方法:表示该方法不允许在子类被重写,但可以在子类中正常使用,也可以在本类中重载
•final + 方法内局部变量:表示其值在赋值以后不允许被修改
•final + 类中成员属性 :定义的时候可以直接对其赋值,如果在定义的时候并没有对其赋值,那么只能在构造方法和构造代码块两个位置进行赋值
1、定义直接初始化 2、构造方法内赋值 3、构造代码块内进行赋值
注解:
•源码注解:只在源码中存在,编译成.class文件就不存在了
•编译时注解:注解在源码和.class文件里都存在
•运行时注解:在运行阶段还起作用,甚至会影响运行逻辑的注解