Junior
O que são as classes envolventes (Wrapper classes) em Java?
sobes.tech IA
Resposta da IA
As classes wrapper em Java são classes que fornecem uma representação orientada a objetos dos tipos de dados primitivos. Elas permitem usar valores primitivos em contextos onde são necessários objetos, por exemplo, em coleções ou ao trabalhar com concorrência.
Principais classes wrapper:
ByteShortIntegerLongFloatDoubleBooleanCharacter
Exemplos de uso:
Uso de primitivos:
// Tipo primitivo
int x = 10;
Uso da classe wrapper:
// Classe wrapper
Integer y = new Integer(20); // Forma obsoleta de criar
Integer z = 30; // Autoboxing (conversão automática de primitivo para objeto)
Conversão entre primitivos e objetos wrapper:
- Autoboxing: Conversão automática de primitivo para objeto wrapper.
// Autoboxing int primitiveInt = 100; Integer wrapperInt = primitiveInt; - Unboxing: Conversão automática de objeto wrapper para primitivo.
// Unboxing Integer wrapperInteger = new Integer(200); int primitiveInteger = wrapperInteger;
Vantagens das classes wrapper:
- Trabalhar com coleções: Coleções (
List,Set,Map) armazenam apenas objetos. - Trabalhar com
null: Objetos wrapper podem ter valornull, ao contrário dos primitivos. - Fornecem métodos úteis: Classes wrapper têm métodos para converter strings, comparar valores, etc. Por exemplo,
Integer.parseInt(String s). - Trabalhar com genéricos: Genéricos funcionam apenas com objetos.
Desvantagens das classes wrapper:
- Consumo de memória: Objetos wrapper ocupam mais memória do que primitivos.
- Redução de desempenho: A conversão automática (autoboxing e unboxing) pode diminuir ligeiramente o desempenho.
Exemplo de uso em coleção:
import java.util.ArrayList;
import java.util.List;
public class WrapperExample {
public static void main(String[] args) {
List<Integer> numbers = new ArrayList<>();
numbers.add(10); // Autoboxing
numbers.add(new Integer(20)); // Criação explícita do objeto
int firstNum = numbers.get(0); // Unboxing
System.out.println(firstNum);
}
}