Usamos as palavras incrementar e decrementar para nos referirmos à adição de uma unidade e à subtração de uma unidade, respetivamente. Em Java podemos fazer isso da seguinte forma:
xxxxxxxxxx
int i = 2;
int j = 5;
i = i + 1; // incrementar i
// i fica com o valor 3
j = j – 1; // decrementar j
// j fica com o valor 4
Repare na diferença entre estas instruções de atribuição e as correspondentes na Matemática. A expressão i = i + 1
nunca seria válida na Matemática pois o sinal =
representa a igualdade e um valor não pode ser igual seu próprio sucessor.
No Java, o sinal
=
é a instrução de atribuição e, por isso, na execução da instruçãoi = i + 1;
- a expressão
i + 1
é avaliada- o seu valor é atribuído à variável
i
.
Se i
vale 4, por exemplo, então após esta instrução fica com o valor 5.
Incrementar e decrementar são operações tão comuns, que a linguagem Java disponibiliza operadores especiais para elas:
++
adiciona uma unidade ao valor corrente de uma variável; --
subtrai uma unidade ao valor corrente de uma variável.Nenhum destes operadores trabalha com boolean
ou String
.
Repare que estes não são meros operadores, pois afetam a variável sobre a qual são aplicados, ou seja, têm efeitos colaterais.
Embora seja possível incluir estes operadores em expressões, nós não vamos fazer isso. Como queremos que a avaliação de expressões seja livre de efeitos colaterais, usamos ++
e --
somente como instruções.
Quando executadas, as seguintes instruções escrevem 2, 5, 3 e 4 no ecrã, em linhas separadas.:
xxxxxxxxxx
int i = 2;
int j = 5;
System.out.println(i);
System.out.println(j);
i++;
System.out.println(i);
j--;
System.out.println(j);
O Java também tem “atalhos” para outras instruções de atribuição comuns:
xxxxxxxxxx
var += expr // atribui a var o valor de var + expr
var -= expr // atribui a var o valor de var - expr
var *= expr // atribui a var o valor de var * expr
var /= expr // atribui a var o valor de var / expr
var %= expr // atribui a var o valor de var % expr
Por exemplo, quando executadas, as seguintes instruções escrevem 24 no ecrã, que é o resultado de multiplicar 2 por (5 + 7).
xxxxxxxxxx
int i = 2;
int j = 5;
i *= j + 7;
System.out.println(i);
Anterior: 6. Ciclos
Seguinte: 6.2. A instrução for