Java の基本 (超詳細)


Java 言語と C/C++ は、多くの構文 (さまざまな制御ステートメントなど) において類似または同一であるため、ここでは Java と C ファミリ間で異なる言語機能のみをリストします。

データ型
基本データ型
Java には 8 つの「基本データ型」があります。

型 スペース 範囲 備考
byte 1 byte -128 — 127    
short 2 bytes -2^15 — 2^15 - 1    
int 4 bytes -2^31 — 2^31 - 1    
long 8 bytes -2^63 — 2 ^63 - 1定数を宣言するには、「L」を追加します。
float 4 バイト - 定数を宣言するには、「F」
double を追加します。 8 バイト - 浮動小数点数のデフォルトのタイプ
char 16 バイト UTF-16    
boolean - false または true は使用できません 0 および代わりにゼロ以外の値を指定します。
参照型
クラス、インターフェイス、配列はすべて参照型です。

入出力


Javaに入力される
標準入力ストリームは、InputStream オブジェクトであり、これを読み取る一般的な方法が 2 つあります。

文字ストリームを読み取るメソッドを使用して、System.in を BufferedReader に読み取ります。

  BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
  stdin.readLine() // <= ユーザーが入力した文字列を取得
java.util.Scanner を使用して System.in をカプセル化します。

  Scanner stdin = new Scanner(System.in);
  stdin.nextLine() // <= ユーザーが入力した文字列を取得

出力
System.out.print() は出力をラップしません。
System.out.println() 改行出力。
System.out.printf() 形式の出力。構文は C 標準ライブラリの printf() と同じです。

配列: Java の「配列」の長さは固定されており、一度作成するとそれ以上長くすることはできません。

宣言と作成
配列を作成するときは、長さを指定するか、すべての項目を指定します。

int[] arr = new int[3]; // 長さを指定します
double[] anotherArray = new double[]{ 2.1, 4.5, 4.2 }; // 項目の
長さとインデックスを指定します
arr.length を使用して長さを取得できます配列。配列の添え字は 0 で始まり、長さ - 1 で終わります。

配列は参照型です。
いわゆる「参照型」は、C ファミリでは「ポインタ」として理解できます。次のコードは、「参照」の性質を説明しています。

int[] arr = new int[]{ 1, 4, 2, 5 };
System.out.println(arr[2]); // print 2
arr = new int[]{ 7, 3, 6, 9 } ; // arr は新しい配列を指すようになり、古い配列は JVM によって再利用されます
System.out.println(arr[2]); // print 6

配列内の参照型
次のコードの出力を考えてみましょう。

String[] name = { "HIT", "SZ", "C++" };
文字列 s = 名前[2];
名前[2] = "Java";
System.out.println(name[2]);
System.out.println;

結果は次のとおりです。

Java
C++

「多次元」配列
「多次元配列」などというものは存在せず、本質的には「配列の配列」です。例えば

int[][] arr = new int[5][];
は長さ 5 の「配列」配列ですが、その中の 5 つの配列はまだ初期化されていないため、長さが指定されていない可能性があります。もちろん、次のように定義内のすべての項目を指定することもできます。

int[][] arr = new int[][]{ { 1, 4, 2}, {2, 1}, {9, 1, 5, 6} }; 明らかに、多次元配列の各行には同じ長さになるように

異常な


Java の例外キャプチャ構造は、try-catch-finally です。その中で捕まえてやっと1匹だけ出現することができます。

try {         //何かをする} catch (/**例外**/) {     //例外が発生したときに行う何か}finally {     //例外が発生するかどうかに関係なく行う何か}






クラスとオブジェクト


オブジェクト
定義: 明確に定義された状態と動作を持つ客観的に存在する具体的なエンティティ
特徴: 識別子、属性、操作
属性: オブジェクトに関連付けられた変数、オブジェクトの静的プロパティを記述する
操作: ペアに関連付けられた関数、オブジェクト特性のダイナミクスを記述する
 

クラス
とオブジェクト
クラスはオブジェクトの抽象化であり、オブジェクトを作成するためのテンプレートです。
オブジェクトはクラスの具体的なインスタンスです。
同じクラスで複数のオブジェクトを定義できます。
 

2 つの
クラスの比較 クラスは静的で、プログラム設計時に定義されます。
オブジェクトは動的で、プログラム実行中に作成、変更、削除できます。クラスの
構築
クラスのアクセス権:
public class Person {         private String name; // private: このクラスのみがアクセスできます。         protected int age; // protected: パッケージ外からはアクセスできません。ただし、サブクラスがパッケージの外にある場合もアクセスできます。         int id; // フレンドリー: パッケージ外からはアクセスできません。サブクラスがパッケージの外にある場合、アクセスできません。          public boolean 性別; // public: 誰でもアクセス可能



        public Person(String name, int age) {                 this.name = 名前;                 this.age = 年齢;                 ID = 1;         }



        public Person(文字列名) {                 this(name, 22);         } }



静的クラス
静的メンバーは、特定のオブジェクトではなくクラスに属します。

ロード時間

静的メンバーには、クラスのロード時にアドレス空間とメソッドのエントリ アドレスが静的に割り当てられます。
静的プロパティは、クラスが最初にロードされた場合にのみ初期化されます。

非静的オブジェクトは作成時に初期化されます。インスタンスには複数のコピーがあり、各オブジェクトのコピーは相互に影響しません。静的オブジェクトはすべてのオブジェクトで共有され、メモリ内にはコピーが 1 つだけ存在します。
静的
属性はグローバル属性であり、クラス名 Access を通じて直接渡すことができるため、クラス属性とも呼ばれます。

通話制限

静的メソッドは非静的メソッドにアクセスできません: 呼び出しにアクセスするには非静的オブジェクトをインスタンス化する必要があります 非静的メソッドは
静的メソッドにアクセスできます:クラス名を通じて
静的ブロックにアクセスします

クラス内のどこにでも配置でき、クラス内に複数の静的ブロックを含めることができます。

文法:

 class Person {          static {              totalNum = 10000;              System.out.println("static block run!");          }  }ライフサイクル: クラスがロードされたときに実行され、1 回だけ実行されます





使用法: 静的変数を初期化し、静的メソッドを呼び出すために使用されます。

静的はオブジェクト指向の機能を破壊しますか?

静的は、特定のオブジェクトではなくクラスに属します
。ある程度のグローバル性があります。初期化時にメモリにロードされ、すべてのオブジェクトにアクセス権があります。クラスのカプセル化が維持されます

おすすめ

転載: blog.csdn.net/qq_62940532/article/details/130343899