2016-01-07 8 views
-3
public class EqualsCheck { 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
     Scanner sc= new Scanner(System.in); 
     Scanner sc1= new Scanner(System.in); 
     String s1 = sc.next(); 
     String s2 = sc1.next(); 
     equalCheck(s1,s2); 
    } 

    private static void equalCheck(String s1, String s2) { 
     //Using Assignment 
     System.out.println(s1 == s2); 

     //Using equals 

     System.out.println(s1.equals(s2)); 

     //Printing HashCode 

     System.out.println("s1 :"+s1.hashCode()+" s2: "+s2.hashCode()); 
    } 
} 

переданная строка являются:равенства оператор bevaiour динамически переданных значений строк в Java

s1 = "abc"; 
s2 = "abc"; 

Если я делаю s1==s2, он возвращает false. Почему объединение строк здесь не работает.

+0

s1.equals (s2) возвращает true, как ожидалось. – ravikant

+0

Я голосую, чтобы закрыть этот вопрос не по теме, потому что на этот вопрос был дан ответ на SO за миллион раз до –

+0

«Использование Assignment» здесь нет назначения. Это использует * identity *. –

ответ

1

String pooling здесь не работает, потому что вы не помещаете строки в пул строк.

Это не происходит автоматически для строк, построенных во время выполнения. Для этого вам нужно позвонить String.intern().