質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

5回答

2004閲覧

比較演算子?ビット演算子?

sobue

総合スコア329

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2016/03/24 09:20

編集2016/03/24 14:36

お世話になっております

Java

1|=

という比較演算?をみたのですがどういう意味かかわかりません。
教えていただけますでしょうか?
if文の条件としてではなくif文の中に書かれていたのもきになります。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

ベストアンサー

何をどこまで説明すればいいのかわかりませんが…
「a|=b」は「a=a|b」と同じです。
「+=」とか「-=」とかも同様の考え方で記載を省略しているような物です。
「|」は「or」(論理和)です。
なので「|=」は左辺値と右辺値の論理和を左辺に代入する事になります。
ビット演算におけるOR演算(論理和)は演算するビットの片方が1なら1となります。

投稿2016/03/24 09:46

HiroshiWatanabe

総合スコア2160

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

答えは他の方が言われているので、補足を。

=代入演算子といいます。
代入演算子と算術演算子もしくは論理演算子と組み合わせた+=|=などの演算子を
複合代入演算子もしくは再帰代入演算子などと言います。

Google検索などで調べたいときにキーワードで使ってください。

投稿2016/03/24 10:48

Odacchi

総合スコア907

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sobue

2016/03/24 14:37

ありがとうございます。
guest

0

boolean なので単純に or をつないでいると思えばいいですよ。
以下2つ同じです。

java

1boolean result = number == 1 || number == 2 || number == 3;

java

1boolean result = false; 2result |= number == 1; 3result |= number == 2; 4result |= number == 3;

投稿2016/03/24 10:04

root_jp

総合スコア4666

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

java 演算子 "|="
で google 検索してみるとよいです。
次のページをみつけました。

...
|= 右辺の値で論理和演算した結果を代入
...

投稿2016/03/24 21:29

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

OR のビット演算子ですね。

if の中で使われていたのであれば、ビット演算を行った結果を比較しているのでしょう。

詳しく知りたい場合は『ビット演算子』を色々調べて、if で使われていた式を分解してみると良いでしょう。

投稿2016/03/24 09:30

ps13zier

総合スコア433

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sobue

2016/03/24 09:45 編集

比較されているのが両方ともboolean型なのですがどのようにビット演算をしたらいいですか?
ps13zier

2016/03/24 09:54

boolean 型が使われているのであれば論理演算かな。false / true を 0 / 1 に置き換えれば、考え方はビット演算と全く変わらないです。あと、式を示す方が明確な回答が得られやすいですよ。
HiroshiWatanabe

2016/03/24 09:58

どちらかが1(true)なら1(true)になるので boolean ならこんな結果です true or true = true true or false = true false or true = true false or false = false 蛇足ですが… 「a||b」の場合左から順番に真偽判定され真になった次点でそれより右の判定は省略されます。 true || true なら左のtrueだけで成立し右のtrueは判定省略されます。(左の判定だけでtrueになる) なので true || false でも同様です。(左の判定だけでtrueになり右のfalseは判定すらされない) false || true なら左のfalseでは真が確定していないので右のtrueまで判定されて確定します。(両方判定されてtrueになる) false | false でも同様です(両方判定して結果としてfalseになる) 「a|b」の場合は流れとしては上と同じですが省略が発生せず右端まで全部処理されます。 true | true も true | false も false | true も結果は true ですが左右両方の判定が実施されます。 false | false も両方の判定が実施されてからfalseとなります。
ps13zier

2016/03/24 10:07

HiroshiWatanabe 様、補足ありがとうございます。 蛇足で述べられている件「ショートサーキット」とか「短絡評価」とか呼ばれる内容ですが、確かに開発者なら知っておくべき重要な情報ですね。複数の開発言語を触る時なんかは(VB とか)挙動が違う事もあったりで、思わぬバグを埋め込んでしまう事もありますから、少し複雑な式の場合は意識すべきですよね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問