Javaの基本文法 Niu Ke

ナビゲーション

DOSコマンド

Redisを起動する

redis-server.exe redis.windows.conf

Java の概要

  1. Java は、コンパイル時および実行時にプログラムのエラーをチェックすることに特化しています。
  2. Java 仮想マシンはクロスプラットフォーム インターフェイスを実装します。
  3. 型チェックは、開発の初期段階で発生する多くの間違いを検出するのに役立ちます。
  4. Java 独自のメモリ操作により、メモリ エラーの可能性が軽減されます。
  5. Java は真の配列も実装し、データを上書きする可能性を回避します。
  6. データの上書きの種類ではなく、データの上書きを回避することが可能であることに注意してください。

メモリー

  1. jvm ヒープは、新世代 (通常は 1 つの Eden エリアと 2 つの Survivor エリア) と旧世代 (古いエリア) に分割されます。
  2. 定数プールは PermGen (メソッド領域) に属します

![](https://img-blog.csdnimg.cn/img_convert/68735d1f92bdd918d67bc1000ba68d7a.png#clientId=u7db6f9ff-c2c2-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=u6b9cfc0d&margin=[object]オブジェクト]&originHeight=546&originWidth= 1108&originalType=url&ratio=1&rotation=0&showTitle=false&status=done&style=none&taskId=uef9fd9ec-e0ad-47cc-97bc-086909e6b74&title=)

GC 回復メカニズム

GC メカニズムの利点は、システムが参照されなくなったオブジェクトを自動的に処理し、CPU がアイドル状態またはストレージ領域が不十分なときにクリーンアップするため、プログラマがメモリ管理メカニズムを理解する必要がないことです。プログラミング時にプログラマがメモリを管理する必要がないため、プログラミングの効率が向上します。

キーワード

識別子の規則

規則 [1] Java 識別子は、数字、文字、アンダースコア "_" または " " 記号、および U Unicode 文字セットのみで構成できます。[2] Java 識別子は、文字、アンダースコア " " または " " 記号、および Unicode 文字セットで構成する必要があります構成 [2] Java 識別子は文字、アンダースコア「_」または「」で始まる必要があります。シンボルとUnicode文字セット[ 2 ] Java識別子は文字アンダースコア始まる必要があります[
3] Java 識別子には Java キーワード、予約語 (const、goto)、およびリテラル値 (true、false、null) を使用することはできません[ 4
] Java 識別子は大文字と小文字が区別されますはい、大文字と小文字が区別されます

  1. 識別子の要素は、文字 (a ~ z、A ~ Z)、数字 (0 ~ 9)、アンダースコア (_)、およびドル記号 ($) です。
  2. 識別子を数字で始めることはできません。
  3. Java 識別子では大文字と小文字が厳密に区別されます。
  4. 識別子は任意の長さにすることができます。
  5. キーワードおよび null、true、false はカスタム識別子には使用できません

最後の

最後の

  1. Final キーワードは、メンバー変数、ローカル変数、メソッド、クラスに使用できます。
  2. 最終メンバー変数は、コンストラクターで宣言または初期化するときに初期化する必要があります。そうしないと、コンパイル エラーが報告されます。
  3. 最終変数を再割り当てすることはできません。
  4. ローカル変数には、宣言時に値を割り当てる必要があります。
  5. 匿名クラス内のすべての変数は、final 変数である必要があります。
  6. Final メソッドはオーバーライドできません。
  7. 最終クラスは継承できません。
  8. 宣言時に初期化されていない最終変数を空最終変数(空白最終変数)と呼び、コンストラクタ内で初期化するか、this()を呼び出して初期化する必要があります。これを行わないと、コンパイラは「最終変数 (変数名) を初期化する必要があります」というエラーを報告します。
  9. StringBuilder、StringBuffer、および String はすべて最終的なものです。

揮発性の

  • 注文の並べ替えは無効になっています
  • この変数を操作するさまざまなスレッドの可視性を保証します。つまり、スレッドが変数値を変更すると、この新しい値は他のスレッドからすぐに可視になります。
  • アトミック性は保証されていません (スレッド安全ではありません)

ノート

識別子の命名規則

リテラルと定数

会話

基本タイプ

8 つの基本データ型

byte、char、short、int、long、float、double、boolean

整数

ルール① いかなる場合でも、Integer と新しい Integer は等しくなりません。アンボックス処理は行わない
② 両方とも新しい整数ではない 数値が -128 から 127 までの場合は true、それ以外の場合は false
java が Integer i2 = 128 をコンパイルすると、 -> Integer に変換されますi2 = Integer.valueOf(128); そして、valueOf() 関数は、-128 から 127 までの数値をキャッシュします
③ どちらも新しい、どちらも false
④ Integer であるため、int と integer (新しいかどうかに関係なく) の比は true です自動的に int にアンボックス化されてから比較されます

型変換

ルール

規則 1. 演算に参加するデータ型が異なる場合は、同じ型に変換してから演算を実行します。
2. 精度が低下しないように、データ長が長くなる方向に変換します。例えば、int型とlong型の演算の場合は、int型の値をlong型に変換してから演算を行います。
3. 浮動小数点演算はすべて倍精度で行われますので、式中に単精度浮動小数点演算のみが含まれる場合でも、演算前に double 型に変換する必要があります。
4. char 型と short 型が演算に参加する場合、まず int 型に変換する必要があります。
5. 代入演算において、代入番号の両側のデータ型が異なる場合、右側の式の型を左側の変数の型に変換する必要があります。右側の式のデータ型の長さが左側の式より長い場合、データの一部が失われ、精度が低下します。
Java 式変換ルールは、低位から高位に変換します。

  1. すべての byte、short、および char 値は int にプロモートされます。
  2. いずれかのオペランドがlong型の場合、計算結果はlong型になります。
  3. いずれかのオペランドが float 型の場合、計算結果は float 型になります。
  4. いずれかのオペランドが double 型の場合、計算結果は double 型になります。
  5. fianl で変更された変数は自動的に型を変更するわけではなく、最後の 2 つの変更を一緒に操作すると、結果は左側の変数の型に従って変換されます。

  1. == は、基本データ型の変数に適用される場合は、格納されている「値」が等しいかどうかを直接比較し、参照型の変数に適用される場合は、ポイントされたオブジェクトのアドレスを比較します。
  2. String クラスは、指定された文字列オブジェクトに格納されている文字列が等しいかどうかを比較するために、equals メソッドを書き換えます。
  3. 等号はプリミティブ データ型の変数には適用できません。
  4. 文字列への任意の文字の追加は文字列ですが、順序があり、文字列の前の文字は元の形式で追加され、文字列の後ろの文字は文字列に従って追加されます。

変数

  1. ++y が最初に追加されてから実行され、y++ が最初に計算されてから追加されます。
  2. スコープ規則に従って、関数内で定義された変数は関数内でのみ参照できます。
  3. 関数で定義された変数は、プログラムの実行全体にわたって有効です。

演算子と式

優れたクラスのオペレーター

算術演算子と論理演算子

演算子「>>」は算術右シフトを実行し、最上位ビットを使用してシフト後の左側の空いた位置を埋めます。
右シフトの結果は次のようになります。ビット シフトごとに、最初のオペランドが 2 で 1 回除算され、シフトの数は 2 番目のオペランドによって決まります。
論理右シフト演算子または符号なし右シフト演算子">>>" はビットに対してのみ動作し、算術的な意味はありません。左側の空のビットを 0 で埋めます。
算術右シフトは元の数値の符号を変更しませんが、論理右シフトはこれを保証しません。
シフト演算子は右側のオペランドを減らします。左側のオペランドが int 型の場合、右側はモジュロ 32 になり、左側が long 型の場合、右側はモジュロ 64 になります。

制御文

スイッチ

  1. Java7 より前では、switch は byte、short、char、int、またはそれらに対応するカプセル化クラスと Enum 型のみをサポートできました。Java7 では、ついに待望の String サポートが追加されました。
  2. switch ステートメントでは、式の値を null にすることはできません。null にしないと、実行時に NullPointerException がスローされます。case 句に null を使用することはできません。使用しないとコンパイル エラーが発生します。

ループ文

方法

Java メモリ パーティション

配列

  1. 配列を定義する場合、等号の左側に数値を表示することはできません。つまり、配列のサイズに関係なく、左側に数値を表示することはできません。
    配列の最初のものは、なぜ左側にはサイズがマークされていないのに、右側にはサイズがマークされる必要があるのでしょうか?
    まず、どのクラスにも属さないオブジェクトが配列され、実行時にjvmによってヒープ上に作成・継承され、同時にlength属性が付加されます。配列オブジェクトによって占有されるメモリはヒープ上にあるため、宣言時に jvm にそれ自体のサイズを明確に伝える必要があります。これは割り当てに便利です。また、配列オブジェクトの参照はスタック内にあるため、次のようにする必要はありません。宣言時に左側にサイズをマークして、次のように記述します。 2 つの括弧は、この参照がヒープ内の 2 次元配列を指すことを示します。
    2 つ目は、右側の配列が行のサイズを宣言せずに、数行しか宣言できないのはなぜでしょうか。
    おそらく jvm は、各行の拡張を容易にするために、操作中に行数に応じて対応する拡張可能スペースを割り当てます。実はC言語と同じように理解でき、行は一種の参照であり、行の先頭のアドレスは1次元の配列を表します。2 番目の質問を補足させていただきます。

おすすめ

転載: blog.csdn.net/AzirBoDa/article/details/125784904