Não era pra dar erro?[RESOLVIDO]

Pessoal, estou estudando e me deparei com essa dúvida:

 public static void main(String[] args) {
        String tudo ="";
        
        int n=Integer.parseInt(JOptionPane.showInputDialog(null,"Digite o tamanho do vetor"));
        int [] vetor = new int[n];
        
        for (int i = 0; i<vetor.length; i++) {
            vetor[i]=Integer.parseInt(JOptionPane.showInputDialog(null,"Digite o valor para a posição "+i));
            tudo=tudo+"\n"+vetor[i];//UM STRING ARMAZENANDO INT??? POR QUE NÃO DÁ ERRO DE CASTING?
        }
          JOptionPane.showMessageDialog(null,tudo);
        }

    }

Obrigada

como você está concatenando, seu int é automaticamente convertido para String.

isso é tudo tratado “por baixo dos panos” pra você

String recebe String+int, porém int não recebe int+string, visto que um número pode virar uma String, e uma String (Geralmente) não pode virar um número

não por que quando você concatenar uma string com algum outro objeto, este objeto é convertido para string de forma que não haja problemas com a tipagem… acredito que a conversão seja feita chamando o método toString que todos os objetos tem.

estes são exemplos de linhas que funcionam:

	[code]tudo = 1 + tudo;
	tudo = new Teste() + tudo;//assumindo que sua classe se chame Teste por exemplo[/code]

Não sei se entendi bem o que você quis dizer, mas se entendi, esse código não deveria funcionar:

[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */
    package teste;

public class Teste {

public static void main(String[] args) throws Exception {
    System.out.println(1+"estou aqui");
}

}
[/code]

Mas funciona.

@camilaPires: Basicamente, ele está fazendo um cast implícito. Em java, os casts implícitos são para os tipos de dados “mais abrangente” entre os que estiverem sendo comparados, se não for possível compará-los, ele não permite compilar ou lança uma exceçao, dependendo do caso.