unidimensional ticket termica print para mandar imprimir impresora como codigo arreglo java string

ticket - java printing



Obtención de resultados extraños al imprimir el resultado de una comparación de cadena (3)

Estoy enfrentando un problema con esta línea (comentado abajo):

System.out.println("Using == ::"+s3==s4)

que da salida a false .

Sin embargo, System.out.println(s3==s4) resultado true .

Ahora, no puedo entender por qué estoy obteniendo este resultado:

public class string { public static void main(String[] args){ String s3="Shantanu"; String s4=s3; String s1=new String("java"); String s2=new String("javaDeveloper"); System.out.println("Using Equals Method::"+s1.equals(s2)); System.out.println("Using Equals Method::"+s3.equals(s4)); System.out.println("Using == ::"+s3==s4);//Problem is here in this line System.out.println(s1+"Directly printing the s2 value which is autocasted from superclass to string subclass "); System.out.println("Directly printing the s1 value which is autocasted from superclass to string subclass "+s2); System.out.println(s3); } }

Output-Using Equals Method::false Using Equals Method::true Using == ::false java Directly printing the s2 value which is autocasted from superclass to string subclass Directly printing the s1 value which is autocasted from superclass to string subclass javaDeveloper


Está utilizando este código:

System.out.println("Using == ::"+ s3==s4);

Que se está evaluando como:

System.out.println( ("Using == ::" + s3) == s4);

Por lo tanto, está obteniendo falso como salida.

La razón es que según la prioridad del operador + es mayor que == según esta tabla de Operator Precedence : precedence

Como otras respuestas dicen que necesita usar corchetes que encierran su expresión booleana:

System.out.println("Using == ::" + (s3==s4));


La línea es correcta:

"Using == ::"+s3 no es igual a s4

Tendrás que cambiar tu código:

"Using == ::"+(s3==s4)

Editar: La salida del código de dar es:

Using Equals Method::false Using Equals Method::true false javaDirectly printing the s2 value which is autocasted from superclass to string subclass Directly printing the s1 value which is autocasted from superclass to string subclass javaDeveloper Shantanu


Te estás perdiendo un conjunto de paréntesis:

System.out.println("Using == ::" + (s3==s4));

En su versión, "Using == ::" + s3 se compara a través de == con s4 , que no es lo que desea.

En general, + tiene una precedence más alta que == , por lo que "Using == ::" + s3==s4 se evalúa como ("Using == ::" + s3) == s4 .