Operadores unários em Java

OTUS está lançando um novo programa profissional de preparação de certificação Oracle Java Programmer (OCAJP) amanhã . Convidamos você a assistir à gravação da aula de demonstração gratuita "Tipos de dados Java: identificadores e primitivos" e continuamos a publicar uma série de artigos de Vladislav Rodin - chefe do grupo de desenvolvimento, professor do MIPT e foxminded.





Introdução



A certificação OCA (Oracle Certified Associate Java SE8 Programmer) oferece uma série de atribuições peculiares que testam um conhecimento profundo da linguagem de programação Java. Todo o bloco é dedicado a expressões, loops e operadores. Falaremos sobre o último hoje.



Prioridade do operador



O operador aceita argumentos como entrada e retorna alguns valores. Existem operadores unários, binários e ternários. Por exemplo ,! False é unário, a + b é binário e? : - é o único operador que aceita três argumentos.



A primeira coisa a lembrar é a precedência dos operadores:



  1. Operadores pós-unários: exceção ++ e exceção -
  2. Operadores pré-unários: ++ exceção e --exception
  3. O resto dos operadores unários: +, - ,!
  4. Multiplicação, divisão, ficando o restante: *, /,%
  5. Adição e subtração: +, -
  6. Operadores de bit shift: <<, >>, >>>
  7. Operadores de comparação: <,>, <=,> =, instanceof
  8. Operadores de igualdade-desigualdade: == ,! =
  9. Operadores lógicos: &, |, ^
  10. Operadores lógicos de curto-circuito: &&, ||
  11. Operador ternário: expressão booleana? expression1: expres-

    sion2
  12. Operadores de atribuição: =, + =, - =, * =, / =,% =, & =, ^ = ,! =, << =, >> =, >>> =


Trabalho com operadores unários



Falamos sobre operadores binários da última vez. Hoje vamos discutir os operadores unários, que segue do título do artigo. No exame, eles podem oferecer expressões bastante complexas para o cálculo das quais você precisa lembrar a ordem de sua execução.



Operadores de mudança de sinal e inversão lógica



Operador lógico inverso ! aplica-se apenas a variáveis ​​do tipo booleano e transforma o valor de verdadeiro em falso e vice-versa. Por exemplo:



boolean x = false;
System.out.println(x); // false
x = !x;
System.out.println(x); // true


Operador de mudança de sinal - aplica - se apenas a números e sinal invertido:



double x = 1.21;
System.out.println(x); // 1.21
x = -x;
System.out.println(x); // -1.21
x = -x;
System.out.println(x); // 1.21


Java, em contraste com o mesmo C, separa claramente os tipos de dados inteiros e booleanos e, portanto, o uso do operador de mudança de sinal para booleano ou o uso do operador de inversão lógica leva a erros de compilação:



int x = !5; // DOES NOT COMPILE
boolean y = -true; // DOES NOT COMPILE
boolean z = !0; // DOES NOT COMPILE


Operadores de incremento e decremento



Os operadores de incremento ++ e decremento são aplicados a variáveis ​​inteiras e possuem duas variações: pós-incremento (decremento) e pré-incremento (decremento), no código i ++ (i--) e ++ i (--i), respectivamente. A diferença entre as variações é que ++ i incrementa a variável e retorna o novo valor, enquanto i ++ retorna o valor antigo e só então incrementa a variável. A diferença pode ser vista mais claramente neste trecho de código:



int counter = 0;
System.out.println(counter); // Outputs 0
System.out.println(++counter); // Outputs 1
System.out.println(counter); // Outputs 1
System.out.println(counter--); // Outputs 1
System.out.println(counter); // Outputs 0


No exame, várias tarefas complicadas podem ser oferecidas, em que tais operadores são uma carroça e um pequeno carrinho. Por exemplo, tal tarefa pode ser oferecida.



O que será exibido como resultado deste programa?

int x = 3;
int y = ++x * 5 / x-- + --x;
System.out.println("x is " + x);
System.out.println("y is " + y);


O problema é que x muda várias vezes na mesma linha.



Para resolver esses problemas, você pode analisar a expressão da esquerda para a direita, substituindo na expressão o que os operadores retornam e fixando separadamente o valor da variável que está sendo alterada. Por exemplo, assim:



int y = 4 * 5 / x-- + --x; // x assigned value of 4
int y = 4 * 5 / 4 + --x; // x assigned value of 3
int y = 4 * 5 / 4 + 2; // x assigned value of 2


Como você pode ver, todas as regras acima para aplicação de operadores se aplicam. O resultado será o seguinte:



x is 2
y is 7


Consulte Mais informação








All Articles