Pular para o conteúdo principal

Questão de Programação — Java — Quadrix 2025

ProgramaçãoJava
Código
qg595101
Banca
Quadrix
Órgão
CFO
Ano
2025
Nível
Médio
Cargo
Técnico em Tecnologia da Informação
As linguagens de programação são responsáveis por tirar do papel os algoritmos criados pelo programador e por transformá‑los em programas para serem executados pelos computadores modernos. Considerando essa informação, julgue o item seguinte.Em Java, as variáveis de tipo primitivo não consomem memória, pois são apenas referências a objetos armazenados na heap.
  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoE — Errado

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Tipos primitivos e referências em Java

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

int, double, boolean, char

String, arrays, objetos de classes

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)

NÃO CAIA NESSA!

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.

Tipos primitivos (Java)
  • 1Armazenam o valor diretamente
    • int, double, boolean, char
    • Consomem memória (tamanho fixo)
  • 2Onde ficam
    • Pilha (variável local)
    • Embutido no objeto (campo)
  • 3Atribuição copia o valor
  • 4Tipos de referência
    • Armazenam endereço (referência)
      • String, arrays, objetos
    • Objeto fica na heap
    • Atribuição copia a referência
LEVEL · soulevel.com.br

Item — ❌ ERRADO

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