JAVA - Apostila
532 pág.

JAVA - Apostila


DisciplinaProgramação Orientada A Objetos3.307 materiais50.521 seguidores
Pré-visualização28 páginas
Terra (rterrabh@gmail.com) POO 11 de março de 2013 100 / 527
Java \u2013 Operadores
Operadores Artiméticos
+
-
\u2217
/
% (corresponde ao mod do Pascal)
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 101 / 527
Java \u2013 Operadores
Prioridades e Associatividades normais
Parênteses mudam as prioridades
2 + 2 * 4 != (2 + 2) * 4
Operador /
Operando inteiros:
Divisão Inteira: (7 / 2 = 3)
Pelo menos um ponto flutuante:
Divisão Fracionária:
7.0 / 2.0 = 3.5
7.0 / 2 = 3.5
7 / 2.0 = 3.5
Operador %
Resto de divisão inteira
Ex: 4 % 2 = 0 e 5 % 2 = 1
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 102 / 527
Java \u2013 Operadores
Operadores Aritméticos em Atribuições Compostas
Em geral, os operadores aritméticos possuem um operador
de atribuição correspondente:
Exemplo:
A = A + 2 \u2194 A += 2
Outros:
-=
*=
/=
%=
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 103 / 527
Java \u2013 Operadores
Exemplo de operadores de atribuição compostos
public static void main( String[] args ) {
2 int valor = 10;
4 valor += 10;
System.out.printf("%d", valor); /* valor: 20 */
6
valor -= 10;
8 System.out.printf("%d", valor); /* valor: 10 */
10 valor *= 5;
System.out.printf("%d", valor); /* valor: 50 */
12
valor /= 10;
14 System.out.printf("%d", valor); /* valor: 5 */
16 valor %= 3;
System.out.printf("%d", valor); /* valor: 2 */
18 }
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 104 / 527
Java \u2013 Operadores
Operadores Aritméticos de incremento e decremento
++ (incrementa 1)
-- (decrementa 1)
Exemplos:
A = A + 1 \u2194 A += 1 \u2194 A++ \u2194 ++A
A = A - 1 \u2194 A -= 1 \u2194 A-- \u2194 --A
Posicionamento (vale para ++ e para --)
++ após a variável:
pós-incremento (retorna e incrementa)
++ antes da variável:
pré-incremento (incrementa e retorna)
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 105 / 527
Java \u2013 Operadores
Exemplos
1 int i = 0;
System.out.printf("%d", i++);
System.out.printf("%d", i);
System.out.printf("%d", --i);
2 int i = 0;
System.out.printf("%d", ++i);
System.out.printf("%d", i);
System.out.printf("%d", i--);
System.out.printf("%d", i);
Pergunta-se
Qual a saída de cada printf?
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 106 / 527
Java \u2013 Operadores
Entendeu mesmo?
1 public static void main( String[] args ) {
int i = 0;
3 System.out.printf( "%d", i++ );
System.out.printf( "%d", i-- );
5 System.out.printf( "%d", --i );
System.out.printf( "%d", i );
7
i = 6;
9 System.out.printf( "%g", ++i / 2.0 );
}
Pergunta-se
Qual a saída de cada printf?
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 107 / 527
Java \u2013 Operadores
Operadores Relacionais:
== (comparação)
!= (diferença)
< > <= >=
Operadores Lógicos:
São eles: & (and), | (or) e ! (not)
Normalmente, para and e or, utiliza-se operadores de curto
circuito que fazem com que a expressão só seja analisada
até que seja possível determinar o resultado
São eles: && (and) e || (or)
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 108 / 527
Java \u2013 Operadores
Operadores Lógicos de Curto Circuito
Ao encontrarem um valor que determine seu resultado, não
testam mais as outras condições, isto é, a expressão só será
analisada até que seja possível determinar o resultado
Exemplo: considere que os métodos a e b retornem booleano
a() & b()\u2192 executa os dois métodos para obter o
resultado
a() | b()\u2192 executa os dois métodos para obter o
resultado
a() && b()\u2192 se o método a retornar false, o resultado
será false e o método b nem será executado
a() || b()\u2192 se o método a retornar true, o resultado
será true e o método b nem será executado
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 109 / 527
Java \u2013 Operadores
Entendeu mesmo?
private static boolean a() { return false; }
2
private static boolean b() { return true; }
4
private static boolean c() { return false; }
6
private static boolean d() { return true; }
8
public static void main( String[] args ) {
10 System.out.printf( &quot;%d&quot;, a() & b() & c() & d() );
System.out.printf( &quot;%d&quot;, a() && b() && c() && d() );
12 System.out.printf( &quot;%d&quot;, a() || b() || c() || d() );
}
Pergunta-se
Quais métodos serão executados e qual o retorno dos printf\u2019s
das linhas 10, 11 e 12?
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 110 / 527
Java \u2013 Operadores
Tiro no pé!
1 public static void main( String[] args ) {
int a = 0;
3 if ( a != 0 & 2 / a > 5 ) {
System.out.println( &quot;OK&quot; );
5 } else {
System.out.println( &quot;NOK&quot; );
7 }
}
Pergunta-se
O programa acima apresenta um erro fatal. Como evitá-lo?
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 111 / 527
Java \u2013 Operadores
Operadores bit a bit:
& (and)
Ex: 3 & 1 \u2194 0011 & 0001 \u2194 0001 \u2194 1
| (or)
Ex: 3 | 1 \u2194 0011 | 0001 \u2194 0011 \u2194 3
\u2c6 (xor)
Ex: 3 \u2c6 1 \u2194 0011 \u2c6 0001 \u2194 0010 \u2194 2
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 112 / 527
Java \u2013 Operadores
Operadores bit a bit:
~ (complemento de um)
Ex: 3 \u2194 \u2dc0011 \u2194 1100 \u2194 12
<< (deslocamento à esquerda)
Ex: 4 << 1 \u2194 0100 << 1 \u2194 1000 \u2194 8
>> (deslocamento à direita)
Ex: 4 >> 1 \u2194 0100 >> 1 \u2194 0010 \u2194 2
>>> (deslocamento à direita com sinal)
Ex: -127 >>> 1 \u2194 2147483584
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 113 / 527
Java \u2013 Operadores
Desafio
public static void main( String[] args ) {
2 int x = 10, y = -2;
4 System.out.println( (-2 * -1) << 3 );
6 System.out.println( ++x - --y + ((x >> 3) << 2) );
8 System.out.println( (x % 5) << ((4 % 2) + 4) );
}
Pergunta-se
Qual a saída de cada printf?
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 114 / 527
Java \u2013 Operadores
Exercícios
10 & 13 ?
10 | 13 ?
10 \u2c6 13 ?
0 ?
8 » 1 ?
2 « 2 ?
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 115 / 527
Java
Comandos condicionais
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 116 / 527
Java \u2013 Comandos condicionais
Comandos condicionais (if, switch e operador ternário)
Comando condicionais são aqueles que dependendo de
uma condição executam um bloco, caso a condição não
seja atendida, o bloco não será executado
Java provê suporte a três comandos condicionais:
if
switch
operador ternário (? :)
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 117 / 527
Java \u2013 Comandos condicionais
Comandos condicionais - if
Sintaxe do comando if
if ( condicao ) {
comando1;
comando2;
comando3;
}
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 118 / 527
Java \u2013 Comandos condicionais
Observações:
Os parênteses que envolvem a condição são
OBRIGATÓRIOS
Diferentemente de Pascal, Delphi (Object Pascal) etc
A condição deverá retornar um tipo booleano
Os comandos somente serão executados se a condição for
verdadeira
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 119 / 527
Java \u2013 Comandos condicionais
Comandos condicionais - if
O uso dos braços NÃO é obrigatório caso seja apenas um
único comando
Porém, a boa prática recomenda a utilização de braços
independente do número de comandos
Melhor indentação do código
if ( true ) comando;
equivale a:
if ( true ) {
comando;
}
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 120 / 527
Java \u2013 Comandos condicionais
Comandos condicionais - if
Como faço o conhecido:
se verdade então . . . senão . . .
if ( condicao ) {
comando1;
comando2;
comando3;
} else {
comando4;
comando5;
comando6;
}
Pergunta-se
Quais comandos serão executados se a condição for
verdadeira? E se for falsa?
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 121 / 527
Java