Operadores de atribuição

Procure saber quando uma conversão implícita irá acontecer, quando a conversão explícita é obrigatória e quando poderá haver cortes. Não se esqueça que uma variável de referência não é um objeto e sim uma maneira de se chegar ao objeto.

Operadores de atribuição compostos

Somente os 4 mais utilizados (+=, -+, *= e /=) poderão ser cobrados no exame. Veja alguns exemplos:


        z = z-9;// corresponde a z -=9

        a = a+1*6;// corresponde a a +=1*6

        a *=1+6;
        

A expressão à direita é colocada entre parênteses. Sendo assim, a avaliação é feita do seguinte modo:


        a *=(1+6);

        a*=7;

        a = a*7;
        

Analise um exemplo mais elaborado:


        package br.devmedia;



        public class Executavel {



        /**

        * @param args

        */

        public static void main(String[] args) {

        int y = 2;

        y *=2+2;

        System.out.print(y+" ");

        int z = 5;

        z /=2+3;

        System.out.print(z+" ");

        int a = 15;

        a %=1+5;

        System.out.println(a);

        }

        }
        

Saída: 8 1 3

Operadores de comparação

É essencial que você tenha em mente que o exame aborda os seguintes operadores de comparação: </, <=, >, >=, ==, !=. Os operadores de comparação, em todos os casos, resultam em um valor booleano, isso quer dizer, false ou true.

Cada comparação pode envolver 2 números, incluindo o tipo char, duas variáveis de referência ou dois valores booleanos.


        boolean b = (11>2)==(1>0);

        System.out.println("Value of b:"+b);
        

Não tem sentido em compararmos tipos incompatíveis como um char com um long. É válido que você compreenda que o código a seguir é válido:


        package br.devmedia;

        public class Main {

        public static void main(String args []){

        boolean x;

        if(x=true){

        System.out.println("true");

        }

        }

        }
        

A variável x não está sendo comparada com true, mas sim está sendo atribuida como true, então será impresso: “true”.

Enums e igualdade

Após a declaração de um enum, ele não pode ser expandido, ou seja, eles são imutáveis. Em tempo de execução, é impossível criar novas constantes enum.

Podemos usar o método equals() ou o operador == para verificar se duas variáveis se referem a mesma constante enum.


        package br.devmedia;



        public class EnumIgual {



        enum Color{VERDE, AMARELO}

        public static void main(String []args){

        Color color1 = Color.VERDE;

        Color color2 = Color.VERDE;

        if(color1==color2){

        System.out.println("color1==color2");

        }

        if(color1.equals(color2)){

        System.out.println("color1 equals color2");

        }

        }

        }

        Console:

        color1==color2

        color1 equals color2
        

instanceOf

O operador instanceOf é utilizado apenas com variáveis de referência e permite saber se um objeto é de um tipo específico.

Sempre é retornado verdadeiro se o objeto comparado (superclasse) puder ser atribuído ao outro (subclasse). Ele também auxilia, protegendo contra uma conversão inválida. Veja abaixo:


        package br.devmedia;



        interface Empregavel{}

        class Funcionario implements Empregavel{}

        class Chefe extends Funcionario{}

        class Dono extends Chefe{}

        public class Principal {



        /**

        * @param args

        */

        public static void main(String[] args) {

        Dono dono = new Dono();

        System.out.println(dono instanceof Empregavel);



        }



        }
        

O programa acima imprime true. É impossível utilizar o operador instanceOf para realizar testes envolvendo 2 hierarquias de classes diferentes.

Operação de concatenação de Strings

A avaliação do operador é feita sempre da esquerda para direita. Se uma String estiver participando da operação, o resultado será uma String.

Decremento/Incremento

  • Pré-incremento -> a=++b -> Primeiramente incrementa e depois o valor é utilizado.
  • Pós-incremento -> a=b++ -> Primeiramente o valor é utilizado e em seguida é incrementado.

Para a prova, fique atento com perguntas que usem os operadores de decremento e incremento em uma variável final. Já variáveis final não podem ser modificadas, os operadores de incremento/decremento não podem ser utilizados e qualquer tentativa causará um erro de compilação.

Na próxima parte do artigo abordaremos mais operadores e instruções if e switch.


Leia todos artigos da série