Operaçoes aritimeticas
Vamos começar com a coisa mais simples - com operações aritméticas. São eles os conhecidos sinal (+), subtração (-), multiplicação (*) e divisão (/).public class Main {
public static void main(String[] args) {
int x = 999;
int y = 33;
System.out.println(x+y);
System.out.println(x-y);
System.out.println(x*y);
System.out.println(x/y);
}
}
Saída do console:
1032
966
32967
30
Você já usou tudo isso. Você pode adicionar uma operação a eles %
- o restante da divisão.
public class Main {
public static void main(String[] args) {
int x = 33;
int y = 33%2;
System.out.println(y);
}
}
Saída do console:
1
Neste exemplo, dividimos 33 por 2. Como resultado, obtemos 16 e resta uma “cauda” extra que não é divisível por 2 - um. Esta “cauda” será o resultado da operação “resto de divisão”. Java (assim como matemática) implementa operadores de comparação . Você provavelmente também os conhece da escola:
- é igual a (
==
) - mais (
>
) - menos (
<
) - Melhor que ou igual a (
>=
) - menos que ou igual a (
<=
) - não igual (
!=
)
==
, e não com um sinal =
. O sinal de unidade =
em Java é um operador de atribuição, onde a uma variável é atribuído um número, string ou o valor de outra variável.
public class Main {
public static void main(String[] args) {
int x = 33;
int y = 999;
System.out.println(x=y);// expect false to be printed to the console
}
}
Saída do console:
999
Ops! Este claramente não é o resultado que esperávamos. Este é um tipo de dado completamente diferente: esperávamos ver boolean
, mas obtivemos um número. Isso ocorre porque entre parênteses temos uma operação de atribuição e não de comparação. x=y
O valor y
(999) foi atribuído à variável x
e depois o imprimimos x
no console. Opção correta:
public class Main {
public static void main(String[] args) {
int x = 33;
int y = 999;
System.out.println(x==y);
}
}
Saída do console:
false
Agora comparamos corretamente os 2 números! :) Outra característica da operação de atribuição ( =
) é que ela pode ser feita “encadeada”:
public class Main {
public static void main(String[] args) {
int x = 999;
int y = 33;
int z = 256;
x = y = z;
System.out.println(x);
}
}
Saída do console:
256
Lembre-se: a atribuição é feita da direita para a esquerda. Esta expressão ( x = y = z
) será executada em etapas:
- y = z, ou seja, y = 256
- x = y, isto é x = 256
Operações unárias
Eles são chamados de “unários” da palavra “uno” - “um”. Receberam este nome porque, ao contrário dos anteriores, são realizados num número e não em vários. Esses incluem:-
Unário menos. Ele inverte o sinal do número.
public class Main { public static void main(String[] args) { int x = 999; // change the sign for the first time x = -x; System.out.println(x); // change the sign a second time x= -x; System.out.println(x); } }
Saída do console:
-999 999
Usamos o unário menos duas vezes. Como resultado, nosso número tornou-se inicialmente negativo e depois positivo novamente!
-
Incremento (
++
) e decremento (--
)Uma operação
++
aumenta um número em um e uma operação--
o diminui na mesma unidade.public class Main { public static void main(String[] args) { int x = 999; x++; System.out.println(x); x--; System.out.println(x); } }
Saída do console:
1000 999
x++
- notação pós-fixada ++x
- notação prefixada Qual é a diferença fundamental se você colocar pontos positivos e negativos antes ou depois do número? Vejamos em um exemplo:
public class Main {
public static void main(String[] args) {
int x = 999;
int y = x++;
System.out.println(y);
}
}
Saída do console:
999
Há algo de errado! Queríamos incrementar x
em 1 e atribuir um novo valor à variável y
. Ou seja, y deveria ser igual a 1000. Mas temos um resultado diferente - 999. Acontece que x
não foi aumentado e a operação de incremento não funcionou? Como funcionou. Para verificar isso, tente imprimir x no console no final :)
public class Main {
public static void main(String[] args) {
int x = 999;
int y = x++;
System.out.println(y);
System.out.println(x);
}
}
Saída do console:
999
1000
Na verdade, é por isso que a operação postfix é chamada assim: ela é executada após a expressão principal. Ou seja, no nosso caso: int y = x++;
primeiro ele é executado y = x
(e será atribuído à variável y seu valor original x
), e só então x++
... E se não estivermos satisfeitos com esse comportamento? Você precisa usar a notação de prefixo:
public class Main {
public static void main(String[] args) {
int x = 999;
int y = ++x;
System.out.println(y);
}
}
Nesse caso vai funcionar primeiro ++x
e só depois, y = x;
vale lembrar logo essa diferença para não cometer erros em um programa real, onde todo comportamento pode virar de cabeça para baixo por causa disso :)
Operações combinadas
Além disso, em Java existem as chamadas operações combinadas. Eles usam uma combinação de duas operações:- Atribuição
- Operação aritmética
+=
-=
*=
/=
%=
public class Main {
public static void main(String[] args) {
int x = 999;
int y = 33;
x += y;
System.out.println(x);
}
}
Saída do console:
1032
x += y
significa x = x + y
. Apenas por uma questão de brevidade, dois caracteres seguidos são usados. Isso também funciona com combinações de -=
, *=
e /=
.%=
Operações lógicas
Além de operações com números, Java também possui operações com variáveis booleanas -true
e false
. Essas operações são realizadas usando operadores lógicos
-
!
- Operador “NÃO”. Inverte o valor de uma variável booleanapublic class Main { public static void main(String[] args) { boolean x = true; System.out.println(!x); } }
Saída do console:
false
-
&&
- operador “E”. Retornará um valortrue
somente se ambos os operandos foremtrue
.public class Main { public static void main(String[] args) { System.out.println(100 > 10 && 100 > 200); System.out.println(100 > 50 && 100 >= 100); } }
Saída do console:
false true
O resultado da primeira operação é
false
, já que uma das condições é falsa, ou seja, 100 > 200. O operador exige que todas as condições sejam verdadeiras (como na segunda linha, por exemplo)&&
para retornar .true
-
||
- Operador “OU”. Retornatrue
quando pelo menos um dos operandos é verdadeiro.Aqui nosso exemplo anterior funcionará de maneira diferente:
public class Main { public static void main(String[] args) { System.out.println(100 > 10 || 100 > 200); } }
Saída do console:
true
A expressão 100 > 200 ainda é falsa, mas o operador “ou” está bastante satisfeito com o fato de a primeira parte (100 > 10) ser verdadeira.
GO TO FULL VERSION