倭マン's BLOG

くだらない日々の日記書いてます。 たまにプログラミング関連の記事書いてます。 書いてます。

翔泳社 SJC-P テキスト : 第2章 データ型と演算子 (演算子編)

この章で学ぶこと

SUN教科書 Javaプログラマ(SJC-P) 5.0・6.0両対応(試験番号310-055、310-065)

SUN教科書 Javaプログラマ(SJC-P) 5.0・6.0両対応(試験番号310-055、310-065)

演算子

単項演算子と算術演算子


単項演算子

インクリメント、デクリメント演算子の効果

x の初期値 コード y の最終値 x の最終値
7 y = ++x; 8 8
7 y = x++; 7 8
7 y = --x; 6 6
7 y = x--; 7 6

2項演算子・・・+ (加算), - (減算), * (乗算), / (除算), % (除算の剰余)

  • 結果の精度は型に制限される(演算結果が変数に保持できるより大きい場合は、上位ビットが破棄される)
  • 整数を整数で除算した結果は整数になる
  • 整数型 (char, byte, short, int, long) をゼロで割ると実行時に ArithmeticException が投げられる
  • 正の浮動小数点型 (float, double) をゼロで割った場合
    • 割られた数が正なら、Float.POSITIVE_INVINITY, Double.POSITIVE_INFINITY が返される(エラーは発生しない)。 System.out.println で出力すると「Infinity」が表示される
    • 割られた数が負なら、Float.NEGATIVE_INVINITY, Double.NEGATIVE_INFINITY が返される(エラーは発生しない)。 System.out.println で出力すると「-Infinity」が表示される
  • 負の浮動称す点型 (float, double) の平方根Float.NaN, Double.NaN が返される(例外は発生しない
  • 「Double.NaN == Double.NaN」は false を返す

剰余演算子の効果

結果
11%3 2
11%(-3) 2
-11%3 -2
-11%(-3) -2
3.8%1.2 0.19999999999999996

関係演算子

論理演算子

  • 論理演算子・・・true または false の複数の条件を結合する演算子
  • ビット論理演算子・・・ビット単位で演算を行う
  • 短絡論理演算子・・・boolean 値に対して短絡的に評価を行う(必ずしも2つのオペランドが評価されない)
論理演算子 記述例 説明
& x & y x と y の論理積を返す
&& x && y x と y の論理積を返す。 x が false なら、y は評価されずに false を返す
| x | y x と y の論理和を返す
| x || y x と y の論理和を返す。 x が true なら、y は評価されずに true を返す
^ x ^ y x と y の排他的論理和を返す
! !x x の否定を返す

代入演算子

  • 代入演算子・・・「=」
  • 複合代入演算子・・・+=, -=, *=, /=, %=, &=, |=, ^=
  • 2項演算(3項演算子もかな?)の2つのオペランドの型が異なっている場合に、式の評価の前に実行される型変換。

基本データ型の暗黙的型変換

  • オペランドとも int よりサイズが小さい(byte, short, char)・・・両方とも int 型に拡張される
  • 一方のオペランドが double・・・他方も double に変換される
  • 両方とも double でなく、一方がfloat・・・もう一方も float に変換される
  • オペランドとも double, float, long でない・・・両オペランドとも int に変換される

高度な演算子

演算子 説明
?: Java 唯一の3項演算子。 if-else の短縮形
[] 配列の宣言と作成、配列要素へのアクセス
(《型》) 型キャスト
new 新しいオブジェクト、配列を作成
instanceof 第1オペランドが第2オペランドインスタンスかどうかを判断する

参照型の等価性と基本データ型の等価性

  • 基本データ型・・・同じ値を保持しているなら等価
  • 参照型・・・同じオブジェクトを参照しているなら等価
  • 参照型の等値性は equals() メソッドによって評価
  • Object クラスの equals() メソッドは == と同じ処理

Point

  • 変数を使用してデータを保持する。 基本データ型変数はデータ値そのものを保持し、オブジェクト参照とも呼ばれる参照変数は、オブジェクトを指し示す位置情報を保持する
  • 各変数は特定のデータ型として宣言され、その方と互換性のあるデータのみを保持できる
  • 変数によって保持されるデータは、演算子を使用して操作される