Javaプログラミング思考まとめノートの第3章を詳しく解説

黄舟
リリース: 2017-07-24 14:32:39
オリジナル
1097 人が閲覧しました

この章で要約することはあまりありませんが、忘れがちな詳細に注意する必要があります。

第 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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート