在Java中,关键字`final`,`finally`和`finalize`的目的是什么?
在Java中,关键字的final
目的是什么, finally
并finalize
落实?
最后
final
可以用来标记一个variables“不可更改”
private final String name = "foo"; //the reference name can never change
final
还可以使一个方法不能“覆盖”
public final String toString() { return "NULL"; }
final
还可以让一个类不是“可inheritance的”。 即class级不能被分类。
public final class finalClass {...} public class classNotAllowed extends finalClass {...} // Not allowed
最后
finally
用try / catch语句来执行代码“always”
lock.lock(); try { //do stuff } catch (SomeException se) { //handle se } finally { lock.unlock(); //always executed, even if Exception or Error or se }
Java 7有一个新的资源语句try ,您可以使用它来自动closures显式或隐式实现java.io.Closeable或java.lang.AutoCloseable的资源
敲定
当一个对象被垃圾收集时调用finalize
。 你很less需要重写它。 一个例子:
protected void finalize() { //free resources (eg unallocate memory) super.finalize(); }
- “最后”表示不能改变。 你通常要在静态variables上使用这个variables,这个静态variables在程序的整个生命周期中都会保持相同的值。
- “finally”与try / catch块一起使用。 无论“try”块中的代码是否引发exception,“finally”子句中的任何内容都将被执行。
- 在一个对象即将被垃圾收集之前,由JVM调用“Finalize”。
final关键字用于声明常量。
final int FILE_TYPE = 3;
在try catch语句中使用finally关键字来指定要执行的代码块,而不pipe抛出的exception如何。
try { //stuff } catch(Exception e) { //do stuff } finally { //this is always run }
最后(哈哈),最后确定即时消息不完全确定是一个关键字,但在Object类中有一个finalize()函数。
http://allu.wordpress.com/2006/11/08/difference-between-final-finally-and-finalize/
最终 – 不变的声明。
finally – 终止块总是在try块退出时执行,除了System.exit(0)调用。 这确保即使发生意外的exception也能执行finally块。 但是最后对于不仅仅是exception处理而言是有用的 – 它允许程序员避免由于返回,继续或中断而意外绕过清除代码。 清理代码放在finally块里总是一个很好的习惯,即使没有预期的例外。
finalize() – 方法有助于垃圾收集。 在垃圾收集器丢弃对象之前调用的方法,允许清理其状态。 不应该用来释放像文件句柄,套接字,数据库连接等非内存资源,因为Java只有有限的这些资源,你不知道什么时候垃圾回收将要启动释放这些非内存资源通过finalize()方法。
你尝试search谷歌,需要澄清的解释?
final: final是一个关键字。 作为final而被删除的variables只能被初始化一次,不能被改变。 声明为final的Java类不能被扩展。 声明为final的方法不能被覆盖。
最后: 最后是一个块。 finally块总是在try块退出时执行。 这确保即使发生意外的exception也能执行finally块。 但是最后对于不仅仅是exception处理而言是有用的 – 它允许程序员避免由于返回,继续或中断而意外绕过清除代码。 清理代码放在finally块里总是一个很好的习惯,即使没有预期的例外。
敲定: 敲定是一种方法。 在垃圾收集对象之前,运行时系统调用它的finalize()方法。 在收集垃圾之前,你可以在finalize()方法中写入系统资源释放代码。
1.最终 •最终用于对类,方法和variables施加限制。 final类不能被inheritance,final方法不能被覆盖,finalvariables值也不能被改变。 •除了在构造函数中初始化的空白finalvariables外,最终variables在创build时被初始化。 •最终是一个关键字。
2.最后 •最后用于exception处理以及try和catch。 •是否处理exception将被执行。 •该块用于closures数据库连接,I / O资源等资源。 •最后是一个块。
3.完成 •在收集符合条件的对象执行清理处理之前,由垃圾收集线程调用Finalize。 •这是对象进行清理的最后一次机会,但由于不能保证finalize()是否会被调用,所以不好保留资源直到最终调用。 Finalize是一种方法。
最后:
- variables:初始化后,该值无法更改。
- 方法:该方法不能被子类重写。
- class级:class级不能分类。
最后:
finally关键字与try / catch块关联使用,并保证将执行一段代码,即使抛出exception也是如此。
最终确定:
自动垃圾回收器在实际销毁对象之前调用finalize()方法。 因此,类可以重写Object类中的finalize()方法,以便在垃圾回收期间定义自定义行为