-
final
final可以用来修饰类、方法、变量分别有不同的意义。修饰class表示这个累不可以被继承扩展、修饰变量表示这个变量是不可修改的、修饰函数表示这个函数不可以被重写 .
-
我们可以将方法和类声明为final,明确告诉别人这些行为是不允许修改的,java中的一些核心类库就是这样设计的,这样可以有效避免API使用者更改基础功能,保证安全。
-
将变量声明为final,可以用于保护只读数据。在并发编程中,因为final变量不能再赋值,有利于减少额外的同步开销。
-
final修饰变量指的是:这个变量被初始化后便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引用不可变,即不能再指向其他的对象。如果final修饰的变量是对象类型,那么不可更改指的是该变量不可以再指向别的对象,但是对象的值时可以更改的,比如下面代码。
//对象的值可以被修改
final List<String> strList = new ArrayList<>();
strList.add("hello");
strList.add("world");
* 错误,调用方法的时候已经对x进行赋值,不能再对其进行++操作。
*/
public class Something {
public int addOne(final int x) {
return ++x;
}
}
/*
* 正确,因为final修饰的类,但++的却是其对象,说明类属性改变,类不一定跟着改变
*/
public class Something {
public static void main(String[] args) {
Other o = new Other();
new Something().addOne(o);
}
public void addOne(final Other o) {
o.i++;
}
}
class Other {
public int i;
}
-
Finally
- finally是java保证重点代码被执行的一种机制,一般使用try-catch-finally来进行类似关闭jdbc连接,IO流等一些动作。
- finally里面代码也不一定会被执行,如果try-catch执行了死循环或者退出进程,finally中的代码就不会再执行。如下:
try{
//do something
System.Exit();
} finally{
System.out.println(“print from..);
}
-
finalize
是基础类Object的一个方法,用来保证对象在被垃圾收集前完成特定资源的回收。现在已经不推荐使用了。
网友评论