JAvaキーワードfinal static arrayList
一、static
一般的に、classを設計する場合、実際にはその外観と動作を説明します.newでオブジェクトが生成されない限り、実質的なオブジェクトは存在しません.オブジェクトが生成されると、ストレージスペースが割り当てられ、その関数が外部で使用されます.
しかし、上記の方法では解決できない場合が2つあります.1つ目は、オブジェクトがどれだけ生成されたか、または存在しないかにかかわらず、特定のデータの記憶領域が1つしかないことを望んでいます.2つ目は、ある関数がclass objectに縛られず、staticキーワードでこの2つの状況を処理できることを望んでいます.
1、staticデータ/関数
あるデータメンバーまたは関数をstaticとして生命すると、彼は所属するclass objectに限定されなくなるので、class objectが発生しなくても、外部からstatic関数を呼び出すことができます.またはstatic dateを取得します.
一般的には、オブジェクトを生成し、そのオブジェクトからデータと関数を取得する必要があります.したがって、non-staticデータ/関数は、彼女たちがそのオブジェクトに属していることを知らなければ、動作できません.static関数を使用する前にオブジェクトを生成する必要はありません.したがってstatic関数ではnon-staticデータ/関数を呼び出すことはできません.単純にnon-static関数を直接呼び出してオブジェクトを作成しないだけでは通用しません.なぜならnon-staticデータと関数は特定のオブジェクトとバンドルされているからです.
クラスメンバー変数を静的に分類するかどうかによって2つに分けることができます.1つはstaticによって修飾された変数で、静的変数またはクラス変数と呼ばれます.もう1つはstaticによって修飾されていない変数で、インスタンス変数と呼ばれます.両者の違いは、静的変数がメモリに1つしかコピーされていない(メモリを節約する)場合、JVMは静的メモリを1回だけ割り当て、クラスをロードする過程で静的変数のメモリ割り当てを完了し、クラス名で直接アクセス(便利)することができ、もちろんオブジェクトでアクセスすることもできます(ただし、これは推奨されません).インスタンス変数の場合、インスタンスを作成しないと、インスタンス変数にメモリが1回割り当てられます.インスタンス変数はメモリに複数のコピーがあり、互いに影響しません(柔軟です).
2、staticコードブロック
3、staticとfinalを一緒に使う
二、final
1、final類
2、final方法
3、final変数(定数)
4、finalパラメータ
三、arrayList
Listはインタフェース定義のいくつかの方法であるが、方法が実現されていないArrayListはクラスがListというインタフェースListの定義を実現する方法であり、ArrayListの中ではすべて実現されていると同時に、Listは他のクラスによって実現されてもよい.例えば、Vector、Vector、ArrayListはList定義の方法の実現に違いがある.
一般的に、classを設計する場合、実際にはその外観と動作を説明します.newでオブジェクトが生成されない限り、実質的なオブジェクトは存在しません.オブジェクトが生成されると、ストレージスペースが割り当てられ、その関数が外部で使用されます.
しかし、上記の方法では解決できない場合が2つあります.1つ目は、オブジェクトがどれだけ生成されたか、または存在しないかにかかわらず、特定のデータの記憶領域が1つしかないことを望んでいます.2つ目は、ある関数がclass objectに縛られず、staticキーワードでこの2つの状況を処理できることを望んでいます.
1、staticデータ/関数
あるデータメンバーまたは関数をstaticとして生命すると、彼は所属するclass objectに限定されなくなるので、class objectが発生しなくても、外部からstatic関数を呼び出すことができます.またはstatic dateを取得します.
一般的には、オブジェクトを生成し、そのオブジェクトからデータと関数を取得する必要があります.したがって、non-staticデータ/関数は、彼女たちがそのオブジェクトに属していることを知らなければ、動作できません.static関数を使用する前にオブジェクトを生成する必要はありません.したがってstatic関数ではnon-staticデータ/関数を呼び出すことはできません.単純にnon-static関数を直接呼び出してオブジェクトを作成しないだけでは通用しません.なぜならnon-staticデータと関数は特定のオブジェクトとバンドルされているからです.
クラスメンバー変数を静的に分類するかどうかによって2つに分けることができます.1つはstaticによって修飾された変数で、静的変数またはクラス変数と呼ばれます.もう1つはstaticによって修飾されていない変数で、インスタンス変数と呼ばれます.両者の違いは、静的変数がメモリに1つしかコピーされていない(メモリを節約する)場合、JVMは静的メモリを1回だけ割り当て、クラスをロードする過程で静的変数のメモリ割り当てを完了し、クラス名で直接アクセス(便利)することができ、もちろんオブジェクトでアクセスすることもできます(ただし、これは推奨されません).インスタンス変数の場合、インスタンスを作成しないと、インスタンス変数にメモリが1回割り当てられます.インスタンス変数はメモリに複数のコピーがあり、互いに影響しません(柔軟です).
2、staticコードブロック
static , static , , , ,JVM , static ,JVM , 。
3、staticとfinalを一緒に使う
static final , “ ”!
, , 。
, , 。
:
static final , , ( ,ArrayList、HashMap) , , , 。
二、final
,Java final “ ” “ ” , 、 。 : 。
final , ,final final 。
final , 。
final , , 。
final 。
: private , private final 。
1、final類
final , final , final 。 , , , , final 。
2、final方法
, final 。
final :
、 , 。
、 。 final , 。
3、final変数(定数)
final , !
final : 、 , 。
, final , 。
,final , , , final , , final 。 ,final final final , , final , 。
4、finalパラメータ
final , , 。
三、arrayList
Listはインタフェース定義のいくつかの方法であるが、方法が実現されていないArrayListはクラスがListというインタフェースListの定義を実現する方法であり、ArrayListの中ではすべて実現されていると同時に、Listは他のクラスによって実現されてもよい.例えば、Vector、Vector、ArrayListはList定義の方法の実現に違いがある.