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