JAvaにおけるfinalキーワードの使用例の詳細

2984 ワード

finalはstaticと一緒に定数を宣言するためによく使われていますが、finalがアプリケーションのパフォーマンスをどのように改善しているかも見えます.finalキーワードの意味は?finalはJavaで保持されているキーワードで、メンバー変数、メソッド、クラス、およびローカル変数を宣言できます.リファレンスをfinalとして宣言すると、このリファレンスを変更することはできません.コンパイラはコードをチェックします.変数を再初期化しようとすると、コンパイラはコンパイルエラーを報告します.final変数とは?メンバー変数またはローカル変数(メソッド内またはコードブロック内の変数をローカル変数と呼ぶ)をfinalと宣言するものをfinal変数と呼ぶ.final変数はstaticキーワードとともに定数としてよく使用されます.次はfinal変数の例です.
 
  
public static final String LOAN = "loan" ;
LOAN = new String( "loan" ) //invalid compilation error

final変数は読み取り専用です.
finalメソッドとは?finalはメソッドを宣言することもできます.メソッドの前にfinalキーワードを付けて、このメソッドがクラスのメソッドに書き換えられないことを表します.メソッドの機能が十分に完全で、サブクラスで変更する必要がないと判断した場合は、このメソッドをfinalと宣言できます.finalメソッドは非finalメソッドよりも速い.コンパイル時に静的にバインドされているため、実行時に動的にバインドする必要はない.次はfinalメソッドの例です.
 
  
class PersonalLoan{
public final String getName(){
return "personal loan" ;
}
}

class CheapPersonalLoan extends PersonalLoan{
@Override
public final String getName(){
return "cheap personal loan" ; //compilation error: overridden method is final
}
}


finalクラスとは?finalを使用して修飾されるクラスをfinalクラスと呼びます.finalクラスは通常機能が完全であり、継承できません.Javaにはfinalのクラスがたくさんあります.例えば、String、Interger、その他のパッケージクラスなどです.次はfinalクラスの例です.
 
  
final class PersonalLoan{
}

class CheapPersonalLoan extends PersonalLoan{ //compilation error: cannot inherit from final class
}


以下にfinalキーワードを使用するメリットをまとめます
finalキーワードはパフォーマンスを向上させた.JVMとJavaアプリケーションはfinal変数をキャッシュします.final変数は、追加の同期オーバーヘッドを必要とせずに、マルチスレッド環境で安全に共有できます.finalキーワードを使用すると、JVMはメソッド、変数、クラスを最適化します.可変クラス可変クラスを作成するにはfinalキーを使用します.可変クラスとは、オブジェクトが作成されると変更できないことを意味します.Stringは可変クラスの代表です.可変クラスには、オブジェクトが読み取り専用で、追加の同期オーバーヘッドを必要とせずにマルチスレッド環境で安全に共有できるなど、多くのメリットがあります.関連読書:Stringが可変でない理由と、可変クラスをどのように書くか.finalに関する重要な知識点finalキーワードは、メンバー変数、ローカル変数、メソッド、クラスに使用できます.finalメンバー変数は、宣言時に初期化するか、コンストラクタで初期化する必要があります.そうしないと、コンパイルエラーが報告されます.final変数に再び値を割り当てることはできません.ローカル変数は、宣言時に値を割り当てる必要があります.匿名クラスのすべての変数はfinal変数でなければなりません.finalメソッドは書き換えられません.finalクラスは継承できません.finalキーワードはfinallyキーワードとは異なり、後者は例外処理に使用されます.finalキーワードはfinalize()メソッドと混同されやすく,後者はObjectクラスで定義されたメソッドであり,ゴミ回収前にJVMに呼び出されるメソッドである.インタフェースで宣言されたすべての変数自体はfinalです.finalとabstractの2つのキーワードは逆相関であり、finalクラスがabstractであるはずがない.finalメソッドはコンパイル段階でバインドされ、静的バインド(static binding)と呼ばれる.宣言時にfinal変数を初期化していない空白final変数(blank final variable)は、コンストラクタで初期化するか、this()初期化を呼び出す必要があります.そうしないと、コンパイラは「final変数(変数名)は初期化する必要がある」とエラーを報告します.クラス、メソッド、変数をfinalと宣言すると、パフォーマンスが向上し、JVMが推定され、最適化されます.Javaコードの慣例に従って、final変数は定数であり、通常定数名は大文字でなければならない:private final int COUNT=10;集合オブジェクトに対してfinalと宣言すると、参照は変更できませんが、コンテンツを追加、削除、または変更できます.例えば、private final List Loans=new ArrayList()list.add(“home loan”);//validlist.add( "personal loan");//validloans = new Vector();//not valid final変数、finalメソッド、finalクラスが何であるかはすでに知っています.必要なときにfinalを使うと、より速く、より良いコードを書くことができます.