この章で要約することはあまりありませんが、忘れがちな詳細に注意する必要があります。
第 3 章
目次:
3.1 より単純な print ステートメント
3.2 Java 演算子の使用
3.3 優先順位
3.4 代入
3.5 算術演算子
3.6 自動インクリメントとデクリメント
3.
3.8 論理演算子
3.9 直接定数
3.10 ビット演算子
3.11 シフト演算子
3.12 三項演算子if-else
3.13 文字列演算子 + および +=
3.14 演算子使用時のよくある間違い
3.15 型変換演算子
3.16 Java には sizeof がありません
3.17 演算子の概要
3.18まとめ
3.2 Java 演算子の使用
="、"=="、および "== "すべてのオブジェクトを操作する機能。
3.4 代入
オブジェクトが c=d を使用する場合、c と d の両方は、もともと d のみが指していたオブジェクトを指します。
t1 = t2 (エイリアス現象) の場合、t1 と t2 には同じ参照が含まれており、同じオブジェクトを指しているため、t1 を変更すると t2 も変更されます。
2 つのオブジェクトを互いに独立させたい場合は、 t1.level = t2.level; を実行できます。
3.6 自動インクリメントとデクリメント
a = 15,++a、--a: System.out.printf("~output:" + a++); //~ output:15a = 15,a++、a--: System.out.printf("~output:" + ++a); // ~ output:16
3.7 関係演算子
上記の 2 つの Integer オブジェクトは同じ内容を持ちますが、参照が異なり、== と != はオブジェクトの参照を比較します (基本型は値を直接比較し、引用なし)。オブジェクトの内容を比較する場合は、equals() メソッドを使用します。
注: equals() メソッドのデフォルトの動作は参照を比較することであるため、新しいクラスで equals() メソッドをオーバーライドする必要があります。そうしないと、必要な効果は発生しません。ほとんどの Java クラス ライブラリは、オブジェクトの内容を比較できるように、equals() メソッドをオーバーライドします。例は次のとおりです。
3.9 直接定数
16 進数: プレフィックス 0x、8 進数: プレフィックス 0、2 進数には直接定数の表現はありません。
指数の数え方: 1.39e-43fは1.39 * 10-43を意味します eは「10の累乗」を意味します。
3.10 ビット演算子
ビット演算子のオペランドは、TV セットトップ ボックスに埋め込まれる Java の元の設計であるため、この値は低くなります。 -レベルの操作は引き続き保持されます。ただし、演算子はほとんど使用されません。
& および |or ^XOR ~not、ブール型が単一ビット値として扱われる場合、論理 NOT との混乱を避けるために、非ビット単位 (~) を実行することはできません。ビット演算子は論理演算子に似ていますが、短絡効果はありません。
3.11 シフト演算子
オペランドはバイナリ「ビット」であり、整数型(ブール型ではない)の処理にのみ使用できます。
負の数値は、最初に 2 の補数に変換する必要があり、その後、演算は導入されません。
左シフト ( の上位ビットの n 0 は破棄され、最下位ビットは n 0 で埋められます)<<:
11 の 2 進形式は 1011 11< です。 <2 は 101100 なので、11<<2 = 44 は整数 11*2 と同等ですn
右シフト (下位ビットの n 個の数値がシフトアウトされ、上位ビットに n 個のゼロが追加されます) bits)>>:
11 のバイナリ形式は 1011 で、11>>2 の後のバイナリ形式は 0010 なので、11>>2 = 2 は整数 11/2 と同等です。 n
符号なし右シフト演算子 >> )、得られる結果は正しくない可能性があります。これらは最初に int 型に変換され、次に右シフトされてから切り捨てられ、元の型に代入されます。例は次のとおりです。
アセンブリレベルでのビット演算の実行速度は非常に速いので、インタビュー中に次のような質問がされるかもしれません: Java で 2 の 8 を計算する最も効率的な方法は何ですか? 答え: 2
この
コードは直感的ではありません。
3.16 Java には sizeof がありません Java は sizeof() 演算子を必要としません。これは、すべてのデータ型がすべてのマシンで同じサイズを持ち、「移植」の問題を考慮する必要がないためです。 概要: 簡単すぎて頻繁に使用する知識ポイントはノートに載っていないので、すべて出てきたら本を読み直したほうが良いでしょう。 今日、とあるソフトでこんなクレームを見かけました
それを見たとき、すぐに二つ目のことを思い出しましたJavaの章プログラミングのアイデア: 変数がクラスのメンバーとして使用される場合、Java は、基本型のメンバー変数が初期化されることを保証するために、そのデフォルト値が指定されることのみを保証します (初期値は初期化されない可能性があります)。必要に応じて、自分で初期化するのが最善です)。デフォルトの初期化メソッドは、特定のクラスではないフィールド変数には適用されないことに注意してください。初期化を忘れた場合、Java はコンパイル中にエラーを返します。 スタック: 汎用 RAM (ランダム アクセス レジスタ) に配置され、Java コンパイラーは、スタック ポインタ に格納されているすべてのデータのサイズ とライフ サイクルを認識している必要があります。 " は下に移動し、上に移動するとメモリが解放されます。これは速度の点でレジスタに次いで 2 番目であり、基本的なデータ型と参照が格納されます。 ローカル変数は実行時にスタックに割り当てられ、その量は大きく、ライフサイクルが短いため、仮想マシンが各ローカル変数を初期化すると大量のオーバーヘッドが発生しますが、変数はそうではありません。デフォルト値に初期化されているため、使用するのは危険です。
以上がJavaプログラミング思考まとめノートの第3章を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。