Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Неправильно срабатывает if...else


Автор: kaa 16.5.2008, 00:30
Есть код:

Код

String pub = this.theme.getAttribute("public");
JOptionPane.showMessageDialog(this.st, pub);
if(pub=="1")
   this.publish = true;
else
   this.publish = false;
JOptionPane.showMessageDialog(this.st, this.publish.toString());


Так вот... Первый showMessage показывает что у меня переменной pub "1", однако в this.publish пишется false
Если сделать так:
Код

...
String pub="1";
if(pub=="1")
   this.publish = true;
...


то всё работает :( 
Как так? Кто-нить ткните меня носом где тут ошибка?

Автор: Maksym 16.5.2008, 00:34
kaa
Строки сравнивают через equals(..), в своем примере ты, грубо говоря, сравнил значения ссылок на объекты (использовав "=") . Во втором примере срабатывает пул строковых констант (pub и анонимная строка "1" ссылаются на один и тот же экземпляр в пуле)

Автор: barin_Student 16.5.2008, 08:10
Код

String pub = this.theme.getAttribute("public");
JOptionPane.showMessageDialog(this.st, pub);
if(pub.equals("1"))
   this.publish = true;
else
   this.publish = false;
JOptionPane.showMessageDialog(this.st, this.publish.toString());


вот так попробуйте.

Добавлено через 1 минуту и 5 секунд
Ой , уже ответили... извиняюсь Maksym, ответил первый. smile 

Автор: kaa 16.5.2008, 11:07
Maksym, 
barin_Student, 
мдя... Упустил этот момент, привык к PHP smile

пасибо всем!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)