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