Questão de Programação — Java — Quadrix 2025
- Código
- qg595101
- Banca
- Quadrix
- Órgão
- CFO
- Ano
- 2025
- Nível
- Médio
- Cargo
- Técnico em Tecnologia da Informação
- CCerto
- EErrado
GabaritoE — Errado
Gabarito: E — ERRADO. A afirmação está incorreta porque, em Java, as variáveis de tipo primitivo consomem memória e armazenam diretamente o valor, não sendo referências a objetos na heap. Apenas variáveis de tipos de referência (como objetos e arrays) armazenam referências para objetos alocados na heap.
Em Java, os tipos de dados são divididos em duas grandes categorias: tipos primitivos e tipos de referência. Os tipos primitivos — byte, short, int, long, float, double, char e boolean — armazenam valores diretamente na memória, seja na pilha (stack) quando são variáveis locais, seja como parte de um objeto na heap quando são campos de instância. Eles não são objetos e não possuem referências; a variável primitiva é o próprio valor.
Por outro lado, os tipos de referência (classes, interfaces, arrays, enums) armazenam uma referência (um endereço de memória) que aponta para o objeto real alocado na heap. Quando você declara String s = "Java";, a variável s contém uma referência para o objeto String na heap. Já quando declara int x = 10;, a variável x contém diretamente o valor 10, sem qualquer referência.
A confusão que a banca explora é justamente essa: inverter o comportamento dos tipos primitivos com o dos tipos de referência. A afirmação diz que primitivos "não consomem memória, pois são apenas referências a objetos armazenados na heap" — exatamente o oposto da realidade. Primitivos consomem memória (por exemplo, um int ocupa 32 bits, um long ocupa 64 bits) e não são referências; eles armazenam o valor diretamente.
Para fixar o contraste:
Característica | Tipo primitivo | Tipo de referência |
|---|---|---|
O que a variável armazena | O valor em si | Uma referência (endereço) |
Onde o dado fica | Na pilha (variável local) ou embutido no objeto (campo) | Na heap (o objeto referenciado) |
Exemplos |
|
|
Consome memória? | Sim, o tamanho do tipo | Sim, o tamanho da referência + o objeto na heap |
Atribuição | Copia o valor | Copia a referência (aponta para o mesmo objeto) |
A banca inverteu completamente o conceito: afirmou que primitivos são referências a objetos na heap, quando na verdade são os tipos de referência que apontam para objetos na heap, e os primitivos armazenam o valor diretamente. O candidato que confunde "primitivo" com "referência" cai na armadilha. Lembre-se: int é valor, Integer é objeto; String é referência, char é valor.
A afirmação está errada por dois motivos: (1) variáveis de tipo primitivo consomem memória — cada tipo tem um tamanho fixo (ex.: int = 32 bits, long = 64 bits); (2) elas não são referências a objetos — armazenam o valor diretamente. A heap armazena objetos e arrays, mas os primitivos, quando são variáveis locais, ficam na pilha (stack); quando são campos de instância, ficam embutidos no objeto na heap, mas ainda assim como valor, não como referência.
Gabarito: E — ERRADO.
Link permanente: /questoes/qg595101