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 [-[Link]; + [Link]]
– 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) // x == 14
y=x%3 // y == 2
x++ // x == 15
y-- // y == 1
y += x // 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)
{ [Link](“Valor de x: ” + x);
x--;
}
do
{ x--;
[Link](“Valor de x: ” + x);
} while (x>0)
Comandos de Repetição (cont.)
for (x= -20; x<= 0; x++)
{
msg = “Valor de x” + x;
[Link](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, [Link]
subpacotes
nome completo de classes inclui pacote:
– String ~ [Link]
Definindo pacotes:
package meu_pacote;
Usando pacotes:
import [Link].*;
Alguns pacotes
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
Estrutura de um arquivo .java
[package]
[import]
public class NomeArquivo
Arrays
Declaração:
Point [] listaDePontos;
Point listaDePontos[];
[Link]
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 {[Link](),
circulo2. getCenterPoint()}
//inicialização em tempo de execução