final 类?最终类,不能有子类。
final 方法?方法不能被重写(override)
final 变量?常量,变量值不能被更改
public class Test{
private final int a;
private String name;
public Test(){
a = 3;
}
pubilc Test(String name){
this.name = name;
}
}
可否编译通过?
无法编译通过,会提示a尚未初始化。要在所有的构造方法中对final变量进行赋值。
对于final类型的成员变量的初始化方式:
1,声明变量时直接赋值。
2,在构造方法中赋值。若有多个构造方法,要保证在每一个构造方法中完成对final变量初始化工作。
变量a即使final 又是static?
public class Test{
private static final int a;
private String name;
public Test(){
a = 3;
}
pubilc Test(String name){
this.name = name;
}
}
则必须在声明的时候就赋值,否则会编译通不过。
---------------------
pubilc class Test2{
public static final StringBuffer s = new StringBuffer();
public static void main(String[] arge){
s.append("hello");
}
}
可以编译通过
对于final类型的引用变量来说,所谓的不能改变指的是该引用不能改变。
---------------
public class ExceptionTest{
public static void main(String[] args){
try{
String s = null;
return ;
}catch(Exception ex){
System.out.println("exception");
}finally{
System.out.println("finally");
}
}
}
程序可以编译通过。
异常执行流程:如果return有finally的话,会在return之前执行finally语句块内容。
只有一种情况不会去执行finally就是try中有System.exit(0); 则不会去执行finally。