java - IME-USP

Download Report

Transcript java - IME-USP

Linguagem JAVA
Ariane Machado Lima
Noções gerais


Histórico (Oak)
Características:
–
–
–
–
–
–
–
–
–
simples e familiar (C, C++)
orientada a objetos (tipos primitivos e objetos)
distribuída (redes dinâmicas e objetos remotos)
interpretada (bytecode, JVM, compile-run)
robusta (sem pointers, GC, fortemente tipada)
segura (GC, sem pointers, bytecode protegido)
portabilidade (diferentes plataformas e browsers)
alta performance (desenvolvimento e bom bytecode)
multitarefa e dinâmica (threads, sincronização,
redes)
Java não tem...








typedef, define, preprocessor
struct, union
enum
goto
pointers
sobrecarga de operadores
templates
herança múltipla
Sintaxe básica

Tipos básicos:
–
–
–
–
–
–
–
–
long : inteiro de 64 bits (+ ou - 18 dígitos)
int: inteiro de 32 bits [-2.147.483.648; + 2.147.483.647]
short: inteiro de 16 bits [-32.768; + 32.767]
byte: inteiro de 8 bits [-128; +127]
double: real de precisão dupla, 64 bits [1,7E-308; 1,7E+308]
float: real de 32 bits [3,4E-38; 3,4E+38]
char: caracter de 16 bits (sem sinal)
boolean: tipo lógico true ou false (1 bit)
Sintaxe básica (cont.)

Comentários:
// até o fim da linha
/* até encontrar uma
barra /

Operadores relacionais:
==
!=
>
>=
<
<=
igual
diferente
maior
maior ou igual
menor
menor ou igual
Sintaxe básica (cont.)

Operadores aritméticos
x = 4*(2+5) / (3-1)
y=x%3
x++
y-y += x
-=
*=

// x == 14
// y == 2
// x == 15
// y == 1
// y == 16
/=
Alguns operadores lógicos
&&
e
||
ou
%=
Comando condicional
if (expressão booleana)
bloco1;
else bloco2;
if (x >= 0)
x = 1;
else x = -1;
Comando de seleção
switch (expressão)
{ case valor1: bloco1;
break;
case valor2: bloco2;
break;
...
case valorN: blocoN;
break;
default: bloco N+1;
}
Comandos de Repetição
while (x>=0)
{ System.out.println(“Valor de x: ” + x);
x--;
}
do
{ x--;
System.out.println(“Valor de x: ” + x);
} while (x>0)
Comandos de Repetição (cont.)
for (x= -20; x<= 0; x++)
{
msg = “Valor de x” + x;
System.out.println(msg);
}
Equivalências





super
this ~ self
static: método ou variável de classe
Envio de mensagens:
(classe/objeto).mensagem([param*])
Exemplo:
Final

Classe:
– não pode ser mais extendida

Método:
– não pode mais ser sobrecarregado

Variável:
– não pode mais mudar de valor
(constante)
Classes e métodos abstratos

Classes abstratas:
– reúne características comuns das subclasses
– não podem ser instanciadas (não possuem
construtor)

Métodos abstratos:
–
–
–
–
não possui código
devem ser implementados nas subclasses
não pode ser static ou final
devem pertencer a uma classe abstrata
Interface




Define tipo (~classe abstrata)
Apenas métodos públicos
Não possui código
Não possui atributos de instância
– atributos final e static são permitidos


Não possui construtor
Podem herdar de outras interfaces
Classes abstratas X interfaces

Fatoração de implementação:
– funcionalidades iguais de um conjunto de classes
podem ser implementadas apenas uma vez na
classe abstrata

Generalidade de uso:
– uma interface pode ser implementada por classes
não relacionadas
Classes abstratas X interfaces (cont.)

Expansibilidade:
– inserção de novos métodos em uma interface
implica modificação de todas as classes que a
implementam

Herança múltipla:
– cada classe pode herdar de apenas uma classe
(abstrata ou não), mas pode implementar várias
interfaces
Pacotes




Coleções de classes
java, javax, org.omg
subpacotes
nome completo de classes inclui pacote:
– String ~ java.lang.String

Definindo pacotes:
package meu_pacote;

Usando pacotes:
import java.util.*;
Alguns pacotes







java.lang
java.util
java.io
java.awt
java.math
java.net
java.beans
Estrutura de um arquivo .java
[package]
[import]
public class NomeArquivo
Arrays

Declaração:
Point [] listaDePontos;
Point listaDePontos[];

listaDePontos.length
Arrays (cont)

Criação e inicialização:
listaDeInteiros = new int[10]; //valores default
listaDeInteiros = new int {1,2,3,4,5}; //tipo implícito
(uso de array anônimo)
listaDeInteiros = {1,2,3,4,5}; //tipo e tamanho
implícitos
Point[] pontos
{circulo1.getCenterPoint(),
circulo2. getCenterPoint()}
//inicialização em tempo de execução