2015-08-12 3 views
-5
import java.io.*; 

    public class StringTest{ 
     public static void main(String[] args){ 

      String a="Hello"; 
      String b="Hello"; 

      String c=new String("Hello"); 
      String d=new String("Hello"); 

      System.out.println(a+c); 
      System.out.println(b+d); 
      System.out.println((a+c)==(b+d)); 
     } 
    } 

Почему это System.out.println((a+c)==(b+d)); заявление, возвращающее false?System.out.println ((a + c) == (b + d)); почему это утверждение возвращает false?

ответ

1

Поскольку String является классом, из-за этого оператор == проверяет ссылочное равенство. Вместо этого используйте метод equals(Object). (то есть: (a + c).equals(b + d);)

+2

В этом вопросе так много ответов в 'stackOverFlow'. –

+0

, если я сравниваю a == c, тогда '==' проверяет ссылку и возвращает true, так что то же самое должно произойти для этого ((a + c) == (b + d)) утверждение также правильно? –

+0

@ M.Kishore нет, единственное сравнение, которое возвращает true, должно быть 'a == b', потому что эти объекты будут указывать на один и тот же экземпляр String (они являются как строковыми литералами). «Новый String (« Hello ») заставит String быть создан как новый объект. [прочитать это] (http://stackoverflow.com/questions/3052442/what-is-the-difference-between-text-and-new-stringtext) – SomeJavaGuy

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