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,
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) // 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)
{ 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)