ほとんどすべてのオペレーターは、「プリミティブ」でのみ動作できます。例外は、すべてのオブジェクトを操作する「= "、" == "、および「!=」です。さらに、文字列クラスは「+」と「+=」をサポートします。
基本タイプは、実際の数値を保存します。オブジェクトを参照する代わりに。したがって、値を割り当てると、ある場所のコンテンツが別の場所に直接コピーされます。たとえば、a = bが基本データ型に使用される場合、bの内容はaにコピーされます。 Aが変更された場合、Bはこの変更の影響をまったく受けません。 (以前のJavaプログラミングのアイデア(2)では、基本タイプがスタックに保存されていることがわかります。A= 4、スタックに4がない場合、スペースが開かれて値4を作成します。A= Bの後、Bはスタックの4を指します。影響しないb)
ただし、オブジェクトに「値を割り当てる」と状況は変わります。まず、オブジェクトを操作するときに実際に動作するものがオブジェクトへの参照であることを知っています。したがって、「オブジェクトを別のオブジェクトに割り当てる」場合、実際に「参照」をある場所から別の場所にコピーしています。つまり、C = Dがオブジェクトで使用される場合、CとDの両方がDによってのみ指摘されていたオブジェクトを指すことを意味します(両方のリモートコントロール(参照)は、テレビセット(オブジェクト)を操作および押すことができます)。
優先度:
| 優先度 | ボンディング | |
1 | 接尾辞オペレーター | []。 ()(関数呼び出し) | 左から右 |
2 | モノロジーオペレーター | ! 〜++ - +(シングルオペランド)(単一オペランド) | 右から左に |
3 | 作成する | 新しい | 左から右 |
4 | 乗算と分割 | */% | 左から右 |
5 | 追加と減算 | + - | 左から右 |
6 | シフト | << >> >>>> | 左から右 |
7 | 関係 | <<=>> = instanceof | 左から右 |
8 | 等しい | ==!= | 左から右 |
9 | ビットワイズと | & | 左から右 |
10 | ビットワイズxor | ^ | 左から右 |
11 | ビットワイズまたは | | | 左から右 |
12 | ロジックと | && | 左から右 |
13 | 論理的または | || | 左から右 |
14 | 状態 | ? : | 右から左に |
15 | 割り当て | = += - = *= /=%= ^= << = >> = >>> = | 右から左に |
(1)割り当て
メインタイプは「a = b」を使用し、BのコンテンツはAにコピーされます。Aが変更された場合、Bは変更の影響をまったく受けません。
オブジェクトが「割り当てられた」と状況は変わります。オブジェクトを操作するとき、私たちが実際に操作しているのはそのハンドルです。したがって、あるオブジェクトから別のオブジェクトに値を割り当てると、実際にある場所から別の場所にハンドルをコピーしています。これは、「c = d」がオブジェクトに使用される場合、cとdは最終的にdのみを指すオブジェクトを指すことを意味します。
短いS1 = 1; S1 = S1 + 1; (S1+1操作の結果はINTタイプであり、キャストタイプが必要です)
短いS1 = 1; S1 += 1; (正しくコンパイルできます) +=変換の問題なしにオペレーター
(2)算術演算子
Javaの算術演算子:プラス記号(+)、マイナス記号( - )、分割記号(/)、乗算記号(*)、および弾性(%、整数部門から残りを取得)。整数部門は、持ち運びではなく、小数を直接削減します。
(3)自動増分と減少
プレインクリメントおよびプレインクリメント(++ Aまたは-Aなど)の場合、操作が最初に実行され、値が生成されます。
ポストインクリメントおよびポストインクリメント(A ++やA-など)の場合、値が生成され、操作が実行されます。
(4)リレーショナル演算子
リレーショナル演算子には<、>、<=、> =、= =、!=
すべての組み込みデータ型に適用するのと等しくないが、他の比較はブール型には適用されません。
2つのオブジェクトの実際のコンテンツが同じかどうかを比較するには、すべてのオブジェクトに適用される特別な方法Equals()を使用する必要があります。
equals()メソッドは「メインタイプ」には適用されません。これらのタイプは、==および!=で直接使用できます。
equals()のデフォルトは比較ハンドルです。したがって、新しいクラスでequals()を変更しない限り、私たちが望む動作を示すことは不可能です
ほとんどのJavaクラスライブラリはequals()を実装するため、実際にはハンドルではなくオブジェクトの内容を比較します。
= =そして! =オブジェクトの実際のコンテンツではなく、オブジェクトハンドルを比較します
(5)論理演算子
論理演算子&&、||、!ブール値を生成できます
&&&は論理演算子 "および"として使用できますが、&&は「短絡および」です。計算するとき、シンボルの前の式の値が最初に判断されます。式全体の値を決定できる場合、シンボル後の式の動作は実行されません。
さらに、ビットオペレーターとして使用できます
(6)ビットワイズ演算子
ビットワイズとオペレーター(&)
ビットワイズまたは演算子(|)
bitwise xor(^、xor)
Bitise Not(〜、「非」演算子とも呼ばれます)は、単位演算子に属し、入力ビットとは反対の値を生成します。
(7)シフト演算子
左シフト演算子(<<)は、操作オブジェクトを左に移動して、オペレーターの右側に指定されたビット数に移動できます(低ビットで補数0)。
署名された右シフト演算子(>>)は、オペレーターの右側に指定されたビットの数を右側に動作させます。署名された右シフト演算子はサインエクステンションを使用します。値が正の場合、0がハイ位置に挿入されます。値が負の場合、1は高い位置に挿入されます
「ゼロエクステンション」を使用する符号なし右シフト演算子(>>>):ポジティブまたはネガティブに関係なく、0を高位置に挿入します
(8)トリプルIF-ELSE演算子
ブール表現?値0:値1「ボレン式」の結果が真であり、「値0」が計算され、そうでなければ「値1」が計算されます
(9)文字列演算子 +
int x = 0、y = 1、z = 2; system.out.println( "out:" + x + y + z);
ここで、JavaコンパイラはX、Y、Zを最初に一緒に追加するのではなく、文字列形式に変換します
「文字列 +」を使用する場合、式が文字列で始まる場合、後続のすべての操作オブジェクトは文字列に変換されます。
文字列を「プラス」サイン(以前のバージョンのJavaを使用して)に接続するには、最初の要素が文字列であることを確認してください
(10)モデリング(CAST)演算子
「変換の狭窄」などの操作(より多くの情報に対応し、それらをINT To Shortなどの小さなタイプに変換できるデータ型)の場合、情報の損失のリスクに直面する可能性があります。この時点で、コンパイラは私たちに明確な形を作るように強制します
「変換の拡大」の場合、新しいタイプは間違いなく元の種類の情報に対応し、情報の損失を引き起こさないため、明示的に形作る必要はありません。
ブール値(ボレアン)は、スタイリング処理をまったく許可しておらず、他のメインタイプを一緒に形作ることができます。
フロートまたは二重値を整数値に形作った後、小数部は常にキャリーなしで「切り取られ」ます。
Math.Round(11.5)はいくら等しくなりますか? Math.Round(-11.5)はいくら等しくなりますか?
Math.round(11.5)==12 Math.round(-11.5)==-11
ラウンドメソッドは、パラメーターに最も近い長い整数を返します。パラメーターに1/2を追加した後、その床を見つけます。
要約します
上記は、Javaオペレーターとその優先事項について議論しているこの記事に関するものであり、すべての人に役立つことを願っています。興味のある友達は引き続きこのサイトを参照できます:
マルチモード文字列マッチングアルゴリズムの原則とJava実装コード
RXJAVA関数演算子の使用方法の詳細な説明
Javaでの文字列アレイ、文字列、形成の間の変換に関する簡単な議論
欠点がある場合は、それを指摘するためにメッセージを残してください。このサイトへのご支援をありがとうございました!