Operadores apropriados - Desmistificando a Certificação SCJP6 Parte VIII - Parte 1

Neste artigo iremos tratar a escrita de código aplicando de forma correta os operadores apropriados, incluindo os de atribuição. Serão investigados também os operadores de comparação. No fim analisaremos as estruturas de controle de fluxo e apli

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

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

Artigos relacionados