Javaの勉強3 基本データ型、演算子

最終更新:2006/04/02

トップページへ戻る
前へ 次へ

3-1. 基本データ型

      基本データの範囲や大きさは次のとおりです。
分類 ビット数(バイト数) 範囲
整数型 byte 8 (1) -128 〜 127
short 16 (2) -32768 〜 32767
int 32 (4) -2147483648〜2147483647
long 64 (8) -9223372036854775808〜9223372036854775807
実数型 float 32 (4) 1.4E-45〜3.4028235E+38
double 64 (8) 4.9E-324〜1.7976931348623157E308
文字列型 char 16 (2) 0〜65535
boolean型 boolean - (1) true / false
      サンプル ・・・8つの基本データ型に値を割り当てて、値を表示
class Variable50 {
    public static void main(String[] args) {
        byte    b  = 10;          // byte型
        short   s  = -200;        // short型
        int     i  = 3000;        // int型
        long    l  = -40000;      // long型
        float   f  = 5.6f;        // float型
        double  d  = -78.901e23;  // double型

        char    c  = 'a';         // char型

        boolean bo = true;        // boolean型
        System.out.println("byte        : " + b);   // byte型
        System.out.println("short       : " + s);   // short型
        System.out.println("int         : " + i);   // int型
        System.out.println("long        : " + l);   // long型
        System.out.println("float       : " + f);   // float型
        System.out.println("double      : " + d);   // double型
        System.out.println("char        : " + c);   // char型
        System.out.println("boolean     : " + bo);  // boolean型
    }
}
      実行結果
byte        : 10
short       : -200
int         : 3000
long        : -40000
float       : 5.6
double      : -7.8901E24
char        : a
boolean     : true
      サンプル ・・・boolean型を除いた基本データ型の最小値と最大値を表示
class PrimitiveData01 {
    public static void main(String[] args) {
        // byte型の最小値と最大値
        System.out.println("byte : " + Byte.MIN_VALUE + " 〜 " + Byte.MAX_VALUE);

        // short型の最小値と最大値
        System.out.println("short : " + Short.MIN_VALUE + " 〜 " + Short.MAX_VALUE);

        // int型の最小値と最大値
        System.out.println("int : " + Integer.MIN_VALUE + " 〜 " + Integer.MAX_VALUE);

        // long型の最小値と最大値
        System.out.println("long : " + Long.MIN_VALUE + " 〜 " + Long.MAX_VALUE);

        // float型の最小値と最大値
        System.out.println("float : " + Float.MIN_VALUE + " 〜 " + Float.MAX_VALUE);

        // double型の最小値と最大値
        System.out.println("double : " + Double.MIN_VALUE + " 〜 " + Double.MAX_VALUE);

        // char型の最小値と最大値
        System.out.println("char : " + (int)Character.MIN_VALUE + " 〜 " + (int)Character.MAX_VALUE);
    }
}
      実行結果
byte : -128 〜 127
short : -32768 〜 32767
int : -2147483648 〜 2147483647
long : -9223372036854775808 〜 9223372036854775807
float : 1.4E-45 〜 3.4028235E38
double : 4.9E-324 〜 1.7976931348623157E308
char : 0 〜 65535

3-2. 演算子

      演算子  -- 算術演算子 ( +, -, *, /, % )
              |
              -- 代入・複合演算子 ( =, +=, -=, *=, /=, %= )
              |
              -- インクリメント・デクリメント演算子 ( ++, -- )
              |
              -- 関係演算子 ( >, >=, <, <=, ==, != )
              |
              -- 論理演算子 ( &, &&, l, ll, ^, ! )
              |
              -- ビットシフト演算子 ( >>, >>>, << )
              |
              -- ビット代入演算子 ( &=, |=, ^=, >>=, >>>=, <<= )

     (1) 算術演算子

          変数や数値に対して処理を行うのが「算術演算子」です。
内容
a + b aとbを足す
a - b aからbを引く
a * b aとbを掛ける
a / b aをbで割る
a % b aをbで割った余り
          サンプル
public class MyArithmetic {
    public static void main(String[] args){
        // 算術演算子の使用例
        System.out.println("5 + 2 = " + (5 + 2));
        System.out.println("5 - 2 = " + (5 - 2));
        System.out.println("5 * 2 = " + (5 * 2));
        System.out.println("5 / 2 = " + (5 / 2));
        System.out.println("5 % 2 = " + (5 % 2));
    }
}
          実行結果
5 + 2 = 7
5 - 2 = 3
5 * 2 = 10
5 / 2 = 2
5 % 2 = 1
     (2) 代入演算子

          変数に対して、ある値を代入する処理を行うのが「代入演算子」です。
          基本的には、代入演算子の右側に記述されている値や式などを、
          演算子の左側に記述されている変数に対して代入します。
内容
a = b aにbを代入する
a += b aにa+bを代入する
a -= b aにa-bを代入する
a *= b aにa*bを代入する
a /= b aにa/bを代入する
a %= b aにa%bを代入する
          サンプル
public class MyAssignment {
    public static void main(String[] args){
        // 代入・複合代入演算子の使用例
        int a;
        System.out.println("a = 5 → " + (a = 5));
        a += 2;	// a = a + 2と同じ
        System.out.println("a += 2 → " + a);
        a = 5;
        a -= 2;	// a = a - 2と同じ
        System.out.println("a -= 2 → " + a);
        a = 5;
        a *= 2;	// a = a * 2と同じ
        System.out.println("a *= 2 → " + a);
        a = 5;
        a /= 2;	// a = a / 2と同じ
        System.out.println("a /= 2 → " + a);
        a = 5;
        a %= 2;	// a = a % 2と同じ
        System.out.println("a %= 2 → " + a);
    }
}
          実行結果
