Considerando a sintaxe e a semântica da linguagem Java e com...
Considerando a sintaxe e a semântica da linguagem Java e com base nos conceitos de programação orientada a objetos, julgue o item a seguir.
Em Java, os parâmetros de tipo primitivo são passados por valor ou referência, dependendo de como está especificado o cabeçalho do método.
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Gabarito: E - Errado
Para compreender a questão, é essencial saber como o Java lida com a passagem de parâmetros em métodos. Na linguagem Java, existem dois tipos de passagem de parâmetros: passagem por valor e passagem por referência. No caso dos tipos primitivos, como int, float, double, boolean, entre outros, o Java sempre passa seus parâmetros por valor. Isso significa que uma cópia do valor é feita e passada para o método, e qualquer mudança neste valor dentro do método não reflete na variável original que foi passada.
Para os objetos, a coisa funciona um pouco diferente, pois o que é passado para o método é a referência ao objeto, e não o objeto em si. No entanto, essa passagem de referência também é feita por valor. Ou seja, a referência é copiada para o parâmetro do método chamado, mas ainda assim, é uma cópia, de modo que reatribuir o parâmetro dentro do método não altera a variável original que referenciava o objeto.
Portanto, não há nenhuma forma de especificar no cabeçalho do método em Java para que os parâmetros de tipos primitivos sejam passados por referência. A afirmação de que em Java "os parâmetros de tipo primitivo são passados por valor ou referência, dependendo de como está especificado o cabeçalho do método" está incorreta, pois a passagem é sempre feita por valor para tipos primitivos, independentemente de como o método é definido.
Entendendo isso, a alternativa correta para a questão é E, já que a afirmação proposta pelo enunciado não condiz com o comportamento da linguagem Java.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
A afirmativa está incorreta.
Em Java, os parâmetros de tipo primitivo (int, double, char, boolean, etc.) são sempre passados por valor, independentemente de como está especificado o cabeçalho do método. Isso significa que quando um método é chamado com um parâmetro de tipo primitivo, uma cópia do valor desse parâmetro é passada para o método. Qualquer alteração feita no valor do parâmetro dentro do método não afeta o valor original do parâmetro fora do método.
Por outro lado, os parâmetros de tipo não primitivo (objetos) são passados por referência. Isso significa que, quando um método é chamado com um parâmetro de tipo não primitivo, o endereço de memória do objeto correspondente é passado para o método. Dessa forma, se o método modifica algum atributo do objeto, essa modificação é refletida no objeto original fora do método.
É importante lembrar que, embora os parâmetros de tipo não primitivo sejam passados por referência, a própria referência ao objeto é passada por valor. Isso significa que, se a referência ao objeto é modificada dentro do método, essa modificação não é refletida fora do método.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo