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关键字不能同时出现在同一个构造函数中调用其他的构造函数。因为两个语句都需要第一个语句。但是子类实例化前需要先实例化父类,所以如果都不调用,则默认调用父类的无参构造。