a = 5 → 5
a += 2 → 7
a -= 2 → 3
a *= 2 → 10
a /= 2 → 2
a %= 2 → 1
     (3) インクリメント・デクリメント演算子

          変数を1増やしたり, 減らしたりします。
          ただし演算氏を変数の前に置くか, 後ろに置くかで,
          式の結果として使用される値が異なります。

          サンプル
public class MyIncDec {
    public static void main(String[] args){
        // インクリメント・デクリメント演算子の使用例
        int a = 5;
        // 変数の値を表示してから1増やす
        System.out.println("a++ → " + a++);
        a = 5;
        // 変数を1増やしてから値を表示する
        System.out.println("++a → " + ++a);
        a = 5;
        // 変数の値を表示してから1減らす
        System.out.println("a-- → " + a--);
        a = 5;
        // 変数を1減らしてから値を表示する
        System.out.println("--a → " + --a);
    }
}
          実行結果
a++ → 5
++a → 6
a-- → 5
--a → 4
     (4) 関係演算子

          2つの値の関係を条件に従って調べ, true(真)またはfalse(偽)を返します。
内容
a == b aとbが等しいときに真
a != b aとbが等しくないときに真
a > b aがbより大きいときに真
a >= b aがbより大きいか等しいときに真
a < b aがbより小さいときに真
a <= b aがbより小さいか等しいときに真
          サンプル
public class MyRelational {
    public static void main(String[] args){
        // 関係演算子の使用例
        System.out.println("5 == 5 → " + (5 == 5));
        System.out.println("5 != 5 → " + (5 != 5));
        System.out.println("5 < 5 → " + (5 < 5));
        System.out.println("5 <= 5 → " + (5 <= 5));
        System.out.println("5 >= 5 → " + (5 >= 5));
    }
}
          実行結果
5 == 5 → true
5 != 5 → false
5 < 5 → false
5 <= 5 → true
5 >= 5 → true
     (5) 論理演算子
内容
a & b aとbの論理積(AND)
a | b aとbの論理和(OR)
a ^ b 排他的論理和(XOR: exclusive OR)
!a aの否定(NOT)
a && b aとbの論理積(ショートカット演算子)
a || b aとbの論理和(ショートカット演算子)
          サンプル
public class BitTest1 {
    public static void main(String args[]){
        int a = 1, b = 0;
        int c = 9, d = 12;	// 9 = 1001, 12 = 1100

        System.out.println("a = " + a + ", b = " + b);
        System.out.println("a & b : " + (a & b));
        System.out.println("a | b : " + (a | b));
        System.out.println("a ^ b : " + (a ^ b));
        System.out.println();
        System.out.println("1001 & 1100 : " + (c & d));
        System.out.println("1001 | 1100 : " + (c | d));
        System.out.println("1001 ^ 1100 : " + (c ^ d));
    }
}
          実行結果
a = 1, b = 0
a & b : 0
a | b : 1
a ^ b : 1

1001 & 1100 : 8
1001 | 1100 : 13
1001 ^ 1100 : 5
     (6) ビットシフト演算子

          ビットシフト演算子は、大きく分けて左にシフトさせる
          ものと,右にシフトさせるものがあります。
内容
a >> n aを符号を保持したままnビット右にシフトさせる
a >>> n aを0埋めしながらnビット右にシフトさせる
a << n aを0埋めしながらnビット左にシフトさせる
          サンプル
public class BitTest2 {
    public static void main(String args[]){
        int a = 16, b = -16, c = 16, d = 4;
        System.out.println("a >> 2 : " + (a >> 2));
        System.out.println("b >> 2 : " + (b >> 2));
        System.out.println("c >>> 2 : " + (c >>> 2));
        System.out.println("d << 2 : " + (d << 2));
    }
}
          実行結果
a >> 2 : 4
b >> 2 : -4
c >>> 2 : 4
d << 2 : 16
     (7) ビット代入演算子

          ビット演算にも代入演算子と組み合わせた「ビット代入演算子」
          というものがあります。
内容
a &= b aとbの論理積をaに代入する
a |= b aとbの論理和をaに代入する
a ^= b aとbの排他的論理和をaに代入する
a >>= n aを符号を保ちながらnビット右にシフトしたものをaに代入する
a >>>= n aを0埋めしながらnビット右にシフトしたものをaに代入する
a <<= n aを0埋めしながらnビット左にシフトしたものをaに代入する
          サンプル
public class BitTest3 {
    public static void main(String args[]){
        int a = 1, b = 0, c = 1, d = 0, e = 1, f = 0;
        int g = 8, h = 8, i = 8;

        a &= b;
        System.out.println("a &= b : " + a);
        c |= d;
        System.out.println("c |= d : " + c);
        e ^= f;
        System.out.println("e ^= f : " + e);
        g >>= 2;
        System.out.println("g >>= 2 : " + g);
        h >>>= 2;
        System.out.println("h >>>= 2 : " + h);
        i <<= 2;
        System.out.println("i <<= 2 : " + i);
    }
}
          実行結果
a &= b : 0
c |= d : 1
e ^= f : 1
g >>= 2 : 2
h >>>= 2 : 2
i <<= 2 : 32
トップページへ戻る
前へ 次へ
Copyright© 2005- Naoyuki Sano. All rights reserved.