2016-01-07 2 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()); 
    } 
} 

chaîne passée sont:opérateur pour l'égalité bevaiour les valeurs de chaîne transmises dynamiquement en java

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

Si je fais un s1==s2, il retourne false. Pourquoi la mise en pool de chaînes ne fonctionne pas ici.

+0

s1.equals (s2) renvoie true comme prévu. – ravikant

+0

Je vote pour clore cette question hors-sujet parce que cette question a été répondue sur SO un million de fois avant –

+0

"Using Assignment" il n'y a aucune affectation ici. Ceci utilise * identity *. –

Répondre

1

Le regroupement de chaînes ne fonctionne pas ici car vous ne mettez pas de chaînes dans le pool de chaînes.

Cela ne se produit pas automatiquement pour les chaînes créées au moment de l'exécution. Vous devez appeler le String.intern() pour le faire.