Enviar um café pro programador

Pode me ajudar a transformar cafeína em código?

Operadores de atribuição e de incremento e decremento: diferenças entre a=++b e a=b++

Já vimos o uso dos operadores de decremento e incremento, em Java.
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

Você ja estudou e testou que usar isoladamente:
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:

Contribuir com o Java Progressivo

Que tal apoiar e fazer crescer o ensino da programação no Brasil ?

Ajudar nosso país a crescer e se desenvolver cada vez mais, tecnologicamente?

Clica abaixo pra saber mais!

Apoiar o Projeto Progressivo


Tutoriais de Java