基本データ型のサイズと、整数の基本データ型の範囲は、以下のようになっています。
基本データ型のサイズ特に、char は2バイトというのがC言語と違うので注意が必要です。
基本データ型 ビット 種類 boolean 1 | 非数 char 16 ■■ (事実上)整数 byte 8 ■ 整数 short 16 ■■ int 32 ■■■■ long 64 ■■■■■■■■ float 32 ■■■■ 浮動小数点数 double 64 ■■■■■■■■
整数の基本データ型の範囲char は文字ですが、整数として扱えるので、表の中に含めてあります。
基本データ型 最小 最大 符号 byte -128 127 あり short -32768 32767 あり int -(2の32乗) 2の32乗-1 あり long -(2の64乗) 2の64乗-1 あり char 0 65535 なし
float と double は、かなり広い範囲の数を表すことができますが、この範囲に入らない3つの状態 (+無限大、−無限大、非数)も表すことができます。
6つの状態それぞれを以下に列挙します。
Float.NaN
Float.NEGATIVE_INFINITY
Float.POSITIVE_INFINITY
Double.NaN
Double.NEGATIVE_INFINITY
Double.POSITIVE_INFINITY
charを数値のように扱える。(ただし型変換に注意する必要がある)
Hoge3.java
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:public class Hoge3{
void hoge3(){
char c1, c2, c3;
c1 = c2 = c3 = 'a';
c2++; // c2は 'b' になる
c3+=2; // c3は 'c' になる
}
}
整数型の場合、0で割ってはならないが、0.0で割るのは問題ない。
Hoge3b.java
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:public class Hoge3b{
void hoge3(){
float f1 = 1.0f / 0.0f;
double d1 = -1.0 / 0.0;
if(f1 == Float.POSITIVE_INFINITY)
; // f1は+∞となりこの行は実行される
if(d1 == Double.NEGATIVE_INFINITY)
; // d1は−∞となりこの行も実行される
}
}
< 問題 >
コンパイルするとどうなるでしょう。(答えは複数)
Hoge3c.java
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:public class Hoge3c{
public static void main(String args[]){
float f2 = 1.0 / 0.0;
double d2 = 0.0;
if(f2 != Float.POSITIVE_INFINITY)
;
else if(d2 == d2.NEGATIVE_INFINITY)
;
}
}
A. 4行目でコンパイルエラー
B. 5行目でコンパイルエラー
C. 7行目でコンパイルエラー
D. 9行目でコンパイルエラー
E. コンパイルは通る
F. エラーなく実行できる
G. 実行時にエラーとなる
↑BACK ←PREV NEXT→