Códigos diferentes mesmo resultado!

Tenho esses dois códigos abaixo alguém poderia me dizer qual a diferença entre eles, pois na execução dos mesmo ambos me retornam os valores idênticos? O segundo exemplo é da apostila da Caelum. O primeiro exemplo eu que fiz. Qual esta correto “exemplo 1” ou “exemplo 2”?

// Exemplo 1.
void sacar1(double saque){

    this.saldo1 -=  saque;
    System.out.println("Meu saque na conta 1 foi de: " + saque);
}

 // Exemplo 2.
void sacar2 (double saque){
    
    double novoSaldo = this.saldo2 - saque;
    this.saldo2 = novoSaldo;
    System.out.println("Meu saque na conta 2 foi de: " + saque);
}

É que os dois fazem exatamente a mesma coisa…

O exemplo 1 é mais direto… descontando do saldo pertencente ao Objeto, o valor que foi passado no metodo.

No exemplo 2, a pessoa apenas pegou o saldo pertencente ao Objeto, descontou o valor recebido no metodo, e com este resultado, atribuiu ao saldo do Objeto.

Ou seja… deu mais voltas, e fez a mesma coisa.

Uma versao mais didatica digamos assim…

Eu faria da primeira forma, mas ambos estao corretos se o objetivo é retirar um valor do Saldo.

Abs

Completando a resposta do amigo ai, você pode usar os operadores ‘+=’, ‘-=’, ‘*=’, ‘/=’ (nunca usei outros, mas acho que só são esses), quando, na operação que você irá fazer, você quer usar a mesma variável.
Por exemplo:
int a = 10; a *= 3;

a segunda instrução indica que eu devo pegar o ‘a’, que possui valor 10, e multiplicar por 3, que vai resultar em 30.