Em Java, como uma linguagem fortemente tipada, é importante usar o tipo correto de dados para cada variável. Quando tentamos atribuir um valor de um tipo a uma variável de outro tipo incompatível, o compilador gera erros.
Importante: Java verifica os tipos durante a compilação para garantir que operações entre tipos incompatíveis não sejam permitidas, evitando assim erros durante a execução do programa.
Vejamos alguns exemplos de atribuições incorretas de tipos:
public class TiposDadosErrados {
public static void main(String[] args) {
// Tentativa de atribuir um decimal a uma variável do tipo int
int numero = 10.5; // Isso causará um erro de compilação
System.out.println("Número: " + numero);
}
}
O erro ocorre porque estamos tentando atribuir um valor de ponto flutuante (double) a uma variável do tipo int, o que pode resultar em perda de dados (a parte decimal seria perdida).
public class DeclaracoesIndevidas {
public static void main(String[] args) {
// Tentativa de atribuir uma String a uma variável do tipo int
int idade = "25"; // Isso causará um erro de compilação
// Tentativa de atribuir um char a uma variável do tipo boolean
boolean status = 'A'; // Isso causará um erro de compilação
// Tentativa de atribuir um valor boolean a uma variável do tipo double
double valor = true; // Isso causará um erro de compilação
System.out.println("Idade: " + idade);
System.out.println("Status: " + status);
System.out.println("Valor: " + valor);
}
}
Vejamos agora a forma correta de declarar as variáveis:
public class ExemploCorrigido {
public static void main(String[] args) {
// Declaração correta: usando tipo int para número inteiro
int idade = 25;
// Declaração correta: usando tipo double para número decimal
double valor = 10.5;
// Declaração correta: usando tipo char para um caractere
char letra = 'A';
// Declaração correta: usando tipo String para texto
String nome = "João";
// Declaração correta: usando tipo boolean para valor lógico
boolean status = true;
// Exibindo os valores das variáveis
System.out.println("Idade: " + idade);
System.out.println("Valor: " + valor);
System.out.println("Letra: " + letra);
System.out.println("Nome: " + nome);
System.out.println("Status: " + status);
}
}
Idade: 25
Valor: 10.5
Letra: A
Nome: João
Status: true
public class LimitacoesInt {
public static void main(String[] args) {
// Mostrando os limites do tipo int
System.out.println("Valor mínimo do int: " + Integer.MIN_VALUE);
System.out.println("Valor máximo do int: " + Integer.MAX_VALUE);
// Tentando armazenar um valor além do limite
int valorGrande = Integer.MAX_VALUE + 1; // Isso causará overflow
System.out.println("Valor após overflow: " + valorGrande);
}
}
Valor mínimo do int: -2147483648
Valor máximo do int: 2147483647
Valor após overflow: -2147483648
Observe que ao tentar adicionar 1 ao valor máximo do int, ocorre um overflow e o resultado volta para o valor mínimo negativo. Isso acontece porque o espaço de 4 bytes para armazenar um int é limitado.
Teste seus conhecimentos sobre variáveis com tipo de dado errado:
Reforce o conteúdo desta aula com mais dois exercícios práticos: