Pessoal, estou estudando e me deparei com essa dúvida:
publicstaticvoidmain(String[]args){Stringtudo="";intn=Integer.parseInt(JOptionPane.showInputDialog(null,"Digite o tamanho do vetor"));int[]vetor=newint[n];for(inti=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);}}
como você está concatenando, seu int é automaticamente convertido para String.
isso é tudo tratado “por baixo dos panos” pra você
M
Mitidiero
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
maior_abandonado
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:
tudo = 1 + tudo;
tudo = new Teste() + tudo;//assumindo que sua classe se chame Teste por exemplo
E
evefuji
Mitidiero:
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 sei se entendi bem o que você quis dizer, mas se entendi, esse código não deveria funcionar:
/* * To change this template, choose Tools | Templates * and open the template in the editor. */packageteste;publicclassTeste{publicstaticvoidmain(String[]args)throwsException{System.out.println(1+"estou aqui");}}
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.