- PR -

if文と演算子について

1
投稿者投稿内容
soccer
ベテラン
会議室デビュー日: 2003/09/17
投稿数: 99
投稿日時: 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/05/13
投稿数: 157
投稿日時: 2003-09-18 19:39
引用:

if文の中の(str = String.valueOf(1)) == "1"の == "1"は、どんな意味があるのでしょうか?


"=="は参照の比較です。
つまりstrと"1"が同じインスタンスかどうかの比較です。
(この場合、結果は常に"false")

String.valueOf(1).equals("1")なら文字列の比較になりますので結果は"true"です。

・・・これで質問の答えになってます?

[ メッセージ編集済み 編集者: ぽん 編集日時 2003-09-18 19:53 ]
soccer
ベテラン
会議室デビュー日: 2003/09/17
投稿数: 99
投稿日時: 2003-09-18 20:02
ぽんさん有難うございました。
あと、もう少し教えて下さい。
if(a & (str = String.valueOf(1)) == "1"){
上記のif文のa &の&は、どのような意味があるのでしょうか?


[ メッセージ編集済み 編集者: mhkogawa 編集日時 2003-09-19 00:31 ]
ゆう
ベテラン
会議室デビュー日: 2003/06/20
投稿数: 56
投稿日時: 2003-09-19 08:14
こんにちわ。いつもお世話になっております。

引用:

あと、もう少し教えて下さい。
if(a & (str = String.valueOf(1)) == "1"){
上記のif文のa &の&は、どのような意味があるのでしょうか?



論理積を表すビット演算子です。
a&bであれば、aとbが両方とも1の場合にのみ1を返します。
また、a、bがブール型であれば条件演算子になったと思います。
以下が参考になると思いますよ。

http://www2s.biglobe.ne.jp/~yuuki_ki/java_operator5.htm

[ メッセージ編集済み 編集者: ゆう 編集日時 2003-09-19 09:09 ]
ウラタン
常連さん
会議室デビュー日: 2003/07/25
投稿数: 29
投稿日時: 2003-09-19 11:42
どのみち、その条件式には問題がありそうですが・・・(^^;;
機能的に成り立っていないように思います。
begood
ベテラン
会議室デビュー日: 2003/09/12
投稿数: 97
お住まい・勤務地: とうきょー
投稿日時: 2003-09-19 12:33
strにはかならず1になるということの問題ですね。もし、これが&ではなく&&になるのであれば、strは0であるということを確かめたいことのように思えます。strには何らかの式がないとこの&と&&の違いは確かめられないので、このString.ValueOfを使用しているのでしょう。これはその他の、たとえは、str + "0"とか、何でもstrの値が変わるものであればよいものです。javaの試験によく出そうな問題です。
soccer
ベテラン
会議室デビュー日: 2003/09/17
投稿数: 99
投稿日時: 2003-09-19 18:53
沢山の貴重なご意見有難うございます。
1

スキルアップ/キャリアアップ(JOB@IT)