Java 6 - Martins Fontes

Propaganda
Guia de Consulta Rápida
Java 6
Peter Jandl Jr.
Novatec Editora
Copyright  2008 da Novatec Editora Ltda.
Todos os direitos reservados e protegidos pela Lei 9.610 de
19/02/1998. É proibida a reprodução desta obra, mesmo parcial,
por qualquer processo, sem prévia autorização, por escrito, do
autor e da Editora.
Editor: Rubens Prates
ISBN: 978-85-7522-159-6
Novatec Editora Ltda.
Rua Luís Antônio dos Santos 110
02460-000 São Paulo SP – Brasil
Tel.: +55 11 2959-6529
Fax: +55 11 2950-8869
E-mail: [email protected]
Site: www.novatec.com.br
Sobre o autor
Peter Jandl Junior é engenheiro eletricista pela Unicamp, mestre
em educação pela USF, e Programador Certificado pela Sun
Microsystems para a Plataforma Java 2. Já trabalhou em várias
empresas, entre elas IBM e Promon, lecionando a mais de 20 anos.
Atualmente é coordenador do curso de ciência da computação da
FAJ e também professor nos cursos de graduação e pós-graduação
do UniAnchieta e Policamp.
Sumário
Parte I: Elementos fundamentais.............................................. 4
Java: uma brevíssima apresentação................................... 4
Ambiente Java................................................................. 4
Programa mínimo, compilação e execução........................ 5
Variáveis.......................................................................... 7
Entrada e saída básicas.................................................. 10
Operadores e expressões.................................................12
Diretivas (statements).....................................................17
Tratamento genérico de exceções.................................... 23
Modificadores especiais................................................. 24
Arranjos (arrays)........................................................... 25
Matrizes........................................................................ 26
Argumentos da linha de comando.................................. 28
Parte II: Orientação a Objetos................................................ 29
Conceitos fundamentais................................................ 29
Exceções (exceptions).................................................... 39
Criação de Pacotes......................................................... 42
Herança (inheritance).................................................... 44
Interfaces....................................................................... 48
Polimorfismo................................................................. 50
Classes aninhadas, internas e anônimas...........................52
Classes Wrapper............................................................ 54
Enumerações (Java 5 ou +)............................................ 56
Genéricos (Java 5 ou +).................................................. 57
Parte III: API Java................................................................... 63
Introdução.................................................................... 63
Usando a Documentação do JDK................................... 64
Pacote java.lang...................................................................... 65
Interfaces de java.lang.................................................... 65
Classes de java.lang........................................................ 66
Enumerações de java.lang.............................................. 87
Exceções de java.lang..................................................... 87
Erros de java.lang.......................................................... 88
Pacote java.util....................................................................... 90
Interfaces de java.util..................................................... 90
Classes de java.util......................................................... 96
Enumerações de java.util..............................................120
Exceções de java.util..................................................... 121
Erros de java.util.......................................................... 121
Pacote java.io........................................................................122
Interfaces de java.io.......................................................122
Classes de java.io..........................................................125
Exceções de java.io.......................................................140
Erros de java.io.............................................................140
Índice remissivo.................................................................... 141
Parte I: Elementos fundamentais
Java: uma brevíssima apresentação
Criado a partir de um projeto da Sun Microsystems voltado para
dispositivos portáteis inteligentes, o Java foi lançado em 1995 como
uma alternativa para construção de aplicações web e tornou-se um
sucesso acadêmico e corporativo devido suas características.
A plataforma de programação Java é formada de uma linguagem
de mesmo nome e de uma extensa biblioteca de classes 100%
orientada a objetos, independente de plataforma, segura e de ótima
performance. Atualmente possui três divisões:
Divisão
Descrição
Java ME Java Micro Edition: destinada a dispositivos computacionais
móveis, tais como celulares, PDAs e set-top boxes.
Java SE Java Standard Edition: integra os elementos padrão do Java
e permite criar aplicações de pequeno e médio porte.
Java EE Java Enterprise Edition: voltada para o desenvolvimento de
aplicações corporativas complexas.
É usada no desenvolvimento de aplicações desktop, em rede,
com arquivos, interfaces gráficas, componentes, imagens, conteúdo
multimídia, bancos de dados, threads, voltadas ou não para a web
e que podem ser integradas a outros sistemas existentes.
Embora a API (Application Programming Interface) Java tenha
sido ampliada enormemente, ocorreram poucas mudanças na
linguagem em si. A versão 5 (denominada Tiger) incorporou a maior
parte dos novos elementos na linguagem (Tabela 1).
Tabela 1 – Histórico da plataforma Java
Ano
Versão
Versão
Interna
1996
1.0
1.0
Versão inicial.
1997
1.1
1.1
Classes internas.
1998
1.2
1.2
Declaração strictfp. Compilação JIT.
2000
1.3
1.3
Tecnologia HotSpot para JVM.
2002
1.4
1.4
Diretiva assert.
2004
5.0
1.5
Genéricos. Autoboxing. Metadata (Anotações).
Enumerações.
2006
6.0
1.6
Suporte para scripting. Melhorias nas anotações.
Novas características da linguagem Java
Ambiente Java
Java é independente de plataforma porque seus programas são
compilados em um formato neutro, os bytecodes, armazenados
em arquivos de classe .class. Em cada combinação de hardware
e SO (sistema operacional) deve existir uma JVM (Java Virtual
Machine), programa que interpreta os bytecodes como código
nativo do sistema, usando os serviços oferecidos pelo sistema
operacional (Figura 1).
Ambiente Java
Figura 1 – Código-fonte, bytecodes e código nativo.
O ambiente Java (Figura 2) se compõe de uma JVM, da API Java e
pelas classes da aplicação. O Sun JavaRE (Java Runtime Environment)
provê um ambiente mínimo. O endereço para download gratuito é:
http://java.sun.com/javase/downloads/index.jsp.
Figura 2 – Ambiente Java.
Programa mínimo, compilação e execução
O Sun JavaSE Development Kit (JDK) é um ambiente de
desenvolvimento Java considerado padrão e inclui um conjunto
útil de ferramentas de desenvolvimento, além do próprio JRE.
Seu download gratuito pode ser feito em http://java.sun.com/
javase/downloads/index.jsp. Além do JDK será necessário um editor
de texto simples, tal como o Bloco de notas dos sistemas Windows
ou vi dos sistemas Unix e Linux.
Instalando e configurando o JDK
Instale o JDK seguindo as instruções do programa instalador. Para
seu funcionamento correto é preciso alguns ajustes no sistema.
1. Criar uma variável de ambiente CLASSPATH, cujo conteúdo inicial
seja . (um ponto indica o diretório atual).
2. Editar a variável de ambiente PATH, que em geral existe, e adicionar
o diretório bin do JDK (na plataforma Windows é C:\Arquivos de
programas\Java\jdk1.6.0_05\bin).
Num sistema com Windows XP, abra o Explorer, localize Meu
Computador, no seu menu de contexto selecione Propriedades.
Na janela que aparece selecione a guia Avançado e então o botão
Variáveis de ambiente para criar e editar as variáveis de usuário
necessárias. Feche a janela e a configuração estará em vigor.
Estrutura dos programas Java
Um programa em Java se compõe de um ou mais arquivos-fonte
onde cada um pode conter:
• uma declaração de pacote (package);
• uma ou mais diretivas de importação (import);
Elementos fundamentais
• uma ou mais declarações de classes (class);
• uma ou mais declarações de interfaces (interface).
O início de todo programa é o método main(String [ ]), declarado
em alguma de suas classes e também o mínimo exigido.
Programa mínimo
O menor programa Java é constituído de uma classe na qual exista
o método main(String [ ]).
Exemplo (HelloWorld.java)
public class HelloWorld { // declaração da classe HelloWorld
// declaração do método main, que dá início ao programa
public static void main (String args[ ]) {
// impressão da mensagem
System.out.println (“Hello world!”);
} }
Com um editor, digite e salve o programa em um arquivo
denominado HelloWorld.java num diretório de sua preferência.
Uso de maiúsculas e minúsculas
O Java é uma linguagem sensível ao caixa, i.e., que distingue
maiúsculas de minúsculas: public é diferente de Public.
Comentários
Fragmentos de texto usados para anotar explicações no próprio
programa e desconsiderados pelo compilador, neles podem figurar
qualquer caractere ou acentuação.
Delimitador
Descrição
//
/* */
/** */
Comentário de linha.
Comentário de bloco (múltiplas linhas).
Comentário de documentação.
Exemplos:
// comentário de uma linha isolado
import java.util.*; // comentário de linha com comando
/* Comentário de bloco, que pode utilizar-se de uma
ou mais linhas livremente. */
double a = 10.3; /* comentário de bloco com comando */
/** Comentário de documentação
Classe que define ponto no espaço 3D. */
public classe Ponto3D { ... }
Os comentários de documentação são colocados antes da
declaração dos elementos do programa. A ferramenta javadoc do
JDK pode extraí-los do fonte e criar páginas de documentação
em formato HTML, organizadas conforme a estrutura das classes.
Várias tags HTML podem ser usadas, além das marcações ‘@’ que
permitem criar referências cruzadas e outros elementos.
Compilação
A compilação no JDK usa um Console ou Prompt de comando. A
sintaxe do compilador javac é:
javac [-opções] <nomeDoArquivo.java>
Para compilar um programa (p.e. HelloWorld.java), navegue até
o diretório onde o arquivo fonte foi salvo e digite:
> javac HelloWorld.java
Programa mínimo, compilação e execução
A extensão .java deve ser fornecida. A compilação produz os
arquivos de classe correspondentes (no caso HelloWorld.class) e não
exibe mensagem quando correta. Caso ocorram erros, use um editor
para efetuar as correções nas linhas indicadas.
Execução
A execução é feita por meio do programa java (JVM) cuja sintaxe é:
java [-opções] <nomeDaClasse>
Usando um Console ou um Prompt de comando, no diretório
onde o programa foi compilado, digite:
> java HelloWorld
A extensão .class nunca é fornecida quando se executa um
programa Java. A Figura 3 mostra um Prompt de comando com a
compilação e execução do exemplo HelloWorld.java.
Figura 3 – Compilação e execução.
Variáveis
A declaração de variáveis em Java requer: um tipo de dados, um
nome (identificador) e, opcionalmente, um valor inicial.
Tipos de dados primitivos
Definem o conjunto de valores que podem ser armazenados em
uma variável e também as operações sobre seus valores. O Java
possui oito tipos primitivos (Tabela 2).
Tabela 2 – Tipos de dados primitivos
Descrição
Tam.
Intervalo
byte
Tipo
short
inteiros positivos e negativos
inteiros positivos e negativos
1
2
int
inteiros positivos e negativos
4
long
inteiros positivos e negativos
8
float
valores em ponto flutuante
4
double
valores em ponto flutuante
8
char
caracteres individuais
tipo lógico
2
1
-128 a +127
-32.768 a +32.767
-2.147.483.648 a
+2.147.483.647
-2^64 a +2^64 – 1
positivos: +1,4013E-45 a
+3.4028E+38 negativos:
-3.4028E+38 a -1.4013E-45
positivos: +4,9407E-324 a
+1.7977E+308 negativos:
-1.7977E+308 a -4.9407E-324
De \u0000 a \uFFFF
false ou true
boolean
Elementos fundamentais
Os tipos inteiros diferem apenas em seus limites, assim como
tipos em ponto flutuante diferem em relação à precisão oferecida
devido ao número de bytes que ocupam na memória. Todos os tipos
numéricos suportam valores positivos e negativos.
O tipo char representa um caractere individual no padrão
UNICODE, o qual permite representar idiomas complexos, tais
como árabe, chinês, hindu, japonês etc.
Valores literais
São aqueles escritos diretamente no programa. Valores inteiros são
tratados como int e em ponto flutuante são tratados como double.
Outros tipos devem usar sufixos ou prefixos predefinidos:
Tabela 3 – Sufixos ou prefixos predefinidos
Tipo
Sufixo
Prefixo
Exemplo
long
L
1234567890L
float
f
0.345f
octal
hexadecimal
0
053
0x ou 0X 0x75DA
O caractere ponto . deve ser usado como separador de casas
decimais. Expoentes (em base 10) para notação científica usam os
caracteres e ou E.
O tipo boolean representa os valores lógicos correspondentes aos
literais false e true. Não existe qualquer equivalência entre valores
lógicos e inteiros, como em C/C++.
Caracteres literais do tipo char devem figurar entre aspas simples,
tal como ‘P’ ou ‘j’.
Caracteres especiais
Caracteres de controle que não têm representação visual são expressos
pela combinação da barra invertida \ com outro código.
Código
Descrição
\’
\”
\\
\f
\b
\u143F
\n
\fca
\r
\g43
\t
Apóstrofe.
Aspas duplas.
Barra invertida.
Nova página (form feed).
Retrocesso (backspace).
Caractere UNICODE 143F.
Quebra de linha (newline ou linefeed).
Caractere hexadecimal FCA.
Retorno de carro (carriage return).
Caractere octal 43.
Tabulação horizontal (horizontal tab).
Nomes das variáveis (identificadores)
Formados por um ou mais caracteres de a a z (maiúsculas diferentes
das minúsculas), dígitos de 0 a 9, o cifrão $ e o sublinhado _. Os
nomes devem ser iniciados pelos caracteres alfabéticos, $ ou _. Outros
caracteres, operadores, símbolos ou espaços são proibidos.
Variáveis
Apenas os 32 primeiros caracteres são usados para distinguir
um nome dos demais. Exemplos válidos são: raio, A, x12, _mktg,
$especial, valorTotal, DIF, Nome23d, num_Minimo, a$d98.
Palavras reservadas
São nomes que não podem ser utilizados como identificadores de
variáveis, métodos ou outras construções do programador. São usadas
para a denominação de tipos, diretivas, especificadores etc.
abstract
assert
boolean
break
byte
case
catch
char
class
continue
default
do
double
else
enum
extends
false
final
finally
float
for
if
implements
import
instanceof
int
interface
long
native
new
null
package
private
protected
public
return
short
static
strictfp
super
switch
synchronized
this
throw
throws
transient
true
try
void
volatile
while
Além dessas existem const e goto, que são reservadas, mas sem
uso definido.
Nomenclatura de variáveis
Segundo a convenção de nomenclatura Java os nomes de variáveis
devem: usar letras minúsculas; se constituídos de uma única
letra sugere-se a inicial de seus tipos; caso sejam compostos de
várias palavras, a primeira inicial deve ser minúscula e as demais
iniciais maiúsculas para melhorar a legibilidade. O uso de dígitos
é livre, mas não se recomenda o uso do cifrão $ ou sublinhado
_. Exemplos adequados são: i, f, b12, x14, sinal, posicaoSuperior,
valorMinimoEsperado.
Declaração de variáveis
A declaração de uma variável deve indicar seu tipo e seu nome:
<Tipo> <nome1> [, nome2 [, nome3 [...] ] ];
Exemplos possíveis e válidos são:
int resultado;
float total;
boolean flag;
É possível declarar várias variáveis ao mesmo tempo:
short nLinha, nColuna, s;
long contagem, valorMaximo, valorMinimo;
double altura, largura, profundidade, area, volume;
Também é possível declarar e inicializar uma variável:
byte br, mascara = 0xFF;
float angulo = 1.57f, temp = -14.75f;
long limite = 1234567890L;
double taxa = 0.075, cpmf = 38e-4;
boolean continua = false, ok = true;
char opcao = ‘s’;
10
Elementos fundamentais
Escopo de variáveis
Escopo é a região do programa onde uma declaração tem validade,
delimitado por pares de chaves { e } (blocos). Variáveis podem ser
declaradas em praticamente qualquer ponto do programa e estão
em seu escopo quando usadas no bloco onde foram declaradas e
nos escopos internos, a partir da sua declaração.
Exemplo (Escopo.java)
public class Escopo {
public static void main (String args[]) { // bloco 1
System.out.print(“Bloco 1: “);
int i = 1; // variável declarada no bloco 1
System.out.println(“i=” + i);
{ // bloco 2
System.out.print(“Bloco 2: “);
int j = 2; // variável declarada no bloco 2
System.out.println(“i=” + i + “ j=” + j);
{ // bloco 3
System.out.print(“Bloco 3: “);
int k = i + j; // variável declarada no bloco 3
System.out.println(“i=”+i+“ j=”+j+“ k=”+k);
} // uso de k torna-se inválido
System.out.print(“Bloco 2: “);
System.out.println(“i=” + i + “ j=” + j);
} // uso de j e k tornam-se inválidos
System.out.print(“Bloco 1: “);
System.out.println(“i=” + i);
} }
Ao encerrar-se um bloco, as variáveis ali declaradas deixam
de existir. Embora possam ser declaradas novas variáveis, não se
podem utilizar os nomes dos escopos exteriores, pois o compilador
não consegue distinguí-las gerando erros.
Entrada e saída básicas
Entrada não formatada
A entrada simples de dados se faz através do console (teclado):
char c = System.in.read();
// lê um caractere
Nesta chamada temos:
Item
Descrição
System
in
read
Classe da API que disponibiliza um objeto in.
Objeto que representa a entrada de dados do console.
Método que lê caracteres individuais da entrada.
O uso direto de in é complexo, pois suporta apenas a leitura de
caracteres, exigindo sua associação com outras classes.
Saída não formatada
A saída simples de dados em um programa também se dá através
do console, exibindo informações em modo texto:
System.out.println(“Olá!”); // exibe a mensagem Olá!
Nesta chamada temos:
Item
Descrição
System
out
println
Classe da API que disponibiliza um objeto out.
Objeto que representa a saída para o console.
Método que imprime valores, mensagens e objetos.
Entrada e saída básicas
11
Com println se exibem mensagens, valores literais, conteúdo de
variáveis, expressões e qualquer combinação entre estes elementos,
finalizando a linha em que ocorre a exibição.
O método print realiza as mesmas tarefas, mas não finaliza a
linha de exibição, possibilitando a adição de outras mensagens.
Entrada formatada (Java 5 ou +)
A classe Scanner pode efetuar a entrada formatada de dados, como
mostra o exemplo EntradaSaida.java.
Exemplo (EntradaSaida.java)
import java.util.Scanner;
public class EntradaSaida {
public static void main (String args[]) {
System.out.println(“Ola!”); // Mensagem inicial
// Exibe mensagem e prepara entrada de dados
System.out.print(“Digite um inteiro: “);
Scanner s = new Scanner(System.in);
int valor = s.nextInt(); // declara e inicia variável
// exibição do valor lido
System.out.println(“Valor digitado = “ + valor);
} }
A classe Scanner, do pacote java.util, é importada através da
diretiva import. Outros tipos primitivos diferentes de int podem ser
lidos trocando-se a chamada nextInt() por outra do tipo desejado
(nextByte(), nextDouble(), nextFloat(), nextLong(), nextShort()). O tipo
String pode ser lido através de next() (que retorna uma palavra) ou
nextLine() (retorna uma linha inteira).
Saída formatada (Java 5 ou +)
O método printf, usado através do objeto out da classe System, é
conveniente para realizar a saída formatada de dados. Sua sintaxe é:
System.out.printf(<formatação> [, expr1 [, expr2 [ ...]]] );
A formatação é uma String que pode conter uma mensagem
simples ou intercalada de marcadores para inclusão de valores.
Quando marcadores estão presentes, deve existir o mesmo número
de expressões para prover seus valores. Durante a impressão, cada
marcador é substituído pelo valor da expressão correspondente,
formatado conforme seu tipo. Exemplos:
// exibe mensagem “Guia Java 6” e quebra linha
System.out.printf(“Guia Java 6%n”);
// exibe mensagem e valor inteiro
System.out.printf(“Valor inteiro: %d %n”, 20);
int x = 10, y = 3;
System.out.printf(“%d/%d = %f%n”, x, y, (float)(x/y));
Este método é como a função printf da linguagem C. Detalhes da
sintaxe de formatação se encontram na classe java.util.Formatter.
Exemplo (SaidaFormatada.java)
import java.util.Scanner;
public class SaidaFormatada {
public static void main(String a[]) {
Scanner sc = new Scanner(System.in);
System.out.print(“No final? “);
int limite = sc.nextInt();
int soma = 0;
12
Elementos fundamentais
for(int i=1; i<=limite; i++) {
System.out.printf(
“%3da. soma parcial = %6d%n”, i, soma);
soma += i;
}
System.out.printf(“Total[0..%3d] = %6d%n”, limite, soma);
} }
Operadores e expressões
Operadores são símbolos que indicam as operações de atribuição,
aritméticas, bit a bit, relacionais e lógicas.
Uma expressão pode ser um valor literal simples, uma constante,
uma variável, a chamada de um método ou uma combinação
qualquer de literais, variáveis, operadores e chamadas de métodos
que produz um resultado numérico ou lógico.
Operador de atribuição
Operador Descrição
=
Atribui o valor de um elemento ou resultado de uma
expressão a uma variável.
Exemplos:
i = 0;
tempF = 1.8 * tempC + 32.0;
xComp = amplitude * Math.cos(1.57);
As atribuições também podem ser incluídas nas declarações de
variáveis fazendo que estas recebam um valor inicial:
// variáveis iniciadas com valores literais
int a = 2, b = 3;
// variável iniciada com expressão válida
double c = 2.3*a + b/3.0;
Operadores aritméticos
Realizam operações algébricas sobre variáveis numéricas.
Operador Descrição
+
-
*
/
%
-
+
Adição.
Subtração.
Multiplicação.
Divisão.
Resto da divisão inteira.
Sinal negativo (- unário).
Sinal positivo (+unário).
• Na divisão entre valores de tipos inteiros o resultado também
é inteiro. Frações resultantes são descartadas.
int a = 9, b = 2, c = 6, d = 3;
System.out.println(a / b);
System.out.println(c / d);
// exibe 4
// exibe 2
• O operador ‘%’ permite obter o resto da divisão inteira entre
dois valores inteiros.
int a = 9, b = 2, c = 6, d = 3;
System.out.println(a % b);
System.out.println(c % d);
// exibe 1
// exibe 0
Operadores de incremento e decremento
Efetuam o incremento ou decremento de variáveis numéricas.
Operadores e expressões
13
Operador
Descrição
++
--
Incremento unitário (adiciona uma unidade).
Decremento unitário (subtrai uma unidade).
• Se usado como prefixo, a operação é realizada antes do uso do
valor da variável (pré-incremento ou pré-decremento).
int a = 1, b;
b = ++a; // b recebe 2, a contém 2
• Se usado como sufixo, a operação é realizada depois do uso do
valor da variável (pós-incremento ou pós-decremento).
int a = 1, b;
b = a++; // b recebe 1, a contém 2
Exemplo (OperArit.java)
import java.util.Scanner;
public class OperArit {
public static void main (String args[]) {
int a, b, c; // qualquer tipo numérico pode ser usado
// lê valores para a e b
Scanner s = new Scanner(System.in);
// leitura usa método apropriado p/ tipo declarado
System.out.print(“a ? “); a = s.nextInt();
System.out.print(“b ? “); b = s.nextInt();
// realiza operações com valores dados
c = a + b;
System.out.println(“a + b = “ + c);
System.out.println(“b - a = “ + (b - a));
System.out.println(“a * b = “ + (a * b));
System.out.println(“a / b = “ + (a / b));
System.out.println(“a % b = “ + (a % b));
System.out.println(“a = “ + a + “ b = “ + b);
System.out.println(“c = -a = “ + (-a));
System.out.println(“c = ++a = “ + (++a));
System.out.println(“c = b-- = “ + (b--));
System.out.println(“a = “ + a + “ b = “ + b);
} }
Promoção automática de tipos
Quando tipos diferentes são misturados numa expressão, os mais
simples são transformados nos tipos mais complexos presentes
através da promoção automática (Tabela 4).
Tabela 4 – Promoção automática de tipos
1o operando
2º operando
B
S
I
L
F
D
B
B
S
I
L
F
D
S
S
S
I
L
F
D
I
I
I
I
L
F
D
L
L
L
L
L
F
D
F
F
F
F
F
F
D
D
D
D
D
D
D
D
B=byte, D=double, F=float, I=int, L=long, S=short
14
Elementos fundamentais
Exemplo:
int i = 3; long l = 12; float f = 1.5f; double d = 2.25;
// resultado é 10, mas do tipo double
double res = (i + l) * f / d;
A promoção é automática porque não existe perda de precisão
quando um tipo simples é convertido em outro complexo.
Coerção (type casting)
Coerção (type casting) é a conversão de um tipo mais complexo
em outro mais simples. Como provoca perda de precisão, deve ser
explicitada para que o compilador autorize a operação.
Esta indicação se faz com a colocação do tipo desejado entre
parêntesis antes da expressão cujo resultado será convertido:
double d = 3.47;
// x recebe 3, parte fracionária é truncada
int x = (int) d;
// resultado 2*3.47 é convertido para float
float f = (float) (2 * d);
A coerção de tipos também pode ser aplicada a objetos.
Operadores relacionais
Comparam expressões numéricas retornando um resultado lógico.
Operador Descrição
==
!=
>
>=
<
<=
Igualdade.
Diferença.
Maior que.
Maior que ou igual a.
Menor que.
Menor que ou igual a.
• O operador de igualdade “==” não deve ser confundido com
o operador de atribuição ‘=’.
• Não podem ser usados na comparação de strings ou objetos.
Exemplo (OperRelac.java)
import java.util.Scanner;
public class OperRelac {
public static void main (String args[]) {
double a, b; // declara variáveis
// lê valores para a e b
Scanner s = new Scanner(System.in);
System.out.print(“a ? “); a = s.nextDouble();
System.out.print(“b ? “); b = s.nextDouble();
// realiza as operações relacionais
System.out.println(“a == b = “ + (a == b));
System.out.println(“a != b = “ + (a != b));
System.out.println(“a > b = “ + (a > b));
System.out.println(“a >= b = “ + (a >= b));
System.out.println(“a < b = “ + (a < b));
System.out.println(“a <= b = “ + (a <= b));
} }
Operadores lógicos
Interligam expressões lógicas produzindo um resultado lógico.
Operador
Descrição
&&
||
!
E lógico (and).
Ou lógico (or).
Negação (not).
Operadores e expressões
15
Exemplo (OperLogic.java)
public class OperLogic {
public static void main (String args[]) {
// declara e inicializa algumas variáveis
boolean a = true, b = false;
// exibe valores de a e b
System.out.println(“a = “ + a + “ b = “ + b);
// realiza as operações lógicas
System.out.println(“a && b = “ + (a && b));
System.out.println(“a || b = “ + (a || b));
System.out.println(“
!a = “ + (!a));
System.out.println(“
!b = “ + (!b));
} }
Operador ternário
É um avaliador simples que permite usar o valor de duas expressões
diferentes conforme o resultado da condição. Sua sintaxe é:
<cond> ? <expr_true> : <expr_false>
Se a expressão cond é verdadeira, é retornado o resultado de
é retornado o resultado de expr_false.
expr_true, senão
Exemplo (OperTernario.java)
import java.util.Scanner;
public class OperTernario {
public static void main (String args[]) {
Scanner sc = new Scanner(System.in);
System.out.print(“Preco Alcool: “);
double alcool = sc.nextDouble();
System.out.print(“Preco Gasolina: “);
double gasolina = sc.nextDouble();
// atribui o maior valor
double maior = gasolina > alcool ? gasolina : alcool;
// exibe qual combustível é mais vantajoso
System.out.println(“Eh mais vantajoso abastecer com “
+ (alcool/gasolina<0.7 ? “alcool” : “gasolina”) + “.”);
} }
Operadores bit a bit (bitwise)
Manipulam os bits de seus operandos.
Operador Descrição
&
|
^
~
<<
>>
>>>
E bit-a-bit (bitwise and).
Ou bit-a-bit (bitwise or).
Ou-exclusivo bit-a-bit (bitwise xor).
Complemento de 2.
Rotação à esquerda (left shift) de n bits.
Rotação à direita (right shift) de n bits.
Rotação à direita sem sinal (unsigned right shift).
• As operações bitwise E, Ou e Ou-Exclusivo são realizadas bit a
bit (a0 com b0, a1 com b1 e assim por diante).
•
~
•
<< e >> rotacionam os bits do 1º operando, à esquerda ou direita,
só toma um operando e efetua seu complemento de 2.
de n posições (2º operando). Equivalem a multiplicar ou dividir
por 2n.
•
>>>
também rotaciona à direita, mas toma o bit de sinal como
parte do valor do operando.
Exemplo (OperBitwise.java)
public class OperBitwise {
public static void main (String args[]) {
Download