基本データ型のサイズと範囲

基本データ型のサイズと、整数の基本データ型の範囲は、以下のようになっています。

基本データ型のサイズ
基本データ型ビット種類
boolean1|非数
char16■■(事実上)整数
byte8整数
short16■■
int32■■■■
long64■■■■■■■■
float32■■■■浮動小数点数
double64■■■■■■■■
特に、char は2バイトというのがC言語と違うので注意が必要です。

整数の基本データ型の範囲
基本データ型最小最大符号
byte-128127あり
short-3276832767あり
int-(2の32乗)2の32乗-1あり
long-(2の64乗)2の64乗-1あり
 
char065535なし
char は文字ですが、整数として扱えるので、表の中に含めてあります。

float と double は、かなり広い範囲の数を表すことができますが、この範囲に入らない3つの状態 (+無限大、−無限大、非数)も表すことができます。
6つの状態それぞれを以下に列挙します。
  • Float.NaN
  • Float.NEGATIVE_INFINITY
  • Float.POSITIVE_INFINITY
  • Double.NaN
  • Double.NEGATIVE_INFINITY
  • Double.POSITIVE_INFINITY


    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' になる
      }
    }
     charを数値のように扱える。(ただし型変換に注意する必要がある)


    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は−∞となりこの行も実行される
      }
    }
     整数型の場合、0で割ってはならないが、0.0で割るのは問題ない。



      < 問題 >

    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→