JavaRush /Java Blog /Random-JA /Java での数値演算

Java での数値演算

Random-JA グループに公開済み
こんにちは!今日は非常に重要なトピック、つまりJava の数値演算について見ていきます。プログラミングではあらゆるところに数字が登場します。学校のカリキュラムを詳しく見てみると、コンピュータ上のすべての情報が、バイナリ コードとも呼ばれる数値形式 (0 と 1 の組み合わせ) で表現されていることを思い出すでしょう。 Java の数値演算 - 2プログラミングでは数値に対する演算が非常にたくさんあるので、それらの中で最も重要なものを例を挙げて見ていきます :)

算術演算

最も単純な算術演算から始めましょう。これらは、よく知られている加算 (+ 記号)、減算 (-)、乗算 (*)、および除算 (/) です。
public class Main {

   public static void main(String[] args) {

       int x = 999;
       int y = 33;

       System.out.println(x+y);
       System.out.println(x-y);
       System.out.println(x*y);
       System.out.println(x/y);
   }
}
コンソール出力:

1032
966
32967
30
これはすべてすでに使用済みです。それらに演算を追加できます%(除算の残り)。
public class Main {

   public static void main(String[] args) {

       int x = 33;
       int y = 33%2;
       System.out.println(y);
   }
}
コンソール出力:

1
この例では、33 を 2 で割ります。その結果、16 が得られ、2 - 1 で割り切れない余分な「尾」が残ります。この「尾」は「除算の余り」演算の結果になります。Java (および数学) は比較演算子を実装します。あなたもおそらく学校で彼らを知っているでしょう。
  • に等しい ( ==)
  • もっと (>
  • 少ない (<
  • 以上 (>=
  • <=( )以下
  • 等しくありません ( !=)
ここで、多くの初心者が間違いを犯す重要な点に注意する価値があります。「等しい」という演算は==、記号 1 つではなく、と書きます=。Java の単位記号は=代入演算子であり、変数に数値、文字列、または別の変数の値が割り当てられます。 Java の数値演算 - 3
public class Main {

   public static void main(String[] args) {

       int x = 33;
       int y = 999;
       System.out.println(x=y);// expect false to be printed to the console
   }
}
コンソール出力:

999
おっとっと!これは明らかに私たちが期待した結果ではありません。これはまったく異なるタイプのデータです。私たちは を期待していましたbooleanが、数値が得られました。これは、括弧内に比較ではなく代入演算があるためです。 x=yy(999) が変数 に割り当てられx、それがxコンソールに出力されました。正しいオプション:
public class Main {

   public static void main(String[] args) {

       int x = 33;
       int y = 999;
       System.out.println(x==y);
   }
}
コンソール出力:

false
これで、2 つの数値が正しく比較されました。:) 代入操作 ( =) のもう 1 つの特徴は、「連鎖」して実行できることです。
public class Main {

   public static void main(String[] args) {

       int x = 999;
       int y = 33;
       int z = 256;

       x = y = z;
       System.out.println(x);
   }
}
コンソール出力:

256
覚えておいてください: 割り当ては右から左に行われます。この式 ( x = y = z) は次の手順で実行されます。
  • y = z、つまり y = 256
  • x = y、つまり x = 256

単項演算

それらは「uno」-「one」という言葉から「単項」と呼ばれます。以前のものとは異なり、複数の番号ではなく 1 つの番号で実行されるため、この名前が付けられました。これらには次のものが含まれます。
  • 単項マイナス。数値の符号を反転します。

    public class Main {
    
       public static void main(String[] args) {
    
           int x = 999;
    
           // change the sign for the first time
           x = -x;
           System.out.println(x);
    
           // change the sign a second time
           x= -x;
           System.out.println(x);
       }
    }

    コンソール出力:

    
    -999
    999

    単項マイナスを 2 回使用しました。その結果、数値は最初はマイナスになり、その後再びプラスになりました。

  • インクリメント ( ++) とデクリメント ( --)

    演算では++数値が 1 ずつ増加し、演算では--同じ単位で数値が減少します。

    public class Main {
    
       public static void main(String[] args) {
    
           int x = 999;
           x++;
           System.out.println(x);
    
           x--;
           System.out.println(x);
       }
    }

    コンソール出力:

    
    1000
    999
C++ 言語について聞いたことがある場合は、この表記形式に馴染みがあるかもしれません。このような興味深い名前を利用して、その作成者は「C++ は C 言語の拡張である」という考えを伝えました。Notepad の人気のある改良版は Notepad++ と呼ばれます 大事なポイント。インクリメント演算とデクリメント演算には、後置演算と前置演算の 2 種類があります。 x++・後置記法 ++x・前置記法 数字の前後にプラスとマイナスを付ける場合、根本的な違いは何でしょうか?例で見てみましょう:
public class Main {

   public static void main(String[] args) {

       int x = 999;
       int y = x++;
       System.out.println(y);
   }
}
コンソール出力:

999
何か問題がありますか! x1 ずつインクリメントして、変数に新しい値を代入したいと考えましたy。つまり、y は 1000 に等しいはずです。しかし、結果は異なります - 999 です。それはx増加しておらず、増加操作が機能しなかったことがわかります。それはどのように機能したか。これを確認するには、最後にコンソールに x を出力してみてください:)
public class Main {

   public static void main(String[] args) {

       int x = 999;
       int y = x++;
       System.out.println(y);
       System.out.println(x);
   }
}
コンソール出力:

999
1000
実際、これが後置演算がそのように呼ばれる理由です。つまり、後置演算はメイン式の後に実行されます。つまり、私たちのケースでは、 int y = x++; 最初にそれが実行され y = x(そして変数 y に初期値が割り当てられますx)、その後にのみ が実行 x++ されます。この動作に満足できない場合はどうすればよいでしょうか? 接頭辞表記を使用する必要があります。
public class Main {

   public static void main(String[] args) {

       int x = 999;
       int y = ++x;
       System.out.println(y);
   }
}
この場合、最初 ++x とその後でのみ 機能しますy = x; 実際のプログラムで間違いを犯さないように、この違いが原因ですべての動作が逆さまになる可能性があるため、この違いはすぐに覚えておく価値があります:)

