E também como usar os operadores de atribuição: +=, -=, *=, /= e %=
Porém, devemos tomar alguns cuidados no uso deles, como, por exemplo, na diferença entre a=++b e a=b++
Diferença de a=++b e a=b++ em Java
a++ e ++a não surte efeito.
Porém, surte na hora da atribuição.
Vamos lá, ao nosso 'teste hacker':
Seja b=2;
Só olhando e raciocinando, você seria capaz de descobrir quanto seria 'a' em cada caso:
a = b++;
a = ++b;
Explicações
1. a = b++
Mais uma vez, é um atalho em Java, uma forma mais simples de escrever as seguintes linhas:
a = b;
b++;
2. a = ++b
Analogamente, é o atalho que os programadores Java usam para representar as seguintes linhas de código:++b;
a = b;
'Tenho que decorar todos esses atalhos em Java, então? Maldito Java!'
Não. Você é programador, você não decora, você pensa.
Não foi à toa que coloquei o 'teste hacker', foi pra aguçar seu raciocínio.
Em ambos os casos, 'b' é incrementado. A diferença é que 'a' recebe o valor de 'b' antes do incremento em um e depois do incremento em outro.
Como eu disse, em Java, você pode descobrir apenas olhando e pensando um pouco.
Veja:
No primeiro exemplo: a = b++
Qual a ordem, 'b' ou incremento? Primeiro o 'b'. Depois o de incremento ocorre, '++'.
Ou seja, 'a' vai receber o valor de 'b' primeiro, então a=2
Só depois que 'b' vai ser incrementado e vai se tornar b=3.
No segundo exemplo: a = ++b
Qual a ordem: 'b' ou incremento?
Primeiro o incremento, '++', depois que aparece o 'b', então só depois acontece a atribuição..
Assim, primeiro ocorre o incremente, então b=3.
Só depois é que esse valor é atribuído para a.
Como diz a bíblia do programador Java: compilais e verás a verdade.
Eis o código:
public class Increment {
public static void main(String[] args) {
int a,
b=1;
System.out.println("b = " + b);
System.out.println("a = b++ ");
a = b++;
System.out.println("Então: a = " + a);
System.out.println();
System.out.println("b = " + b);
System.out.println("a = ++b ");
a = ++b;
System.out.println("Então: a = " + a);
}
}
Nenhum comentário:
Postar um comentário