• 締切済み

この演算子は何の演算子でしょうか?

下記のようなjavaコードがあります。 int mode = 1; if (true) mode|= 2; System.out.println(mode); これを実行すると結果は3になりますが、 ここで「|」とは何でしょうか? 恥ずかしいですが、 javaを1年半くらいやってきましたけど こんな演算子初めて見ます。 結果からみると 「mode|= 2」が「mode+= 2」と同じになりますが、 「+=」と「|=」は同じものでしょうか?

  • Java
  • 回答数3
  • ありがとう数3

みんなの回答

回答No.3

#1です。 >ビット演算子ではないでしょうか? ですね。失礼しました。時々間違えちゃう… 論理演算子なら 「||」ですね。

melanie_jp
質問者

お礼

ありがとうございます。解決しました。

  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.2

>「+=」と「|=」は同じものでしょうか? 違います。 2 | 1 = 3ですが 2 | 2 = 2です。 「論理和」で調べてください。 http://www.info.kochi-tech.ac.jp/ren/addLab2/bit.html

melanie_jp
質問者

お礼

ありがとうございます。解決しました。

回答No.1

論理演算子のorですね。

melanie_jp
質問者

補足

ビット演算子ではないでしょうか? つまり、 「mode |=2 」= 「mode = mode|2」 ではないでしょうか?

