SóProvas


ID
770188
Banca
CESPE / CEBRASPE
Órgão
Banco da Amazônia
Ano
2012
Provas
Disciplina
Programação
Assuntos

Julgue os itens seguintes, acerca da linguagem de programação
Java.

O código Java apresentado abaixo não será compilado.

public class teste {
       public static void main(String[] args) {
               booleanteste = false;
               if(teste = true){}
       }
}


Alternativas
Comentários
  • O tipo está colado ao nome da variável, portanto não compila.
    Não fosse isso, compilava de boas!!
    A resposta correta seria "certo", pois o enunciado afirma que o código não compila.
    Gabarito bombado.
  • o tipo não está colado ao tipo da variavel,  creio que na questão original há o espaço normalmente portanto o código compila sim, a resposta é ERRADO.
  • O tipo está colocado sim: booleanteste = false;

    O código foi retirado direto da prova.
  • Só um comentário importante:
    Quando a variável é booleana, pode haver uma atribuição no lugar da comparação dentro do if. De qualquer forma, ela vai retornar uma variável booleanda. Porém, não compilaria se ao invés da variável booleana tivesse uma outra variável, como exemplo int.
  • Olá, pessoal!
    O gabarito foi atualizado para "C", conforme edital publicado pela banca e postado no site.
    Justificativa da banca:  O código apresentado no item não irá compilar, pois a declaração da variável está errada. Dessa forma, a afirmação do item está correta, devendo o gabarito ser alterado.
    Bons estudos!
  • O que me chamou a atenção nesta questão foi isso:
    if (teste = true)
    Pra mim operadores de comparação usava-se o símbolo ==
    Fiz uns testes aqui no netbeans com tipos diferentes de boolean e nestes casos deve-se usar o símbolo ==
    public class teste {
        public static void main(String[] args) {
            int teste = 1;
            int i = 1;
            if(teste = i){
                System.out.println("compila sim");
            }
        }
     }
    Dá erro de compilação porque o operador de comparação correto que deveria ser utilizado é o ==.
    Fica a dica!
    Grande abraço
  • @Renato Bueno

    Cuidado com esse lance do if (teste=i)

    No teu caso o código não funcionou porque você declarou teste como inteiro. E quando você fez teste = i, você está atribuindo i (inteiro) ao atributo teste, que retornará o valor 1. O problema é que o if espera receber um valor boolean, como você tá passando teste = i o valor que será passado para o if é um inteiro e não um boolean.

    teste.java:9: error: incompatible types
    if(teste = i){


    Se você alterar seu código e declarar teste e o i como boolean e setar um valor true no i, vai ver que vai compilar. Na questão não compila, por causa do espaço, se não fosse isso o código compilaria sem problemas.

    Esse lance de usar = no lugar de == é uma pegadinha comum em concursos e em provas de certificação JAVA. Lembre-se: se você usar = dentro do if você está atribuindo o valor durante o teste. Não tem problema fazer isso, só não tem lógica porque sempre o valor será igual ao valor que você está sendo atribuído.

    Então fica a dica, muito cuidado com isso! vlw
  • CERTO. 
    
    
     teste.java:3: error: cannot find symbol booleanteste = false; ^ symbol: variable booleanteste location: class teste teste.java:4: error: cannot find symbol if(teste = true){} ^ symbol: variable teste location: class teste 2 errors

  • Será que o erro está na declaração da variácel    booleanteste = false;?   (correto) boolean teste = false;

  • Se não foi erro do QC, é claro que não vai compilar por que não tem espaço entre "boolean" e "teste". Agora acredito que o fato de o operador de comparação tá trocado pelo de atribuição não ocasiona erro de compilação