Conhecer a tipagem de variáveis

Em outras linguagens de programação existe uma função que diz qual o tipo da variável. Ex:

typeof(variavel);

ou algo similar… Só que no Java eu ainda não achei nenhuma funcionalidade que permite o usuário saber qual o tipo da variável. Escrevi esse código abaixo, e percebi que um int convertido para char não se juntam:

int ii = 1;
int ij = (char) ii;
char ik = 'a';

System.out.println(ij + ik);

ele imprime 98 e não 1a.

Eu gostaria de testar se a variável ii foi realmente convertida para char.

Tenta assim:

Integer ii = 1;
String ij =  ii.toString();
char ik = 'a';

System.out.println(ij + ik);

Vamos a explicação:

O java é uma linguagem fortemente tipada, diferente de outras linguagens como por exemplo o PHP que uma variavel pode ser criada e com durante a execução guardar diversos tipos, com o java isso não acontece.

Na sua linha você colocou assim:

Você diz que “converteu”, porém isso não é uma conversão, o que você fez foi um casting, isso quer dizer o seguinte você programador esta dizendo pra o java: "olha java eu vou pegar o conteúdo de uma variável e jogar nessa outra, mas eu garanto que o conteúdo é do tipo (TAL)… "

Conversão foi o que eu fiz no codigo usando a classe Integer e chamando o metodo toString.

E quanto a sua questão de saber identificar o tipo de variável, não entendi muito bem a utilidade pratica, por favor me dê um exemplo.

Veja bem, digamos que queremos identificar se o usuário digitou um número e queremos juntar esse número com um caractere tipo char, só que para isso temos que verificar se o que foi digitado é um número ou um caractere.

Veja bem, se eu for fazer isso, faria da seguinte forma:

Receberia tudo como String e aplicaria um algoritmo assim:

      String input = "A1B2C3D2Z9®*#"; //adicionei uns símbolos pro exemplo fazer sentido

List<Character> letras = new ArrayList<>();
List<Character> numeros = new ArrayList<>();
List<Character> outros = new ArrayList<>();

for (char c : input.toCharArray()) {
    if (Character.isDigit(c)) {
    numeros.add(c);
} else if (Character.isLetter(c)) {
    letras.add(c);
} else {
    outros.add(c);
}
}

for(Character c:letras){
    System.out.println(c);
}

Não me leve a mal @andrebmarinho mas continuo sem entender. O que os arrays adiciona no seu código?

Desculpa, eu havia copiado um codigo na internet pra lhe dar um exemplo, mas fiz umas correções aqui e rodei e funcionou. Veja se é o que você quer, esta acima, acabei de editar.

@andrebmarinho muito obrigado, era isso mesmo que eu queria. Valeu, um forte abraço!

Para os tipos primitivos não há como, o conteúdo de um tipo primitivo sempre será do seu tipo, não há polimorfismo nos tipos primitivos.

Para variáveis de tipos não primitivos (classe, interface e enum), que não sejam null, você pode obter um objeto Class correspondente ao tipo de dado do objeto, utilizando o método getClass().

1 curtida

Compreendo brother. Valeu pelas dicas!