『Javaプログラミング思想』学習ノートのすべてが対象
卒业してもうすぐ2年になって、突然自分がjavaの多くの関连する技术に対してすべて摂取していると感じて、しかしすべて精巧ではありませんて、その根本を究めるのはやはり自分のjavaの基础知识がしっかりしていないので、そのため最近しばらくの时间は《Javaプログラミングの思想》を精読して、ついでにJavaEyeを通じて(通って)メモをして、いくつか重点の内容を记录します.
参照によるオブジェクトの操作
各プログラミング言語には、メモリ内の要素を操作する方法があります.プログラマは、処理するデータのタイプに注意しなければならない場合があります.要素を直接操作するか、特殊な文法に基づく間接表現(CやC++のポインタなど)でオブジェクトを操作します.
これらはすべてJavaで簡略化されています.すべてが対象とされるため、単一の固定的な文法を採用することができます.すべてがオブジェクトと見なされますが、操作された識別子は実際にはオブジェクトの「参照」(Reference)です.
Stringリファレンスを作成するには、次の手順に従います.
ここで作成されるのは参照だけで、オブジェクトではありません.
リファレンスが作成されると、新しいオブジェクトに関連付けることができます.この目的は通常newオペレータで実現される.新キーワードは「新しいオブジェクトをください」という意味なので、前の例では次のようにできます.
「新しい文字列をください」だけでなく、初期文字列を提供することで、このStringをどのように生成するかについての情報が与えられます.
オブジェクトはどこに保存されますか?
1、レジスタ.これは、他のストレージとは異なる場所であるプロセッサの内部にあるため、最も速いストレージ領域です.しかしレジスタの数は極めて限られているため,レジスタは必要に応じて割り当てられる.直接制御したり、プログラムにレジスタの存在の兆候を感じたりすることはできません.
2、スタック.RAM経由(ランダムアクセスメモリ)にありますが、スタックポインタでプロセッサから直接サポートを受けることができます.スタックポインタが下に移動すると、新しいメモリが割り当てられます.上に移動すると、メモリが解放されます.これはレジスタに次ぐ効率的な割り当て格納方法である.プログラムを作成するとき、Javaシステムはスタック内のすべてのアイテムに格納されているライフサイクルを知っていて、スタックポインタを上下に移動する必要があります.この制約はプログラムの柔軟性を制限するため、一部のJavaデータはスタックに格納されます.特にオブジェクト参照ですが、Javaオブジェクトは格納されません.
3、山.すべてのJavaオブジェクトを格納するための汎用メモリプール(RAM領域にも存在する).スタックがスタックと異なる利点は、コンパイラが格納したデータがスタック内でどのくらい生存しているかを知る必要がないことです.そのため、スタックにストレージを割り当てるには柔軟性があります.オブジェクトが必要な場合はnewで簡単なコードを書くだけで、このコードを実行すると自動的にスタックに格納割り当てられます.もちろん、この柔軟性のためには、スタックによるストレージ割り当てとクリーンアップは、スタックによるストレージ割り当てよりも多くの時間を要する可能性があります.
4、定数ストレージ.定数値は通常、プログラムコードの内部に直接保存されます.これは、永遠に変更されないため、安全です.
5.非RAMメモリ.データがプログラムの外に完全に存在する場合、プログラムの制御を受けず、プログラムが実行されていない場合にも存在することができます.2つの基本的な例は、ストリームオブジェクトと永続化オブジェクトです.ストリームオブジェクトでは、オブジェクトはバイトストリームに変換され、通常は別のマシンに送信されます.永続化オブジェクトでは、オブジェクトがディスクに格納されるため、プログラムが終了しても独自の状態を維持できます.この記憶方式のテクニックは,オブジェクトを他のメディアに格納できるものに変換することである.必要に応じて、通常のRAMベースのオブジェクトに復元することができる.Javaは、JDBCやHibernateのようなメカニズムでは、データベースに格納されたオブジェクト情報の読み取りや実行がより複雑になる軽量レベルの永続化をサポートします.
Javaの基本タイプ
プログラム設計では、特別な扱いが必要な一連のタイプがよく使用されます.それらを「基本」のタイプと考えることができます.特別に扱うのは、newがオブジェクトを「スタック」に格納するため、newでオブジェクト、特に小さくて簡単な変数を作成するのは、あまり効果的ではないことが多いからです.そのため、Javaはこれらのタイプについて、CとC++と同じ方法を採用しています.すなわちnewで変数を作成するのではなく、参照ではない「自動」変数を作成します.この変数は「値」を直接格納し、スタックに配置するので、より効率的です.
Javaの配列
配列オブジェクトを作成すると、実際には参照配列が作成され、各参照は自動的に特定の値に初期化され、その値は独自のキーワード---nullを持つ.Javaがnullを見ると、この参照はまだオブジェクトを指していないことがわかります.
クラスの基本メンバーのデフォルト
変数がクラスのメンバーとして使用される場合、Javaは、基本タイプのメンバー変数が初期化され、プログラムエラーが発生しないように、デフォルト値が与えられていることを確認します.
しかし、上記の初期化を保証する方法は、「ローカル変数」(クラス以外のフィールド)には適用されません.
参照によるオブジェクトの操作
各プログラミング言語には、メモリ内の要素を操作する方法があります.プログラマは、処理するデータのタイプに注意しなければならない場合があります.要素を直接操作するか、特殊な文法に基づく間接表現(CやC++のポインタなど)でオブジェクトを操作します.
これらはすべてJavaで簡略化されています.すべてが対象とされるため、単一の固定的な文法を採用することができます.すべてがオブジェクトと見なされますが、操作された識別子は実際にはオブジェクトの「参照」(Reference)です.
Stringリファレンスを作成するには、次の手順に従います.
String s;
ここで作成されるのは参照だけで、オブジェクトではありません.
リファレンスが作成されると、新しいオブジェクトに関連付けることができます.この目的は通常newオペレータで実現される.新キーワードは「新しいオブジェクトをください」という意味なので、前の例では次のようにできます.
String s = new String("asd");
「新しい文字列をください」だけでなく、初期文字列を提供することで、このStringをどのように生成するかについての情報が与えられます.
オブジェクトはどこに保存されますか?
1、レジスタ.これは、他のストレージとは異なる場所であるプロセッサの内部にあるため、最も速いストレージ領域です.しかしレジスタの数は極めて限られているため,レジスタは必要に応じて割り当てられる.直接制御したり、プログラムにレジスタの存在の兆候を感じたりすることはできません.
2、スタック.RAM経由(ランダムアクセスメモリ)にありますが、スタックポインタでプロセッサから直接サポートを受けることができます.スタックポインタが下に移動すると、新しいメモリが割り当てられます.上に移動すると、メモリが解放されます.これはレジスタに次ぐ効率的な割り当て格納方法である.プログラムを作成するとき、Javaシステムはスタック内のすべてのアイテムに格納されているライフサイクルを知っていて、スタックポインタを上下に移動する必要があります.この制約はプログラムの柔軟性を制限するため、一部のJavaデータはスタックに格納されます.特にオブジェクト参照ですが、Javaオブジェクトは格納されません.
3、山.すべてのJavaオブジェクトを格納するための汎用メモリプール(RAM領域にも存在する).スタックがスタックと異なる利点は、コンパイラが格納したデータがスタック内でどのくらい生存しているかを知る必要がないことです.そのため、スタックにストレージを割り当てるには柔軟性があります.オブジェクトが必要な場合はnewで簡単なコードを書くだけで、このコードを実行すると自動的にスタックに格納割り当てられます.もちろん、この柔軟性のためには、スタックによるストレージ割り当てとクリーンアップは、スタックによるストレージ割り当てよりも多くの時間を要する可能性があります.
4、定数ストレージ.定数値は通常、プログラムコードの内部に直接保存されます.これは、永遠に変更されないため、安全です.
5.非RAMメモリ.データがプログラムの外に完全に存在する場合、プログラムの制御を受けず、プログラムが実行されていない場合にも存在することができます.2つの基本的な例は、ストリームオブジェクトと永続化オブジェクトです.ストリームオブジェクトでは、オブジェクトはバイトストリームに変換され、通常は別のマシンに送信されます.永続化オブジェクトでは、オブジェクトがディスクに格納されるため、プログラムが終了しても独自の状態を維持できます.この記憶方式のテクニックは,オブジェクトを他のメディアに格納できるものに変換することである.必要に応じて、通常のRAMベースのオブジェクトに復元することができる.Javaは、JDBCやHibernateのようなメカニズムでは、データベースに格納されたオブジェクト情報の読み取りや実行がより複雑になる軽量レベルの永続化をサポートします.
Javaの基本タイプ
プログラム設計では、特別な扱いが必要な一連のタイプがよく使用されます.それらを「基本」のタイプと考えることができます.特別に扱うのは、newがオブジェクトを「スタック」に格納するため、newでオブジェクト、特に小さくて簡単な変数を作成するのは、あまり効果的ではないことが多いからです.そのため、Javaはこれらのタイプについて、CとC++と同じ方法を採用しています.すなわちnewで変数を作成するのではなく、参照ではない「自動」変数を作成します.この変数は「値」を直接格納し、スタックに配置するので、より効率的です.
Javaの配列
配列オブジェクトを作成すると、実際には参照配列が作成され、各参照は自動的に特定の値に初期化され、その値は独自のキーワード---nullを持つ.Javaがnullを見ると、この参照はまだオブジェクトを指していないことがわかります.
クラスの基本メンバーのデフォルト
変数がクラスのメンバーとして使用される場合、Javaは、基本タイプのメンバー変数が初期化され、プログラムエラーが発生しないように、デフォルト値が与えられていることを確認します.
しかし、上記の初期化を保証する方法は、「ローカル変数」(クラス以外のフィールド)には適用されません.