Considere el siguiente fragmento de código -
public class Student {
public static void main(String args[]) {
int a = 3;
int b = 4;
System.out.println(a + b +" ");
System.out.println(a + b +" "+ a+b);
System.out.println(""+ a+b);
}
}
La salida para el fragmento anterior viene como -
7
7 34
34
Está claro a partir de la salida que si usamos cadenas inicialmente en el estado de impresión y luego se concatenan los números enteros. Sin embargo, si usamos número entero al principio y luego se agregan y se muestran los valores.
Por favor alguien puede explicar por qué es este comportamiento?
Incluso traté de mirar a la implementación del método println () en la clase de PrintStream pero no pude averiguar.
En realidad no es println()
la aplicación que está causando esto, este es Java
manera de tratar al +
operador cuando se trata de Strings
.
De hecho, la operación se trata de izquierda a derecha por lo que:
- Si el
string
viene antesint
(o cualquier otro tipo) en la operaciónString
de conversión se utiliza y todo el resto de los operandos serán tratados comostrings
, y que consta únicamente de unaString
operación de concatenación . - Si
int
es lo primero en la operación que será tratado comoint
, por lo tantoaddition
se utiliza la operación .
Por eso a + b +" "
da 7
porque String
está en el final de la operación, y para otras expresiones a + b +" "+ a+b
o ""+ a+b
, las variables a
y b
será tratado como strings
si el viene en pos de una String
en la expresión.
Para más detalles se puede comprobar Concatenación de cadenas Operador + en Java Espec .