quinta-feira, 25 de fevereiro de 2010

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


Operadores aditivos

Os operadores aditivos realizam operação de adição, assim como os operadores multiplicativos, esses podem ser utilizados em variáveis contanto que não sejam boolean e char. São considerados operadores aditivos a soma (+) e a subtração (-). Operadores aditivos também se encontram presentes em concatenação de Strings. Exemplo do uso de operadores aditivos:

int numero = 0; //variável numero é igual a 0
numero = 1 + 1; //numero vale 2
numero = 5 - 1; //numero vale 4
numero = numero + 4; //numero vale 8
numero = numero - 4; //numero vale 4
String nome = "Carina";
String sobrenome = "Calixto"
String espaco = " ";
String concatenado;
concatenado = nome + espaco + sobrenome; //concatenado será "Carina Calixto"

Vale lembrar que diferentemente dos operadores de incremento e decremento (tanto os prefixais quanto os sufixais), os operadores aditivos sozinhos não modificam o valor de uma variável, para que isso seja possível é necessário atribuir o valor do resultado na mesma variável. Veja abaixo a diferença:

int numero = 0;
++numero; //Adicionou em 1 a variável número
numero = numero + 1; //Adicionou em 1 a variável número.

Operadores de deslocamento de bits

Os operadores de deslocamento de bits são utilizados, como o próprio nome diz para deslocar bits de um número e assim modificar o seu valor. Os operadores de deslocamento de bits são: Shift para a direita (>>), o shift para a direita sem sinal(>>>) e o shift para a esquerda (<<). Shift para direita funciona. O shift para a direita desloca o padrão de bits do número disposta antes do operador no número de posições indicadas após o operador. O shift para a direita sem sinal tem a mesma função do shift para a direito com a exceção que remove a sinalização (se era um número negativo, após o shift sem sinal ficará positivo) do número. O shift para a esquerda da mesma forma que o shift para a direita, desloca um padrão de bits, porém para a esquerda. O shift para a direita funciona como uma divisão por 2n enquanto o shift para a esquerda funciona, para números pequenos, como uma multiplicação por 2n (onde n é o valor colocado após o operador), já o shift para a direita sem sinal quando o valor antes do operador for positivo, funcionará da mesma forma que o shift para a direita, porém quando for negativo irá ignorar o bit de sinalização (como uma sinalização) e retornará o número. Exemplo do uso dos operadores de deslocamento de bits:

int numero = -2;
//numero vale -2 : 11111111 11111111 11111111 11111110
numero = numero >> 1;
//numero vale -1 : 11111111 11111111 11111111 11111111
numero = numero << 1;
//numero vale -2 : 11111111 11111111 11111111 11111110
numero = numero >>> 1;
//numero vale 2147483647 : 11111111 11111111 11111111 1111111
numero = numero << 1;
//numero vale -2 : 11111111 11111111 11111111 11111110


Operadores comparativos

Os operadores comparativos são utilizados para comparar dois valores e retornar um valor boolean "true" ou "false". São muito usados na programação. São operadores comparativos os operadores maior que (>), menor que (<), maior ou igual que (>=) menor ou igual que (<=) e o comparativo de tipo instanceof. Os operadores maior que, menor que, maior ou igual que e menor ou igual que funcionam da mesma forma que os operadores comparativos da matemática, o único operador comparativo diferente é o instanceof. O operador instanceof compara um objeto para um tipo especificado. Você pode usá-lo para testar se um objeto é uma instância de uma classe, uma instância de uma subclasse, ou uma instância de uma classe que implementa uma interface em particular. Abaixo seguem exemplos do uso dos operadores comparativos.

boolean teste = true; //teste é verdadeiro
teste = 4>4;
//teste é falso
teste = 4<3; //teste é falso
teste = 4<=4; //teste é verdadeiro
teste = 4>=4; //teste é verdadeiro

veja o exemplo aqui para entender melhor como é utilizado o operador instanceof.

Operadores de igualdade

Os operadores de igualdade, de forma semelhante aos operadores comparativos, são utilizados para verificar se um valor é igual a outro. Retornam valores boolean "true" ou "false" dependendo se o valor for ou não igual a outro. Como operadores de igualdade tem-se igual a (==) e diferente de (!=), podem ser utilizados a qualquer tipo de variável com tanto que os tipos sejam iguais. Exemplo do uso dos operadores de igualdade:

boolean teste;
char c1 = 'a';
char c2 = 'a';
teste = (c1==c2); //teste = true
teste = (c1!=c2); //teste = false
int i1 = 23;
int i2 = 0;
teste = (i1==i2); //teste = false
teste = (i1!=i2); //teste = true
boolean b1 = true;
boolean b2 = true;
teste = (b1==b2); //teste = true
teste = (b1!=b2); //teste = false

Operadores lógicos bit a bit

Os operadores bit a bit realizam suas operações sobre cada bit do valor apresentado antes e após do operador. Existem 3 operadores lógicos bit a bit e a ordem de precedência entre eles é variada.

  • Operador and bit a bit (&): Este operador, entre os operadores bit a bit é o que possue a maior precedência. Ele funciona como o operador "e" da lógica matemática e atua bit a bit entre dois valores.
  • Operador ou exclusivo bit a bit (^): É o de segunda ordem de precedência entre os operadores lógicos bit a bit. Funciona da mesma forma que o operador "ou exclusivo" da lógica matemática.
  • Operador ou bit a bit (|): É o de menor ordem de precedência entre os operadores lógicos bit a bit. Funciona da mesma forma que o operador "ou" da lógica matemática.
Exemplo de uso dos operadores bit a bit:

int numero;
numero = 34&435; //34:000100010 AND 435:110110011 = 000100010
numero = 34^46; //34:000100010 XOR 46:100010 = 001100
numero = 436|547; //436:0110110100 OR 547:1000100011 = 1110110111

Nenhum comentário:

Postar um comentário