JAVAプログラミング思想シリーズ・第二章.すべて対象
Thinking in javaシリーズを開始し,この章ではオブジェクトと引用を中心にJAVA言語を基礎的に解釈した.このシリーズのブログは、本書の既存のディレクトリに基づいて、その内容を概括し、できるだけ核心的な知識点を解釈します.
1.参照でオブジェクトを操作する
JAVA言語はオブジェクト向けにプログラミングされており、システム全体がオブジェクトと参照の2つの部分から構成されています.では、対象とは何でしょうか.何が引用ですか.
まず、String s=new String(「abc」);ATypeName a = new ATypeName();//ATypeNameはクラス名です.上記の文は、文字列変数を定義し、オブジェクトをインスタンス化することです.JAVAでもC言語でも、データを使用したり、動作をしたりするには、定義、変数を定義したり、インスタンス化したりする必要があります(既存のクラスをオブジェクト定義します).上記の例では、String sのsは作成された参照であり、「=」の反対側のnewコンテンツこそオブジェクトを作成する.同様に、インスタンス化されたオブジェクトに対しても、aは単なる参照であり、new後(=String s=「abc」==を使用しなくてもよいが、両者に違いがある)だけがオブジェクトを作成したものである.
2.オブジェクトにメモリを割り当てる
変数またはインスタンス化方法を定義するには、そのオブジェクトにメモリ領域を割り当てる必要があることを知っています.JAVAでは、すべてのオブジェクトがスタックに格納されます.上記の文では、new操作を行わずに==String sだけです.==の場合、実質的に変数s自体に参照可能なオブジェクトはありません.そうすると、実行時に参照オブジェクトがないためコンパイラがエラーを報告します.
3.基本データ型
基本タイプ
サイズ
パッキンタイプ
boolean
-
Boolean
char
16-bits
Character
byte
8-bits
Byte
short
16-bits
Short
int
32-bits
Integer
long
64-bits
Long
float
32-bits
Float
double
64-bits
Double
void
-
Void
前節ではnew初期化を行わないと変数sの定義が実行時にエラーとなると述べていますが、クラスにいる場合(すべてのコードの内容はクラスにある必要がありますが、クラスではメソッドを定義することもできます.メソッドの変数はローカル変数と呼ばれ、このシナリオの範囲内ではありません).これらのベース・タイプで定義された変数は、初期化せずにデフォルト値を持つことができます.この場合、コンパイラはエラーを報告しません.また、このような変数はnewを使用して初期化しなくても参照ではなく、スタックに直接値を割り当てて格納されます.パッケージタイプはnew初期化が必要で、他のタイプのデータと同じように定義されます.
上記のすべての数値タイプには、符号なしではなく正負の記号があります.
booleanタイプには明確な空間サイズはありません.trueまたはfalseの2つの値として定義できます.
さらに、高精度計算に使用されるクラスは、BigIntegerとBigDecimalの2つであり、2つはパッケージクラスの範疇に属しているが、具体的には対応していない基本タイプであり、この2つのクラスには、Int、floatと同じ方法で動作し、任意の精度の整数と定点数をサポートしている.
4.作用域
このようなコードでは、変数xとyはそれぞれ自分が定義したカッコでしか使用できません.カッコが終わると、この2つの変数は呼び出すことができません.newによって作成されたオブジェクトはjavaのゴミ回収器によって自動的に回収されるまで保持することができます.これにより、メモリの漏洩の問題が解消されます.
5.新規データ型の作成:クラス
JAVAでは、すべてが対象である以上、何がある対象の外観や行為を決定しているのでしょうか.classクラスです.
キーワードclassは、次のようなクラスを作成するために使用されます.
これが最初にオブジェクトをインスタンス化した操作です.ATypeNameはクラス名で、classキーでクラスATypeNameを作成します.カッコの内容はクラス体で、メンバー変数(フィールドとも呼ばれます)とメンバーメソッドを定義して、外観と動作を実現します.クラスはテンプレートに相当し、インスタンス化はこのテンプレートに対して真のオブジェクトを再刻することです.ただし、オブジェクトをインスタンス化する前に、クラスATypeNameのみを作成しました.後で説明するstatic静的変数と静的メソッド以外のすべてのメンバー変数およびメンバーメソッドには、ストレージ領域が割り当てられていません.あるいは、新しいオブジェクト(複数のオブジェクトをインスタンス化できる)をインスタンス化するたびに、newが初期化された後に、そのオブジェクトに必要なメンバー変数とメンバーメソッドにスペースを割り当ててスタックに格納されます.
aとbは、2つの異なるインスタンス化オブジェクト(実質的には、前に述べた2つの異なるオブジェクトの参照であり、名前に混同されない)であり、それらの内容は、独自の領域に単独で格納される.
オブジェクトの作成後にクラス内のメンバー変数またはメンバーメソッドを参照する場合は、オブジェクト名をインスタンス化した後に句点**.**を追加し、元のクラスのメンバー変数またはメンバーメソッドの名前を接続する必要があります.また、インスタンス化の原則に基づいて、aは新しい変数とも言えるが、この変数のタイプはクラスであり、aもクラスの中でメンバー変数に属している場合、このクラスがインスタンス化オブジェクトの際にa.iを参照するには、a.iを全体として新しいオブジェクト名の句点の後に置く必要がある.
6.メソッド、パラメータおよび戻り値
戻り値
クラスには2つのデータ要素があり、1つはメンバー変数であり、具体的に説明しています.もう1つは、メンバーメソッドです.JAVAのメソッドはC言語では関数と呼ばれ,いずれも具体的な動作である.
パラメータを持たずにメソッドf()があり、戻りタイプはintであると仮定する.aという名前のオブジェクトがある場合は、以下のようにf()を呼び出すことができます.
戻り値タイプは、xのタイプと互換性がある必要があります(すなわち、容量が大きくても小さくても、同じ整数または浮動小数点).
このような呼び出し方法の動作は、通常、オブジェクトにメッセージを送信することと呼ばれ、上述したように、メッセージはf()であり、オブジェクトはaである.
パラメータリスト
1つの方法は何を通じてその独立性を確定しますか?名前と考えられるかもしれませんが、JAVAのメソッドはメソッド名とパラメータリストで一意にメソッドを識別していることに注意してください.
1つのクラスには少なくとも1つのコンストラクションメソッドがあり、コンストラクションメソッドはクラス名と同じでなければなりません.複数のコンストラクションメソッドの間でパラメータリストで区別されます.つまり、コンストラクションメソッドを呼び出すと、コンパイラは自動的に入力したパラメータのタイプと数に基づいて適切なコンストラクションメソッドを選択します.コンストラクションメソッドをカスタマイズしていない場合は、コンパイラは、クラスのデフォルトの構築方法を自動的に提供します.
7.staticキーワードとimportインポート
static
各オブジェクトには独自のストレージ領域があり、そのデータコンテンツはインスタンス化された後にのみ割り当てられることが分かったばかりです.では、使用するデータ要素がインスタンス化オブジェクトを必要としない場合はどうすればいいですか?
この場合staticキーワードを使用します.クラスに静的変数または静的メソッドを作成できます.このデータ要素はクラス定義後に空間が割り当てられます.インスタンス化オブジェクトを作成しなくてもクラス名.変数名またはクラス名.メソッド名で静的変数または静的メソッドを直接呼び出すことができます.インスタンス化されたオブジェクトがある場合は、オブジェクト名.変数名で呼び出すこともできますが、区別のためには推奨されません.また、クラスのすべての静的メソッドと静的変数は一意であり、これは、インスタンス化されたオブジェクトがいくつ作成されても、すべての静的メソッドと静的変数が共有されることを意味します.だからstatic変数と方法に注意しなければなりません.
import
クラスにメンバー変数を作成して別のクラスを参照する場合、両方のクラスが同じファイルにない場合は、import文を使用してファイルの先頭部分に別のクラスをインポートして使用を続行する必要があります.そうしないと、コンパイラはこのインスタンス化オブジェクトのテンプレートがどこにあるか分からないため、エラーを報告します.ここで、特定のクラスjava.langは人為的にインポートする必要はありません.各プログラムファイルは自動的にこのクラスをインポートします.
フォーマットは次のとおりです.
8.注釈ドキュメントjavadoc
具体的なIDEA構成javadocドキュメントリファレンス:https://www.cnblogs.com/cyberniuniu/p/5021910.html 具体的なjavadocコアコンテンツの参考:https://blog.csdn.net/vbirdbest/article/details/80296136
1.参照でオブジェクトを操作する
JAVA言語はオブジェクト向けにプログラミングされており、システム全体がオブジェクトと参照の2つの部分から構成されています.では、対象とは何でしょうか.何が引用ですか.
まず、String s=new String(「abc」);ATypeName a = new ATypeName();//ATypeNameはクラス名です.上記の文は、文字列変数を定義し、オブジェクトをインスタンス化することです.JAVAでもC言語でも、データを使用したり、動作をしたりするには、定義、変数を定義したり、インスタンス化したりする必要があります(既存のクラスをオブジェクト定義します).上記の例では、String sのsは作成された参照であり、「=」の反対側のnewコンテンツこそオブジェクトを作成する.同様に、インスタンス化されたオブジェクトに対しても、aは単なる参照であり、new後(=String s=「abc」==を使用しなくてもよいが、両者に違いがある)だけがオブジェクトを作成したものである.
2.オブジェクトにメモリを割り当てる
変数またはインスタンス化方法を定義するには、そのオブジェクトにメモリ領域を割り当てる必要があることを知っています.JAVAでは、すべてのオブジェクトがスタックに格納されます.上記の文では、new操作を行わずに==String sだけです.==の場合、実質的に変数s自体に参照可能なオブジェクトはありません.そうすると、実行時に参照オブジェクトがないためコンパイラがエラーを報告します.
3.基本データ型
基本タイプ
サイズ
パッキンタイプ
boolean
-
Boolean
char
16-bits
Character
byte
8-bits
Byte
short
16-bits
Short
int
32-bits
Integer
long
64-bits
Long
float
32-bits
Float
double
64-bits
Double
void
-
Void
前節ではnew初期化を行わないと変数sの定義が実行時にエラーとなると述べていますが、クラスにいる場合(すべてのコードの内容はクラスにある必要がありますが、クラスではメソッドを定義することもできます.メソッドの変数はローカル変数と呼ばれ、このシナリオの範囲内ではありません).これらのベース・タイプで定義された変数は、初期化せずにデフォルト値を持つことができます.この場合、コンパイラはエラーを報告しません.また、このような変数はnewを使用して初期化しなくても参照ではなく、スタックに直接値を割り当てて格納されます.パッケージタイプはnew初期化が必要で、他のタイプのデータと同じように定義されます.
上記のすべての数値タイプには、符号なしではなく正負の記号があります.
booleanタイプには明確な空間サイズはありません.trueまたはfalseの2つの値として定義できます.
さらに、高精度計算に使用されるクラスは、BigIntegerとBigDecimalの2つであり、2つはパッケージクラスの範疇に属しているが、具体的には対応していない基本タイプであり、この2つのクラスには、Int、floatと同じ方法で動作し、任意の精度の整数と定点数をサポートしている.
4.作用域
{
int x = 12;
{
int y = 24;
}
}
このようなコードでは、変数xとyはそれぞれ自分が定義したカッコでしか使用できません.カッコが終わると、この2つの変数は呼び出すことができません.newによって作成されたオブジェクトはjavaのゴミ回収器によって自動的に回収されるまで保持することができます.これにより、メモリの漏洩の問題が解消されます.
5.新規データ型の作成:クラス
JAVAでは、すべてが対象である以上、何がある対象の外観や行為を決定しているのでしょうか.classクラスです.
キーワードclassは、次のようなクラスを作成するために使用されます.
class ATypeName { /* Class body */
int i;// ,
}
ATypeName a = new ATypeName();
a.i = 10;
ATypeName b = new ATypeName();
b.i = 5;
これが最初にオブジェクトをインスタンス化した操作です.ATypeNameはクラス名で、classキーでクラスATypeNameを作成します.カッコの内容はクラス体で、メンバー変数(フィールドとも呼ばれます)とメンバーメソッドを定義して、外観と動作を実現します.クラスはテンプレートに相当し、インスタンス化はこのテンプレートに対して真のオブジェクトを再刻することです.ただし、オブジェクトをインスタンス化する前に、クラスATypeNameのみを作成しました.後で説明するstatic静的変数と静的メソッド以外のすべてのメンバー変数およびメンバーメソッドには、ストレージ領域が割り当てられていません.あるいは、新しいオブジェクト(複数のオブジェクトをインスタンス化できる)をインスタンス化するたびに、newが初期化された後に、そのオブジェクトに必要なメンバー変数とメンバーメソッドにスペースを割り当ててスタックに格納されます.
aとbは、2つの異なるインスタンス化オブジェクト(実質的には、前に述べた2つの異なるオブジェクトの参照であり、名前に混同されない)であり、それらの内容は、独自の領域に単独で格納される.
オブジェクトの作成後にクラス内のメンバー変数またはメンバーメソッドを参照する場合は、オブジェクト名をインスタンス化した後に句点**.**を追加し、元のクラスのメンバー変数またはメンバーメソッドの名前を接続する必要があります.また、インスタンス化の原則に基づいて、aは新しい変数とも言えるが、この変数のタイプはクラスであり、aもクラスの中でメンバー変数に属している場合、このクラスがインスタンス化オブジェクトの際にa.iを参照するには、a.iを全体として新しいオブジェクト名の句点の後に置く必要がある.
6.メソッド、パラメータおよび戻り値
戻り値
クラスには2つのデータ要素があり、1つはメンバー変数であり、具体的に説明しています.もう1つは、メンバーメソッドです.JAVAのメソッドはC言語では関数と呼ばれ,いずれも具体的な動作である.
パラメータを持たずにメソッドf()があり、戻りタイプはintであると仮定する.aという名前のオブジェクトがある場合は、以下のようにf()を呼び出すことができます.
int x = a.f();
戻り値タイプは、xのタイプと互換性がある必要があります(すなわち、容量が大きくても小さくても、同じ整数または浮動小数点).
このような呼び出し方法の動作は、通常、オブジェクトにメッセージを送信することと呼ばれ、上述したように、メッセージはf()であり、オブジェクトはaである.
パラメータリスト
1つの方法は何を通じてその独立性を確定しますか?名前と考えられるかもしれませんが、JAVAのメソッドはメソッド名とパラメータリストで一意にメソッドを識別していることに注意してください.
1つのクラスには少なくとも1つのコンストラクションメソッドがあり、コンストラクションメソッドはクラス名と同じでなければなりません.複数のコンストラクションメソッドの間でパラメータリストで区別されます.つまり、コンストラクションメソッドを呼び出すと、コンパイラは自動的に入力したパラメータのタイプと数に基づいて適切なコンストラクションメソッドを選択します.コンストラクションメソッドをカスタマイズしていない場合は、コンパイラは、クラスのデフォルトの構築方法を自動的に提供します.
7.staticキーワードとimportインポート
static
各オブジェクトには独自のストレージ領域があり、そのデータコンテンツはインスタンス化された後にのみ割り当てられることが分かったばかりです.では、使用するデータ要素がインスタンス化オブジェクトを必要としない場合はどうすればいいですか?
この場合staticキーワードを使用します.クラスに静的変数または静的メソッドを作成できます.このデータ要素はクラス定義後に空間が割り当てられます.インスタンス化オブジェクトを作成しなくてもクラス名.変数名またはクラス名.メソッド名で静的変数または静的メソッドを直接呼び出すことができます.インスタンス化されたオブジェクトがある場合は、オブジェクト名.変数名で呼び出すこともできますが、区別のためには推奨されません.また、クラスのすべての静的メソッドと静的変数は一意であり、これは、インスタンス化されたオブジェクトがいくつ作成されても、すべての静的メソッドと静的変数が共有されることを意味します.だからstatic変数と方法に注意しなければなりません.
import
クラスにメンバー変数を作成して別のクラスを参照する場合、両方のクラスが同じファイルにない場合は、import文を使用してファイルの先頭部分に別のクラスをインポートして使用を続行する必要があります.そうしないと、コンパイラはこのインスタンス化オブジェクトのテンプレートがどこにあるか分からないため、エラーを報告します.ここで、特定のクラスjava.langは人為的にインポートする必要はありません.各プログラムファイルは自動的にこのクラスをインポートします.
フォーマットは次のとおりです.
import java.util.*;//* ,. , ;
8.注釈ドキュメントjavadoc
具体的なIDEA構成javadocドキュメントリファレンス:https://www.cnblogs.com/cyberniuniu/p/5021910.html 具体的なjavadocコアコンテンツの参考:https://blog.csdn.net/vbirdbest/article/details/80296136