- - PR -
if文と演算子について
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2003-09-18 19:13
boolean a = false;
String str = "0"; if(a & (str = String.valueOf(1)) == "1"){ なんちゃらかんちゃら } System.out.println(str); 上記のプログラムを実行するとstrは"1"になりますが if文の中の(str = String.valueOf(1)) == "1"の == "1"は、どんな意味があるのでしょうか? ここの"1"は、別の値でもstrは"1"になると思うのですが・・・ Javaの初心者のため、誠に初歩的な質問をして申し訳ありません。 [ メッセージ編集済み 編集者: mhkogawa 編集日時 2003-09-18 19:14 ] | ||||
|
投稿日時: 2003-09-18 19:39
"=="は参照の比較です。 つまりstrと"1"が同じインスタンスかどうかの比較です。 (この場合、結果は常に"false") String.valueOf(1).equals("1")なら文字列の比較になりますので結果は"true"です。 ・・・これで質問の答えになってます? [ メッセージ編集済み 編集者: ぽん 編集日時 2003-09-18 19:53 ] | ||||
|
投稿日時: 2003-09-18 20:02
ぽんさん有難うございました。
あと、もう少し教えて下さい。 if(a & (str = String.valueOf(1)) == "1"){ 上記のif文のa &の&は、どのような意味があるのでしょうか? [ メッセージ編集済み 編集者: mhkogawa 編集日時 2003-09-19 00:31 ] | ||||
|
投稿日時: 2003-09-19 08:14
こんにちわ。いつもお世話になっております。
論理積を表すビット演算子です。 a&bであれば、aとbが両方とも1の場合にのみ1を返します。 また、a、bがブール型であれば条件演算子になったと思います。 以下が参考になると思いますよ。 http://www2s.biglobe.ne.jp/~yuuki_ki/java_operator5.htm [ メッセージ編集済み 編集者: ゆう 編集日時 2003-09-19 09:09 ] | ||||
|
投稿日時: 2003-09-19 11:42
どのみち、その条件式には問題がありそうですが・・・(^^;;
機能的に成り立っていないように思います。 | ||||
|
投稿日時: 2003-09-19 12:33
strにはかならず1になるということの問題ですね。もし、これが&ではなく&&になるのであれば、strは0であるということを確かめたいことのように思えます。strには何らかの式がないとこの&と&&の違いは確かめられないので、このString.ValueOfを使用しているのでしょう。これはその他の、たとえは、str + "0"とか、何でもstrの値が変わるものであればよいものです。javaの試験によく出そうな問題です。
| ||||
|
投稿日時: 2003-09-19 18:53
沢山の貴重なご意見有難うございます。
| ||||
1
