1

この記事の目次



1.  演算子(Basic Operators)


 ●  算術演算子

主に数学的な演算を行う演算子です。

演算子 概要
+ 加算 1 + 2
- 減算 2 – 1
乗算 2*2
/ 除算 4.0 / 2
% 剰余 5 % 2 (結果:1)
+ 文字列の連結 “A” + “B” (結果:AB)
++ インクリメント x = 1;x++;(結果:2)
– – デクリメント x = 1;x– –;(結果:0)

注意 : インクリメント/デクリメント演算子

  • インクリメント演算子 x++ の違う記述仕方は、x=x+1です。つまり、x変数に1を足した結果、xに新しく代入する。デクリメント演算子 x--も同様です
  • インクリメント/デクリメント演算子は、演算子をオペランドの前後いずれに置くかによって処理が異なります。x++は代入した後にインクリメントしますが、++xは代入する前にインクリメントします。
  • package helloworld;
    
    public class HelloWorld {
          
        public static void main(String[] args) {
            
            int x = 1;
            int y = x++;
            System.out.println("yは" + y);   // 結果:yは1
            
            int a = 1;
            int b = ++a;
            System.out.println("bは" + b);   // 結果:bは2
            
        }
     
    }

     ●  代入演算子

    代入演算子は変数に値を代入する演算子です

    主な代入演算子:

    演算子 概要
    = 右辺の値を左辺に代入 i = 1;
    += 右辺の値を加算した結果を代入 i += 5 (結果:10)
    -= 右辺の値を減算した結果を代入 i -= 5 (結果:0)
    *= 右辺の値を乗算した結果を代入 i *= 5 (結果:25)
    /= 右辺の値で除算した結果を代入 i /= 5 (結果:1)
    %= 右辺の値で除算した余りを代入 i %= 5 (結果:0)
    &= 右辺の値で論理積演算した結果を代入 i &= 10 (結果: 0)
    |= 右辺の値で論理和演算した結果を代入 i |= 10 (結果:15)
    ^= 右辺の値で排他的論理和演算した結果を代入 i ^= 10 (結果:15)
    <<= 右辺の値だけ左シフトした結果を代入 i <<= 3 (結果:40)
    >>= 右辺の値だけ右シフトした結果を代入 i >>= 10 (結果:0)
    >>>= 右辺の値だけ右シフトした結果を代入 i >>>= 10 (結果:0)

     ●  比較演算子

    左辺と右辺の値を比較し、その結果をtrue/falseで返します。

    主な比較演算子:

    演算子 概要
    == 左辺と右辺が等しければtrue 5 == 5 (結果:true)
    != 左辺と右辺が等しくなければtrue 5 != 5 (結果:false)
    < 左辺が右辺より小さければtrue 5 < 7 (結果:true)
    <= 左辺が右辺以下であればtrue 5 <= 3 (結果:false)
    > 左辺が右辺より大きければtrue 7 > 5 (結果:true)
    >= 左辺が右辺以上であればtrue 5 >= 7 (結果:false)
    ?: 「条件式 ? 式1 : 式2」。条件式がtrueなら式1、falseなら式2 i = (0 >= 1) ? 2 : 3 (結果:iの値は3)
    package helloworld;
    
    public class HelloWorld {
          
        public static void main(String[] args) {
            
            int firstVariable, secondVariable;
            firstVariable = 1;
            secondVariable = 2;
            System.out.println(firstVariable + " == " + secondVariable + "の比較:" + (firstVariable == secondVariable));
            System.out.println(firstVariable + " != " + secondVariable + "の比較:" + (firstVariable != secondVariable));
            System.out.println(firstVariable + " > " + secondVariable + "の比較:" + (firstVariable > secondVariable));
            System.out.println(firstVariable + " >= " + secondVariable + "の比較:" + (firstVariable >= secondVariable));
            System.out.println(firstVariable + " < " + secondVariable + "の比較:" + (firstVariable < secondVariable));
            System.out.println(firstVariable + "<=" + secondVariable + "の比較:" + (firstVariable <= secondVariable));
                    
        }
     
    }

     ●  論理演算子

    複数の条件式を論理的に結合し、その結果をtrue/falseで返します。

    主な論理演算子:

    演算子 概要
    && 左辺右辺がともにtrueの場合はtrue true && false (結果:false)
    || 左辺右辺どちらかがtrueの場合はtrue true || false (結果:true)
    ! 式がfalseの場合はtrue !false (結果:true)
    ^ 左辺右辺いずれかがtrueで、かつ、ともにtrueでない場合にtrue true^false (結果:true)
    package helloworld;
    
    public class HelloWorld {
          
        public static void main(String[] args) {
            
            int firstNumber = 8;
            int secondNumber = 12;
             
            System.out.println("(firstNumber < 10) && (secondNumber < 10)の結果は " + ((firstNumber < 10) && (secondNumber < 10)));    // Toán tử AND
            System.out.println("(firstNumber < 10) || (secondNumber < 10)の結果は " + !((firstNumber < 10) || (secondNumber < 10)));    // Toán tử OR
                    
        }
     
    }

    実行結果:

    説明:

    firstNumber = 8、secondNumber = 12なので、この順に解釈していきます: 

  • (firstNumber < 10) && (secondNumber < 10)(8 < 10) && (12 < 10)TRUE && FALSE FALSE
  • !((firstNumber < 10) || (secondNumber < 10))!((8 < 10) || (12 < 10))!(TRUE || FALSE) !TRUEFALSE
  •  ●  ビット演算子

    整数を2進数で表した時、それぞれの桁を論理演算し、その結果を返します。

    主なビット演算子

    演算子 概要
    & 論理積。左右双方の式にセットされているビット 10 & 2 (結果:2)
    | 論理和。左右いずれかの式にセットされているビット 10 | 2 (結果:10)
    ^ 排他的論理和(EXOR演算) 10^2 (結果:8)
    << ビットを左シフト 10 << 2 (結果:40)
    >> ビットを右シフト 10 >> 2 (結果:2)
    >>> ビットを右シフト、左端は0埋め 10 >>> 2 (結果:2)

     ●  キャスト演算

    キャスト演算はオペランドの型を変える演算であり、単項演算の一種です。この演算を行う式は:

    (型)式

    説明:

  • まずオペランドの式を計算し、その結果得られた値の型を括弧内に書かれた型に変換します。
  • 括弧内には基本データ型でも参照型でも任意の型を書けますが、変換不可能な型は書けません。
  • package helloworld;
    
    public class HelloWorld {
          
        public static void main(String[] args) {
            
            double pi = 3.1;
            double p = (int)(pi + 3.1); // (int)(pi + 3.1) ->  (int)(6.2) -> 6
            double q = (int)pi + 3.1;  // (int)pi + 3.1 -> 3 + 3.1 -> 6.1
            System.out.println("p は " + p);
            System.out.println("q は " + q);
    
        }
     
    }

    実行結果:

    2.  演算子の優先順位


    以下に、優先順位の高いものからまとめます。

    演算子の種類 演算子
    ( ) [ ] .
    単項演算子 ! ~ ++ -- (キャスト) (右から評価する)
    剰余 * / %
    加減 + -
    シフト << >>> >>
    比較 < <= > >=
    等値、非等値 == !=
    論理積(ビット演算子) &
    排他的論理和(ビット演算子) ^
    論理和(ビット演算子) |
    論理和(ビット演算子) |
    論理積 &&
    論理和 ||
    条件演算子 ? :
    代入演算子 = += -= *= /= %= <<= >>>= >>= &= ^= |= (右から評価する)

    注意:演算子の優先順位を正確に覚えることは難しいだろうと思います。複雑な式では、適宜、塊を丸かっこで括るようにしましょう。丸かっこで括られた部分は優先して演算されます。

    3.  総合問題例


    半径rをキーボードから入力して、球の体積と表面積を計算し、小数点第3位まで四捨五入した結果を出力するプログラムを作れ。

  • 体積 = (4/3) * PI * r3
  • 表面積 = 4 * PI * r2
  • 回答:

    package helloworld;
    
    import java.text.DecimalFormat;//四捨五入ようのDecimalFormatクラスのimport
    import java.util.Scanner; //Scannerクラスのimport
    
    public class HelloWorld {
        public static final float PI = 3.14f; //PI定数を宣言する
        
        public static void main(String[] args) {
            
            //Scannerクラスのインスタンスを作成する
            Scanner scanner = new Scanner(System.in); 
             
            // 四捨五入のために、DecimalFormatのインスタンスを作成する
            DecimalFormat decimalFormat = new DecimalFormat("#.##");
             
            System.out.println("球の半径 r : ");
            float radius = scanner.nextFloat(); //情報を取得して、 radius変数に代入する
             
            // 球の表面積を計算する
            float area = 4 * PI * radius * radius;
            System.out.println("球の表面積 = " + decimalFormat.format(area));
             
            // 球の体積を計算する
            float vol = (float)4/3 * PI * radius * radius * radius;
            System.out.println("球の体積 = " + decimalFormat.format(vol));
    
        }
     
    }
    

    実行結果:

    4.  まとめ


    ここまで、算術演算子、代入演算子、比較演算子などのJAVAの基本演算子を紹介しました。

    プログラムを上手く処理させるように、演算子、演算子の優先順位、結合則などを理解し、演算問題をたくさん練習する必要があります。ぜひ、Java-基礎な知識カテゴリーの総合演習問題をご覧ください。

    5.  演習問題


    広告