Java知识点总结:想看的可以从这里进入
目录
- 5、关键字
- 5.1、final
- 5.2、static
- 5.3、 权限修饰符
- 5.4、 super、this
- 5.5、instanceof
 
 
5、关键字
5.1、final

1、final:最终的。
修饰局部变量时赋值后不可改,修饰成员变量时必须赋初值且不可改(基本数据类型值不可改,引用数据类型是不能再指向其他对象,但是对象内的数据是可改的)。
修饰方法时方法时不能重写
修饰类时类不能被继承。
和Static同时使用,是创建常量。
2、finally是处理异常时配合try、catch一起使用,用于存放那些无论是否出现异常都一定会执行的代码,通常用于释放锁、数据库连接等资源。
3、finalize是Object类的一个方法,是垃圾回收机制的一部分,当对象被回收时,垃圾回收处理器调用此方法。JVM不能保证此方法总被调用。在 Java 9 中该方法已经被标记为废弃,并添加新的 java.lang.ref.Cleaner,提供了更灵活和有效的方法来释放资源。
5.2、static

是否可以在static修饰的方法内调用非static方法?
分两种情况描述。
1、如果在静态方法中显示的创建了对象的实例,因为对象已经创建了,所以此时可以调用非static方法
2、在静态方法中没有创建对象实例而直接调用非静态方法,这种情况是不可以的,非静态方法需要创建对象才会分配空间,而静态方法在类加载时便分配了空间,而此时未创建对象,所以在调用时会出现异常。
5.3、 权限修饰符
权限修饰可以用来修饰类的内部结构:属性、方法、构造器、内部类。
但是类只能用 public 和 default 这两个来修饰

5.4、 super、this
this:指当前对象自己本身,表示本类对象的引用(谁用this就是指谁,和显示中我们说我一样),可以调用自身的属性、方法(不含静态的,静态对应的是类不是对象),也可以在构造器中调用其他构造器(但是必须声明在首行)。
java采用的是就近原则,在方法中有局部变量和属性同名,直接调用则是局部变量,加上this就可以调用属性。简单来说就是当形参与成员变量同名时,可以用this来区分局部变量和类的属性。


super:是对上级空间的引用,即对父类空间的引用(并不能代表对象,只是代表一个对象中的一块内存而已),super可以调用父类的属性方法。子父类存在着同名的成员(包括变量和方法)时,在子类中默认是访问子类的成员,可以通过super关键字指定访问父类的成员。
- 可用于访问父类中定义的属性(如果子类没有和父类重名的属性可以不用写super,如果存在重名则必须显式的使用super)
- 可用于调用父类中定义的方法(如果子类没有和父类重名的方法可以不用写super,如果存在重名则必须显式的使用super)
- 可用于在子类构造器中调用父类的构造器(写在第一行)
//定义一个动物类
public class Animal {
    String name;
    public Animal(){
        System.out.println("Animal");
    }
    public Animal(String name){
       this();
       this.name = name;
    }
}
//在定义一个子类Dog
public class Dog extends Animal {
    String name;
    public Dog(String name){
        //调用父类构造方法
        super("动物");
        //调用父类的属性
        System.out.println(super.name);
        //自己的属性
        this.name = name;
        System.out.println("Dog:"+name);
    }
}
 
 
super与this关键字不能同时出现在同一个构造函数中调用其他的构造函数。因为两个语句都需要第一个语句。但是子类实例化前需要先实例化父类,所以如果都不调用,则默认调用父类的无参构造。
 
 
5.5、instanceof




















](https://img-blog.csdnimg.cn/img_convert/2ed0809e10148c42f560a0f62370e938.jpeg)