2016-06-24 3 views
-1
public class HelloWorld{ 

    public static void main(String []args){ 
     String a= "hello"; 
     String ab= a +"John"; 
     String abc = "helloJohn"; 
     System.out.println(ab==abc); 

    } 
} 

ab==abc Он печатает ложные. Не должно быть правдой .. ??Java Строка пула Ошибка хранения

+1

вам необходимо изучить больше о == и равный метод. –

+0

вам новые ребята должны google перед отправкой вопроса. –

+1

Я думаю, что его точка не сравнивает значение, он скорее спрашивает, почему 'abc' не является той же ссылкой, что и' ab'! Поскольку я не могу опубликовать ответ, я объясню это здесь: Поскольку Строки неизменяемы, при использовании оператора '+' для конкатенации двух строк создается новая String. Вот почему сравнение ссылки (используя '==') возвращает 'false'. – eol

ответ

0

Вы должны использовать для Stringequals/equalsIgnoreCase. '==' сравнивает объекты, NOT VALUES. Потому что когда вы делаете String a = "aa", вы создаете новый объект (например, new String("aa")). В java есть методы equals() и hashCode(), унаследованные от класса Object, но вы можете их переопределить.

0

Используйте yourStringVar.equals(anotherString), чтобы проверить, содержат ли они одну и ту же последовательность символов, используйте ==, чтобы проверить, относятся ли они к одному и тому же объекту.

0

В java String - это объект, поэтому два String-объекта, которые имеют одинаковое содержимое, не будут равны (потому что это разные объекты), поэтому abc == ab не является истинным. Но есть методы для сравнения содержимого объектов String. К ним относятся:

abc.equals(ab) 

или

abc.compareTo(ab) == 0 
Смежные вопросы