在Java中,关键字“final”、“finally”和“finalize”的作用是什么?



在Java中,关键字final, finallyfinalize是什么用途?

final

final可用于将变量标记为"不可更改"

private final String name = "foo";  //the reference name can never change

final也可以使一个方法不可重写

public final String toString() {  return "NULL"; }

final也可以使一个类不可继承。也就是说,类不能被子类化。

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 with resources语句,你可以使用它来自动关闭显式或隐式实现Java .io. closeable或Java .lang. autocloseable的资源

<标题>完成

finalize在对象被垃圾收集时被调用。您很少需要重写它。一个例子:

protected void finalize() {
  //free resources (e.g. unallocate memory)
  super.finalize();
}
  • "Final"表示某事不能更改。您通常希望在静态变量上使用此方法,这些静态变量将在整个程序生命周期中保持相同的值。
  • "Finally"与try/catch块一起使用。不管'try'块中的代码是否抛出异常,"finally"子句中的任何内容都将执行。
  • "Finalize"在对象即将被垃圾收集之前由JVM调用。

最后一个关键字用于声明常量。

final int FILE_TYPE = 3;

finally关键字用于try catch语句中,用于指定无论抛出异常如何都要执行的代码块。

try
{
  //stuff
}
catch(Exception e)
{
  //do stuff
}
finally
{
  //this is always run
}

最后(哈哈),finalize我不完全确定它是一个关键字,但是Object类中有一个finalize()函数。

http://allu.wordpress.com/2006/11/08/difference-between-final-finally-and-finalize/

final -常量声明。

finally - finally块总是在try块退出时执行,除了System.exit(0)调用。这确保即使发生意外异常,finally块也会被执行。但是finally不仅仅对异常处理有用——它允许程序员避免清理代码被return、continue或break意外绕过。将清理代码放在finally块中始终是一种好做法,即使没有预期的异常。

finalize() -方法有助于垃圾收集。在垃圾回收器丢弃对象之前调用的方法,使其能够清理其状态。不应该用于释放非内存资源,如文件句柄,套接字,数据库连接等,因为Java只有有限数量的这些资源,你不知道垃圾收集何时开始通过finalize()方法释放这些非内存资源。

你试过在谷歌上搜索,需要澄清解释吗?

final:final是关键字。声明为final的变量应该是只初始化一次,不能更改。Java类声明为终局的不能延期。声明为final的方法不能重写。

最后:finally是一个块。 finally块总是在Try块退出。这确保了finally块被执行即使发生了意外异常。但最后是有用的不仅仅是异常处理——它允许程序员避免清理代码意外地被返回绕过,要么继续,要么中断。将清理代码放在finally块中是这是一个很好的做法,即使没有预料到异常。

完成:finalize是一个方法。对象在被垃圾回收之前运行时系统调用它的finalize()方法。你可以写系统资源在获取垃圾之前释放finalize()方法中的代码收集。

1。最后•Final用于对类、方法和变量施加限制。•Final类不能被继承,Final方法不能被重写,Final变量的值不能被改变。•除了在构造函数中初始化的空白Final变量外,Final变量在创建时初始化。•Final是关键字。

2。最后•Finally与try和catch一起用于异常处理。•无论异常处理与否,都将执行。•该块用于关闭资源,如数据库连接,I/O资源。•最后是一个块。

3。完成Finalize由垃圾收集线程在收集符合条件的对象执行清理处理之前调用。•这是对象执行任何清理的最后机会,但由于不能保证finalize()是否会被调用,因此保留资源直到finalize调用是不好的做法。Finalize是一个方法

final在java中的含义是:-应用于变量意味着相应的变量一旦初始化就不能再被修改

private final double numer = 12;

如果你试图修改这个值,你会得到一个错误。

-应用于方法意味着不能重写相应的方法

 public final void displayMsg()
    {
        System.out.println("I'm in Base class - displayMsg()");
    }

但是final方法可以被继承,因为final关键字限制了方法的重新定义。

-应用于类意味着不能扩展相应的类。

class Base
{
    public void displayMsg()
    {
        System.out.println("I'm in Base class - displayMsg()");
    }
}

finally的意思是:

class TestFinallyBlock{  
  public static void main(String args[]){  
  try{  
   int data=25/5;  
   System.out.println(data);  
  }  
  catch(NullPointerException e){System.out.println(e);}  
  finally{System.out.println("finally block is always executed");}  
  System.out.println("rest of the code...");  
  }  
} 

在这个例子中,即使try-catch执行与否,finally中的内容也将始终被执行。finalize的含义:

class FinalizeExample{  
public void finalize(){System.out.println("finalize called");}  
public static void main(String[] args){  
FinalizeExample f1=new FinalizeExample();  
FinalizeExample f2=new FinalizeExample();  
f1=null;  
f2=null;  
System.gc();  
}}  

最新更新