1、abstract
abstract修饰类,表示抽象的意思,抽象类可以含有非抽象变量和成员变量,也可以有普通方法和构造方法,但是不能被实例化(接口),但是可以被子类继承。
public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E> {
...
}
abstract修饰方法,表示抽象方法,抽象方法必须位于抽象类中,并且不能有具体实现。
abstract public E get(int index);
2、break
break在switch中用于跳出switch块,停止switch向下穿透的现象。
case value:expression;
break;
break在循环中用于跳出循环。
while(...){
...
break;
}
break也可以在后面接标签,用来跳出一些嵌套比较复杂的循环中。
flag:
for(...){
for(...){
break flag;
}
}
3、continue
continue用于在循环中跳过本次循环。
while(...){
...
continue;
}
continue也可以在后面接标签,在一些嵌套比较复杂的循环中跳过一次循环。
flag:
for(...){
for(...){
continue flag;
}
}
4、final
- 修饰变量:将变量变为常量,在初始化变量后不能再改变值。
- 修饰方法:被final修饰的方法不能被子类重写。
- 修饰类:被final修饰的类不能被继承。
5、finally
finally在try/catch语句块中处理一些后续的工作。例如关闭网络连接和输入输出流等。如果在try/catch中使用return,则finally会撤销这个return,无论如何都会执行finally中的语句。
6、goto
Java中的保留关键字,没有实际意义,但是不能用做变量名。在C中表示无条件跳转语句。
7、instanceof
instanceof用于判断类与对象的关系
instanceof b
8、private
私有的,被private修饰的变量和方法只能在此类中访问,其他类或者其他包中的类也无法访问。
9、protected
受保护的方法和变量只能给子类和基类访问。
10、public
公有的,其他子类父类或者其他包的类均能访问。
11、return
返回方法的数据,并结束方法。
12、static
static修饰的代码块主要存放于堆的方法区。
静态变量:依附在类中的变量,可以被类的所有的实例共用。
static int a = 0;
静态方法:依附在类中的方法。静态方法只能访问类中的静态变量和静态方法。
publlic static void b(){
...
}
静态块:在类加载的时候执行块中的语句,块中不能访问非静态变量。
static{
...
}
静态内部类:用static修饰内部类。
13、super
引用父类的的成员:
super.xxx
变量或方法重名时用super调用父类的成员或方法。
调用父类的构造方法:
super(xxx);
14、synchronzied
synchronized关键字用于保证线程安全。由这个关键字修饰的方法或者代码块保证了同一时刻只有一个线程执行该代码。
synchronized(obj){...}
当一个线程访问同步代码块时,检查obj是否有锁,如果有就挂起。如果没有就获得这个obj的锁,也就是把其他线程锁在了外面。当代码执行完毕时释放该锁,其他线程获得锁继续执行代码。
15、this
指向当前对象:this.xxx
形参和成员名字重名时时用this区分。
引用构造函数。
16、transient
类接上序列化接口后,可以通过transient关键字将某些变量变得无法序列化。
transient int a = 1;
17、volatile
volatile关键字修饰的变量在多线程中保持同步。相比synchronized效率要高,不会阻塞线程。但只能保证数据的可见性,不能保证数据的原子性。例如在处理i++的时候另外一个线程修改i的值,那么i的值将会发生错误,这是原子性导致的。
volatile int a;