関連するQ&A

  • 三項演算子についてお聞きします。

    当方、Javaに取り組み始めた初心者です。 C言語で int i = 20; i <= 10 && i >= 0 ? printf("ok") : printf("ng"); //実行結果:ng と記述するとエラーにならずにちゃんと実行されるのですが、JAVAで同じように記述するとエラーになります。なぜでしょうか??お詳しい方、ご教授いただけると幸いです。 [Java] int i = 20; i <= 10 && i >= 0 ? System.out.println("ok") : System.out.println("ng"); //実行結果:エラー

    • ベストアンサー
    • Java
  • 演算子について

    こんにちは。JAVA超初心者です。 Javaの本に ++x はxを使ったあとに1増やす と書いてありましたが、イマイチ意味がわかりません。 「使う」とは?? int n = 0; int m = 0; m=n++; System.out.println(m); System.out.println(n); これの実行結果は 0 1 になるらしく、 m==n==; の意味は nの値(0)にmを代入した後nに1プラスする。 m=n++は m=n;,n=n=1;と書き換えられる。 とのことですが、どうもしっくり来ません。 nをmに代入するのなら、int m=0 が書いてある 意味がないような気がするし、 この実行結果に納得がいきません。私は 1 0 になると思うのですが・・・。 これ以上どう分かりやすく説明すればいいのか わからないと思われるかもしれませんが、 もし思いついたら教えてください。 宜しくお願いします。

    • ベストアンサー
    • Java
  • ==演算子について

    ●下記のコードについて質問があります public class AutoboxingTest { public static void main(String args[]) { Integer wi1 = 300; Integer wi2 = 300; int i = 300; if(wi1 == wi2) { System.out.println("wi1 == wi2"); } ----------------------------------------------- if(wi1 == i) { System.out.println("wi1 == i"); } ------------------------------------------------- } } ※書籍に書いてあるコードを引用しています。 質問は「-」の部分になりますが、 wi1とiを比較した結果がtrueになると、書籍では記載されています。 しかし、実際にコンパイルして動作確認したところ、falseとなります。 「==」はオブジェクトの参照が同じであるかを見ており、 w1とiは型が違うため、falseになると思います。 何故、書籍ではtrueになるのかをお伺いしたく掲示板にて記載しました。

    • ベストアンサー
    • Java
  • ビット演算子が使えない。

    こんにちは現在Javaをやっているいのですが、 //計算を行うプログラムです。 public class keisan{ public static void main(String args[]){ int num1=10; int num2=15; System.out.println("num1とnum2にいろんな演算を行っています。"); System.out.println("num1+num2は"+(num1 | num2)+"です。"); } } コンパイルはできましたが、 Exception in thread "main" java.lang.NoClassDefFoundError: keisan[ とエラーがでてきます。どうしたら良いのでしょうか? お願いします。

    • ベストアンサー
    • Java
  • クラス Lesson04はpublicであり、エラ

    いつも大変お世話になりありがとうございます。 下記コードについて質問です。 クラス Lesson04はpublicであり、ファイルLesson04.javaで宣言する必要があります というエラーメッセージが出ました。 どういう作業が必要でしょうか? ご回答のほど、宜しくお願い申し上げます。 public class Lesson04 { public static void main(String[] args) { System.out.println(10); System.out.println(10.0); System.out.println('a'); System.out.println("Java"); System.out.println(true); } }

    • ベストアンサー
    • Java
  • プログラミング【代入演算子】

    テキストブックを読んでいます。(数学が大の苦手です) 複合代入演算子についてなのですが、テキスト解説には、 int y = 10; int y += 15; System.out.println("y="+y); というプログラムがあるとします。この場合の実行結果の数字は「y=15」でした。 全く意味がわかりません。 int y = 10というのは[y=10」で、int y = 15 に当てはめると、 10+15=25ではないのですか? どのように計算すれば「u=15」が出てくるのか知りたいです。 恥ずかしながら、宜しくお願いします。

    • ベストアンサー
    • Java
  • 繰り返しによる星印の出力

    今まで、プログラミングの授業をやってきた わけですけどまだ全然プログラムをかけません・・・。 わからないながらも学校で出た資料とか見たんですけど、 まだ定着してないのか全く見当がつきません・・・。 よろしければ解答を教えてください。 オプション課題1 次のソースコード1-1 の実行結果を示せ。 また、実行結果1-2 から1-4 のように出力するGraphicalTest2~4 のソースコードを示せ。 ソースコード1-1 GraphicalTest1.java public class GraphicalTest1 { public static void main(String[] args) { int a = 5; for (int i = 0; i < a; i++) { for (int j = 0; j < a; j++) { System.out.print("*"); } System.out.println(""); } } } 実行結果1-2 % java GraphicalTest2 ***** **** *** ** * 実行結果1-4 % java GraphicalTest4 * *** ***** ******* ********* ******* ***** *** * あーやっぱりそのまま表示はされないですね。 実行結果1-4はひし形を縦にした形です。 わかりづらいですが・・・ 綺麗にちょうどひし形の縦型になるようにしたいんです。 そのためには空白も入れなくちゃいけないんですが・・・。

    • ベストアンサー
    • Java
  • ソースコードがわからないので教えてください。

    【Java】ソースコードを教えてください。 以下のあ~くの空欄に入るソースコードを教えてください。 解答がなくて困っています。 ・問題 コマンドラインから乱数の最小値,最大値および生成数を入力し、生成した乱数の最大値と最小値および平均を表示するプログラム UseRandomCommand.java を完成させなさい。実行例のように動作すること。 import java.util.Random; public class UseRandomCommand{ public static void main(String[] args){ Random r = new Random(); int max, min; double ave; if( args.length == 3 ){ int n =r.nextInt( あ )+ Integer.parseInt(args[0]); max=min=n; ave=(double)n; for (int i = 1; i < い ); i++){ n = r.nextInt( う )+ Integer.parseInt(args[0]); System.out.println(n); if (max < n) え ; else if (min>n) お ; ave+=(double) か ; } ave/=Double.parseDouble( き ); System.out.println("最大値:"+max); System.out.println("最小値:"+min); System.out.println("平均値:"+ave); } else { System.out.println("引数は3個必要です。"); System.out.println(" く "); } } } 【実行例】(java~~は標準入力) C:\Users\xxxxx\~~~\~~~>java UseRandomCommand 1 50 100 14 1 17 (略) 2 44 50 最大値:50 最小値:1 平均値:24.56 C:\Users\xxxxx\~~~\~~~>java UseRandomCommand 引数は 3 個必要です。 使い方)java UseRandomCommand 乱数の最小値 乱数の最大値 乱数の個数

  • コンパイル時のエラー。

    いつも大変お世話になりありがとうございます。 初心者向けのJAVAの件。 コンパイルが下記の通りになりました。 どこが間違っているのでしょうか? アドバイスのほど、宜しくお願い申し上げます。 C:\JAVA>javac Lesson09.java C:\JAVA>java Lesson09 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 at Lesson09.main(Lesson09.java:4) コード public class Lesson09 { public static void main(String[] args) { int x, y; x = Integer.parseInt(args[0]); y = Integer.parseInt(args[1]); java.awt.Point point = new java.awt.Point(); point.setLocation(x, y); System.out.println("X, Y座標をフィールドで参照します(int)"); System.out.println("X 座標:" + point.x); System.out.println("Y 座標:" + point.y); System.out.println("X, Y座標getメソッドで参照します(double)"); System.out.println("X 座標:" + point.getX()); System.out.println("Y 座標:" + point.getY()); } }

    • ベストアンサー
    • Java
  • JAVA初心者です 教えてください

    http://nobuo-create.net/java-beginner-6/ ページの ----------------------------------------------------------------- では、実際に11時から17時に「こんにちは」と挨拶するように条件式とブロックの中を埋めます。 (mainメソッドの中のみ表記) int time = 8; if((time >= 4) && (time <= 10)){ System.out.println("只今の時刻は" + time + "時です"); System.out.println("おはようございます"); }else if((time >= 11) && (time <= 17)){ System.out.println("只今の時刻は" + time + "時です"); System.out.println("こんにちは"); } 中身のプログラムは数字と挨拶を変えるだけですね。 ------------------------------------------------------------------- の「}else if((time >= 11) && (time <= 17)){」で疑問が浮かんでつまづきました。 time >= 11ではtime(8)が11以上という演算子になってfalseになり、else if文は実行されないのではないでしょうか? (time <= 11) && (time <= 17)と書くのではないのでしょうか?

    • ベストアンサー
    • Java

専門家に質問してみよう