sexta-feira, 19 de fevereiro de 2010

[Java] Modificar os valores de variáveis com os operadores (parte 1/4)


Em programação, variáveis são modificadas e comparadas umas com as outras ou com valores por meio dos operadores. Existem vários tipos de operadores e eles possuem uma precedência, quando em uma mesma linha de instrução, serão executados os operadores respeitando a ordem decrescente de precedência entre eles. Vale lembrar que esta ordem de precedência entre eles pode ser "quebrada" com a utilização de parênteses. Os operadores dentro de parênteses mesmo que com uma precedência baixa será executado primeiramente (obedecendo as mesmas regras de parênteses da matemática).Abaixo serão mostrados os operadores e a ordem de precedência decrescente entre eles.

Operadores sufixais

Operadores sufixais são unários (atuam em apenas uma variável) posicionados na parte sufixal da variável. Os operadores sufixais são o incremento (++) e o decremento (--). O operador incremento adiciona +1 a uma variável, enquanto o decremento diminui -1 de uma variável inteira. Não podem ser usados em estruturas do tipo float, double, boolean ou char. Por exemplo:

int numero = 1; // valor da variável numero é 1.
numero++; // valor da variável numero é 2.
numero--; // valor da variável numero é 1.

Vale lembrar que os operadores sufixais apesar de terem a maior precedência, quando utilizados, retornam o valor da variável e posteriormente realizam a operação. O exemplo abaixo ajuda a entender.

int numero = 1; // valor da variável numero é 1.
int teste = 0;
system.out.println(numero++); // valor da variável numero é 2, porém irá imprimir 1.
system.out.println(numero); // valor da variável numero é 2 e será impresso 2.
teste = numero++; // variável teste receberá o valor 2 e numero será igual a 3.

Operadores prefixais

Operadores prefixais assim como os operadores sufixais também são unários, porém são encontrados na porção prefixal de uma variável. Os operadores prefixais são incremento (++), decremento (--), positivo (+), negativo(-), negação lógica (!) e complemento sobre bits (~). Os operadores prefixais de incremento e decremento acrescentam e subtraem, respectivamente, em 1 as variáveis inteiras, os operadores positivo e negativo são usados para modificar o sinal de uma variável. O operador positivo não modifica o valor da variável a seguir, enquanto o operador negativo altera o sinal da variável (os operadores positivo e negativo não podem ser utilizados em variáveis boolean ou char). O operador negação lógica é utilizado para alterar o valor da variável boolean, se um valor de uma variável boolean era antes falso, após o uso do operador negação lógica será verdadeiro e vice versa. O operador complemento sobre bits inverte um padrão de bits. Pode ser aplicado a qualquer dos tipos integrais (vale lembrar que o operador ~ retorna um valor int, assim se for necessário armazenar em uma variável byte será necessário o uso de cast), fazendo cada "0" ser um "1" e cada "1" um "0". Por exemplo, aplicar este operador para um valor cujo padrão de bits é "00000000" iria mudar o seu padrão de "11111111". Para ficar mais simples de entender o resultado, podemos ver o operador complemento sobre bits (~) como um incremento seguido de inversão de sinal. Exemplos do uso dos operadores prefixais:

int numero = 1; //numero vale 1
boolean switch = "false"; //switch é "falso"
++numero; //numero agora vale 2
--numero; //numero vale 1 novamente
numero=+numero; //numero continua valendo 1
numero=-numero; //numero agora vale -1
numero=~numero; //numero passa a valer 0
switch=!switch; //switch é "verdadeiro" agora

Diferentemente dos operadores sufixais, os prefixais primeiramente realizam a operação e posteriormente retornam o resultado.

Operadores multiplicativos

Operadores multiplicativos são aqueles que realizam uma operação multiplicativa. Tem-se como operadores multiplicativos a multiplicação (*), a divisão (/) e o resto (%). A mutiplicação realiza a multiplicação entre dois valores (ou variáveis). A divisão realiza a divisão inteira entre os valores (o primeiro valor dividido pelo segundo valor). O operador de resto retorna o resto da divisão entre o primeiro valor dividido pelo segundo valor. Todos os operadores multiplicativos podem ser realizados sobre valores inteiros, ou seja, não sejam do tipo boolean ou char. Exemplo da utilização dos operadores multiplicativos:

int numero = 5; // A variável numero vale 5
numero = numero/2; //numero vale 2
numero = numero*2; //numero vale 4
numero = numero%2; //numero vale 0

2 comentários:

  1. na parte sobre operadores prefixais, nao entendi sobre a variavel ligado, nao seria switch?

    ResponderExcluir