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);
}
}
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]
@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.