Dúvida Iniciante Java // Conversores de Tipos Primitivos

Boa tarde pessoal, verificando um exemplo no livro eu fiquei com uma dúvida sobre esse código.

_ public class ConversorDeTipos {

     public static void main(String[] args) {
	
	String s1 ="10";
	int v = Integer.parseInt(s1); 
	float x = Float.parseFloat(s1); 
	double y = Double.parseDouble(s1);
	int w = (int) x; 
	int z = (int) y
	String s2 = String.valueOf(v);


	System.out.println(s2 + w + z); 
       }

}

Como as variáveis w e z são int e não string, elas seriam variáveis de números, então por que não somaram? Não deveria mostrar como 10 20 invés de 101010?

s2 é String, então ele está fazendo por debaixo dos panos, convertendo “w” e “z” em String e concatenando na s2.

Faz um teste, tira o s2 e manda executar.

1 curtida

Entendi, o interessante é que fiz um teste colocando a "(w + z + s2) e a saída foi a soma mais a string, ou seja 2010. Colocando os int primeiro ele faz a soma normalmente.

Valeu Luan,

Ele faz a leitura da esquerda pra direita. Então se você colocar primeiro o s2 e depois os ints, ele vai entender que é para concatenar.

Se você colocar os ints antes, ele vai somar e depois concatenar.

Experimenta colocar int + String + int, vai ver q ele não vai somar, vai concatenar.
System.out.println(10 + "10" + 10);

1 curtida

Entendido, obrigado Luan!!!

Acho que você está no inicio dos estudos, então, a titulo de curiosidade, coloca esse código ai, executa e avalia a saída…

System.out.println(String.valueOf(10) + "10" + String.valueOf(10));
System.out.println(10 + Integer.parseInt("10") + 10);
System.out.println(10 + Integer.parseInt("1O") + 10);