System.out.println comportamiento al usar cuerdas y juntos int

Vikash Singh:

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.

cнŝdk:

En realidad no es println()la aplicación que está causando esto, este es Javamanera 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 stringviene antes int(o cualquier otro tipo) en la operación Stringde conversión se utiliza y todo el resto de los operandos serán tratados como strings, y que consta únicamente de una Stringoperación de concatenación .
  • Si intes lo primero en la operación que será tratado como int, por lo tanto additionse utiliza la operación .

Por eso a + b +" "da 7porque Stringestá en el final de la operación, y para otras expresiones a + b +" "+ a+bo ""+ a+b, las variables ay bserá tratado como stringssi el viene en pos de una Stringen la expresión.

Para más detalles se puede comprobar Concatenación de cadenas Operador + en Java Espec .

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=224727&siteId=1
Recomendado
Clasificación