JAVA 基础知识总结——基础关键字

来源:互联网 发布:qq语音软件下载 编辑:程序博客网 时间:2024/06/05 18:28

(一)   JAVA基础关键字

1. final,finalize,finally

final关键字可以用于修饰变量,方法,类。如果修饰变量,则该变量不可以再被修改。对于基本类型,则值不变。对于对象类型,则引用不变。

如果修改方法,则该方法不可以被子类重写,会编译错误。final修饰的方法,可以提高调用效率,但是如果太多final修饰的方法,则会影响效率。所以要慎用。

如果修改类,则该类不能被子类继承。

finalize主要由JVM进行调用来进行垃圾回收的,类似于C++中的析构函数。

finally用于表示代码块,和try配合使用,用于异常处理的弥补。不管try中的语句有没有执行完,最后都会执行finally块语句中的代码。

 

2.throw,throws

throw 用于方法体中,抛出异常。Throws用于方法声明中,定义向上抛出的异常类型。Throw只能每次只抛出一种类型的异常,throws可以定义抛出多种类型的异常。

 

3.   static

static 可以用来修饰变量,方法和代码块。由static修饰的变量,方法都成了类变量,类成员方法。通过类即可调用,不需要通过实例化对象调用。由static修饰的变量为静态变量,修饰的方法为静态方法。静态变量在内存中,只要一个复制,JVM为其分配一次内存。类加载 过程只进行一次,因而 静态变量也只会被创立一次。静态方法不能访问类内非静态变量,不能出现supper关键词。子类重写父类的static方法,也只能是static(如果重写的方法没有加static修饰,编译出错).static修饰的代码块为静态代码块。可以放在类的任何地方,不能出现在main方法中。运行时,JVM会按照静态代码块声明的位置,依次按顺序执行。

4.   abstract,interface

abstract 可以修饰方法,修饰类。修饰的方法为抽象方法,只能有方法的声明不能实现。只能通过子类去实现具体的方法。抽象方法只能在抽象类中声明。Abstract修饰的类为抽象类,该类不能有实例。只能作为父类,通过继承实现所有的方法。

Abstract和final不能同时修饰同一个方法,同时存在,编译错误。

Interface的实质是一个特殊的抽象类。Interface内声明的所有的方法都默认为public abstract的。且必须是public的。声明的所有的成员变量都默认为public static final的。

 

5.   super,this

super可以理解为指向父类的指针。Super.成员名(方法名),显示调用父类的同名成员。Super(参数列表),显示调用父类的构造方法。而且该super()必须放在方法体的第一句。

This可以理解为当前对象的引用。This.成员名,调用该类的成员变量,或成员方法。This(参数列表),显示调用该类的一个构造函数。This()必须放在方法体的第一句。

 

6.   synchronize,volatile

synchronize修饰方法,修饰代码块。Volatile修饰变量。Synchronize修饰方法或代码块中的变量,只能被当前线程所访问,其他线程访问会被阻塞。Volatile修饰的变量,实质通知JVM,该变量在寄存器中的值是不确定的,需要到主存中读取。Volatile修饰的变量不会被阻塞。而且该变量不会被编译器优化。Volatile保证了变量的修正可见性,不保证原子性,而synchronize都保证了。