Não era pra dar erro?[RESOLVIDO]

4 respostas
C

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

4 Respostas

Rodrigo_Sasaki

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

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

M

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
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.
 */
package teste;


public class Teste {

    public static void main(String[] args) throws Exception {
        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.

Criado 11 de abril de 2012
Ultima resposta 11 de abr. de 2012
Respostas 4
Participantes 5