複合操作

さらに、Java には、いわゆる結合操作があります。これらは 2 つの操作を組み合わせて使用​​します。
  • 割り当て
  • 算術演算
これには次の操作が含まれます。
  • +=
  • -=
  • *=
  • /=
  • %=
例を見てみましょう:
public class Main {

   public static void main(String[] args) {

       int x = 999;
       int y = 33;

       x += y;
       System.out.println(x);
   }
}
コンソール出力:

1032
x += y手段x = x + y。簡潔にするために、続けて 2 つの文字が使用されます。-=これは、*=/=、 の組み合わせでも機能します。%=

論理演算

数値に対する演算に加えて、Java にはブール変数 (trueおよび )に対する演算もありますfalse。これらの操作は論理演算子を使用して実行されます
  • !— 「NOT」演算子。ブール変数の値を反転します。

    public class Main {
    
       public static void main(String[] args) {
    
           boolean x = true;
           System.out.println(!x);
       }
    }

    コンソール出力:

    
    false

  • &&— 演算子「AND」。true両方のオペランドが の場合にのみ値を返しますtrue

    public class Main {
    
       public static void main(String[] args) {
    
           System.out.println(100 > 10 && 100 > 200);
           System.out.println(100 > 50 && 100 >= 100);
       }
    }

    コンソール出力:

    
    false
    true

    false条件の 1 つが false、つまり 100 > 200 であるため、最初の演算の結果は です。演算子&&が を返すには、trueすべての条件が true (たとえば 2 行目のように) である必要があります。

  • ||— 「OR」演算子。true少なくとも 1 つのオペランドが true の場合に戻ります。

    ここで、前の例は動作が異なります。

    public class Main {
    
       public static void main(String[] args) {
    
           System.out.println(100 > 10 || 100 > 200);
       }
    }

    コンソール出力:

    
    true

    式 100 > 200 は依然として false ですが、「or」演算子は最初の部分 (100 > 10) が true であることを完全に満たしています。

コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION