1.Javaの整数型の値には、char型を除いて、常に符号がある。
表現可能な正の最大値は、
負の最大値よりも常に1小さいことに注意する必要がある。
整数型のデフォルト値は0である。
各データ型の範囲は、
次のとおりである。
型 サイズ 範囲
byte型 8ビット -2
short型 16ビット -2
char型 16ビット u0000~uFFFF
int型 32ビット -231~231-1
long型 64ビット -263~263-1
2.整数リテラルは、
Lまたはl(Lの小文字)を最後に追加しない限り、
int型として扱われる。
3.浮動小数点型のfloat型は32ビット、
double型は64ビットの値を表し、
IEEE754標準の浮動小数点数表現に準拠する。
浮動小数点数型のデフォルト値は、
0.0dである。
4.浮動小数点数リテラルは、
Fまたはfを最後に追加しない限り、
double型として扱われる。
5.boolean型の値は、
trueとfalseの2つしかない。
boolean型のデフォルト値は、
falseである。
表現可能な正の最大値は、
負の最大値よりも常に1小さいことに注意する必要がある。
整数型のデフォルト値は0である。
各データ型の範囲は、
次のとおりである。
型 サイズ 範囲
byte型 8ビット -2
short型 16ビット -2
char型 16ビット u0000~uFFFF
int型 32ビット -231~231-1
long型 64ビット -263~263-1
2.整数リテラルは、
Lまたはl(Lの小文字)を最後に追加しない限り、
int型として扱われる。
3.浮動小数点型のfloat型は32ビット、
double型は64ビットの値を表し、
IEEE754標準の浮動小数点数表現に準拠する。
浮動小数点数型のデフォルト値は、
0.0dである。
4.浮動小数点数リテラルは、
Fまたはfを最後に追加しない限り、
double型として扱われる。
5.boolean型の値は、
trueとfalseの2つしかない。
boolean型のデフォルト値は、
falseである。
6.2つのオペランドがある算術式を評価するときに、
コンパイラは次の規則に従ってデータ型を拡張変換
(widening)する。
a.一方のオペランドがdouble型であれば、
もう一方がdouble型に変換される
b.上記aでない場合、
一方のオペランドがfloat型であれば、
もう一方がfloat型に変換される
c.上記aでもbでもない場合、
一方のオペランドがlong型であれば、
もう一方がlong型に変換される
d.上記a、b、cのいずれでもない場合、
両方のオペランドがint型に変換される
7.整数をゼロで割ると、
実行時にArithmeticException例外が生成される。
8.浮動小数点をゼロで割ると、
例外が生成されない代わりに、
ラッパークラスFloatとDoubleで定義された特別なNaNという定数値になる。
9.NaNは、Not a Number(非数)を意味する。
浮動小数点数演算の結果がNaNであることを確認する唯一の方法は、
Float.isNaN()またはDouble.isNaN()というstaticメソッドを使うことである。
10.FloatクラスとDoubleクラスには、
NaNのほかにも特別な浮動少数点数として、
MAX_VALUE、MIN_VALUE、POSITIVE_INFINITY、NEGATIVE_INFINITYという
定数が定義されている。
コンパイラは次の規則に従ってデータ型を拡張変換
(widening)する。
a.一方のオペランドがdouble型であれば、
もう一方がdouble型に変換される
b.上記aでない場合、
一方のオペランドがfloat型であれば、
もう一方がfloat型に変換される
c.上記aでもbでもない場合、
一方のオペランドがlong型であれば、
もう一方がlong型に変換される
d.上記a、b、cのいずれでもない場合、
両方のオペランドがint型に変換される
7.整数をゼロで割ると、
実行時にArithmeticException例外が生成される。
8.浮動小数点をゼロで割ると、
例外が生成されない代わりに、
ラッパークラスFloatとDoubleで定義された特別なNaNという定数値になる。
9.NaNは、Not a Number(非数)を意味する。
浮動小数点数演算の結果がNaNであることを確認する唯一の方法は、
Float.isNaN()またはDouble.isNaN()というstaticメソッドを使うことである。
10.FloatクラスとDoubleクラスには、
NaNのほかにも特別な浮動少数点数として、
MAX_VALUE、MIN_VALUE、POSITIVE_INFINITY、NEGATIVE_INFINITYという
定数が定義されている。
11.論理AND演算子には&と&&がある。
&&演算子を使うと、評価が簡略化される。
つまり、
左辺がfalseであれば式全体がfalseになることは自明なので、
右辺の評価が省略される。
12.論理OR演算子には|と||がある。
||演算子を使うと、評価が簡略化される。
つまり、
左辺がtrueであれば式全体がtrueになることは自明なので、
右辺の評価が省略される。
13.ifおよびwhileステートメントはboolean値を受け取るので、
0をfalse代わりに使うCの手法は通用しない。
&&演算子を使うと、評価が簡略化される。
つまり、
左辺がfalseであれば式全体がfalseになることは自明なので、
右辺の評価が省略される。
12.論理OR演算子には|と||がある。
||演算子を使うと、評価が簡略化される。
つまり、
左辺がtrueであれば式全体がtrueになることは自明なので、
右辺の評価が省略される。
13.ifおよびwhileステートメントはboolean値を受け取るので、
0をfalse代わりに使うCの手法は通用しない。
14.シフト演算子には>>、>>>、<<の3種類がある。
シフト演算子は整数型の値にのみ使える。
右辺で指定したビット数だけ左辺がシフトされる。
ただし、シフトできるのはint型で31ビット、
long型で63ビットまでである。
>>演算子を使うと、符号が拡張されるので、
負の値は負のままシフトされる。
しかし、>>>演算子を使うと、
上位ビットが0になるので、正の値になる。
シフト演算子は整数型の値にのみ使える。
右辺で指定したビット数だけ左辺がシフトされる。
ただし、シフトできるのはint型で31ビット、
long型で63ビットまでである。
>>演算子を使うと、符号が拡張されるので、
負の値は負のままシフトされる。
しかし、>>>演算子を使うと、
上位ビットが0になるので、正の値になる。