2011-02-05 3 views
1

Возможные Дубликаты:
How do I compare strings in Java?
whats the difference between “.equals and ==”ява Println проблема

Привет всем,

System.out.println() ведут себя по-другому со строками. Может ли один объяснить, почему

Смотрите ниже фрагмент кода

String a ="hello" 
String b ="hello" 

System.out.println("a==b"+"is"+a==b) 

Я ожидаю, что это напечатать 'a==b is true', но он просто печатает false и я не знаю почему.

+0

Фактически, самые современные java-компиляторы пул-строки литералы, поэтому он может фактически напечатать 'a == b is true', хотя это просто удача, и, как было сказано выше,' .equals() '- это то, как вы предполагаетесь для сравнения – davin

+3

@ davin: нет, его пример просто печатает 'false', потому что' a' объединяется в '' a == b "+" is "', и его сравнивают с 'b', используя' == ' , –

+0

@Bart, вопрос не выглядел так, когда я прокомментировал. Ваш комментарий и мой, очевидно, не синхронизированы, я изящно убью свой поток («поток» в смысле программирования, а не в смысле форума), мало интересуясь вопросом, я просто указывал на побочный факт, хотя со всеми этими изменениями , это уже не актуально. – davin

ответ

8

Одиночная ложь печатается, потому что вы не группировали свое булево выражение.

Выражение:

"a==b"+"is"+a==b 

оценивается как

("a==b"+"is"+a) == (b) 

в то время как вы хотели, чтобы это сделать конкатенацию:

"a==b"+"is"+ (a==b) 

Тем не менее, вы не должны сравнивать строки используя ==, как указывали другие.

+0

благодарит за ответ. – mahati

+0

@mahati, пожалуйста. –

1

проблема не в System.out.println(); это сравнение объектов String с ==. Используйте метод .equals() для сравнения двух строковых объектов. См. Приведенную ниже ссылку. String Object comparison

+0

* "с System.out.println(); это что-то с сопоставлением объектов String с' == 'Использовать' .equals() '" * - Не могли бы вы предоставить ссылку, которая поддерживает вас? Если это так, я удалю свой -1, но я уверен, что это неверно. –

+0

Ссылка на объект String будет сравниваться, если мы будем использовать == !!! Я не упоминал, что сравнение имеет проблему, я упоминал, что использование == приводит к проблеме. Мы можем не получить фактический результат, если мы используем == для сравнения строк. –

-1

Возможно, это связано с тем, что оно продает a и b как разные объекты. Когда мы создаем такие строки, это относится к различным пулам строк.

+0

Существует только один пул строк (и это не ошибка в этом вопросе в любом случае.) – finnw

Смежные вопросы