Javaでfinalキーワードがローカル変数とメンバー変数を修飾するときの初期化タイミング、およびfinal修飾参照変数
1019 ワード
finalキーワード:finalは最終的な意味で、クラス、変数、メンバーメソッドを修飾することができます.final修飾クラス:クラスがfinal修飾されると、そのクラスは継承されない.final修飾方法:メソッドがfinal修飾されると、そのメソッドは上書きできない.final修飾変数:1つの変数がfinalによって変数を付与されると1回しか付与できないが、いったん付与された後、その値を変更することはできないa.局所変数にとって、finalによって修飾される場合、その変数は使用前に付与しなければならず、しかも1回しか付与できないb.メンバー変数にとって、finalによって修飾される場合、保証する.メンバー変数の場合、オブジェクトの作成が完了する前に、オブジェクトのメンバー変数値に1回(独自に値を割り当てる)割り当てるには、メンバー変数に値を割り当てる3つの方法があることを保証します.
finalが参照変数を修飾する場合、変更できないのは、参照変数がオブジェクト内のメンバー変数を指すのではなく、参照変数が指すオブジェクトです.
final A a=new A();//Aはクラスで、aはfinalで修飾された参照変数//a=new A()である.再びaに新しいオブジェクトを付与すると、a.i=10とエラーが発生します.a.i=100;//Aクラスに変数iが存在すると仮定すると、a.iはメンバーに定義された変数として変更可能である
public class Test {
final int a=1;//
final int b;
final int c;
{
b=2;
}//
public Test(int i){
c=i;
}//
}
:
a. 1 2 3.0 true false "helloworld"
b. final
final int a = 1;
finalが参照変数を修飾する場合、変更できないのは、参照変数がオブジェクト内のメンバー変数を指すのではなく、参照変数が指すオブジェクトです.
final A a=new A();//Aはクラスで、aはfinalで修飾された参照変数//a=new A()である.再びaに新しいオブジェクトを付与すると、a.i=10とエラーが発生します.a.i=100;//Aクラスに変数iが存在すると仮定すると、a.iはメンバーに定義された変数として変更可能である