/** @(#)TestEqualString.java 2012,2013 Datos de prueba para comparar hileras. @author Adolfo Di Mare */ import junit.framework.*; /** Muestra que el operador '==' no funciona bien con {@code String}. */ public class TestEqualString extends TestCase { /* Datos de prueba para comparar hileras. */ public static void test_EqualString() { String s = "abc"; String r = "a"; r += "bc"; assertFalse( r==s ); assertFalse( r=="abc" ); assertTrue( r.equals("abc") ); for ( int i=0; i<3;++i ) { // tiene las mismas letras assertTrue( r.charAt(i)==s.charAt(i) ); } /* Aunque 'r' contiene la hilera "abc", el operador '==' retorna falso en la comparación pues, en lugar de comparar contenidos, ese operador más bien compara si las 2 instancias están almacenadas en la misma posición de memoria. Como la clase String tiene redefinido el equals(), al usarlo para comparar por igualdad sí ocurre lo esperado: las 2 hileras se comparan letra por letra. */ } /* Datos de prueba para convertir números en hileras. */ public static void test_Convierte() { int i = 123; { String s = "" + (i); assertTrue( s.compareTo("123") == 0 ); } { String r = (i) + ""; assertTrue( r.compareTo("123") == 0 ); } { // String t = (i); // no compila } } } // EOF: TestEqualString.java