Apostila Java
Apostila Java
25 de Setembro de 2012
Conteúdo
I Básico 4
1 Iniciando 5
1.1 Porque Java? . . . . . . . . . . . . . . . . . . . 6
1.2 JVM – Java Virtual Machine . . . . . . . . . . . 7
1.3 Mas Java não é . . . . . . . . . . . . . . . . . . . 8
1.4 Preparando o Sistema . . . . . . . . . . . . . . . 9
1.4.1 Instalando o JDK . . . . . . . . . . . . . 9
1.4.2 Instalando o Eclipse IDE . . . . . . . . . . 11
1.5 O Primeiro Programa . . . . . . . . . . . . . . . 12
1.6 Imprimindo e Lendo do Console . . . . . . . . . . 18
2 Programação Tradicional 22
2.1 Noções Básicas . . . . . . . . . . . . . . . . . . . 23
2.2 Tipos Primitivos . . . . . . . . . . . . . . . . . . 24
2.3 Comentários . . . . . . . . . . . . . . . . . . . . 26
2.4 Operadores . . . . . . . . . . . . . . . . . . . . . 27
2.4.1 Atribuição . . . . . . . . . . . . . . . . . 28
2.4.2 Operadores Aritméticos . . . . . . . . . . 28
2.4.3 Cast . . . . . . . . . . . . . . . . . . . . 29
2.4.4 Incremento e Decremento . . . . . . . . . 29
2.4.5 Operadores Relacionais . . . . . . . . . . 31
2.4.6 Operadores Booleanos . . . . . . . . . . . 32
2.4.7 Ordem de Precedência . . . . . . . . . . . 32
2.5 Tratando Textos com os String’s . . . . . . . . 33
2.6 Loop while . . . . . . . . . . . . . . . . . . . . 36
2.7 Loop for . . . . . . . . . . . . . . . . . . . . . 36
2.8 Utilizando break e continue . . . . . . . . . 36
2.9 Precisão dos Números em uma Máquina . . . . . 36
2.10 Condicionais com if . . . . . . . . . . . . . . . 37
2.11 A classe Math . . . . . . . . . . . . . . . . . . . 37
2.12 Funções e Variáveis Estáticas (static) . . . . . 37
2.12.1 Declaração de Funções . . . . . . . . . . . 38
2.12.2 Chamando Funções . . . . . . . . . . . . 39
2.12.3 Variáveis Locais e static . . . . . . . . 39
4 Interfaces Gráficas 55
4.1 Introdução . . . . . . . . . . . . . . . . . . . . . 56
4.2 JFrame . . . . . . . . . . . . . . . . . . . . . . 56
4.3 Layout . . . . . . . . . . . . . . . . . . . . . . . 58
4.3.1 BorderLayout . . . . . . . . . . . . . . . . 58
4.3.2 FlowLayout e GridLayout . . . . . . . . . 58
4.4 Layouts combinados com o JPanel . . . . . . . 59
4.5 Listeners . . . . . . . . . . . . . . . . . . . . . . 61
4.6 JLabel e JTextField . . . . . . . . . . . . . 62
II Aplicações 64
5 Funções Monovariáveis 65
5.1 Representando Funções Monovariáveis . . . . . . 66
5.2 Raizes de Funções Monovariáveis . . . . . . . . . 66
5.3 Derivadas e o Método de Newton . . . . . . . . . 66
5.4 Integral Aproximada de Funções Monovariáveis . . 66
5.5 Ajustando Retas e Polinômios . . . . . . . . . . . 66
5.6 Interpolação Linear e Cúbica . . . . . . . . . . . . 66
6 Sistemas de Equações 67
6.1 Sistemas de Equações Lineares . . . . . . . . . . 68
6.2 Sistemas de Equações Não-Lineares . . . . . . . . 68
6.3 Sistemas de Equações Diferenciais Ordinárias . . . 68
7 Conteúdo Extra 69
7.1 Estatı́stica . . . . . . . . . . . . . . . . . . . . . 70
7.2 Distribuições e Testes . . . . . . . . . . . . . . . 70
III Apêndices 71
Lista de Atalhos 72
A Padrões de Codificação 73
A.1 Porque Padrões de Codificação? . . . . . . . . . . 74
A.2 Organização dos Arquivos . . . . . . . . . . . . . 74
A.2.1 Comentários Iniciais . . . . . . . . . . . . 74
A.2.2 Comandos Package e Import . . . . . . . 74
A.2.3 Declaração de Classes e Interfaces . . . . . 75
A.2.4 Organização e Indentação . . . . . . . . . 76
A.3 Convenções de Nomes . . . . . . . . . . . . . . . 77
Sı́mbolos e Convenções
3 /**
4 * Class documentation goes here.
5 *
6 * @author rafael
7 */
8 class ClassName {
9 // This is a single line comment
10 }
Neste capı́tulo vamos construir nosso primeiro programa em Java. Para isto vamos precisar de
algumas ferramentas e aqui apresentamos também como obter e instalar estas ferramentas.
Sumário
1.1 Porque Java? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2 JVM – Java Virtual Machine . . . . . . . . . . . . . . . . . . . . . 7
1.3 Mas Java não é . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4 Preparando o Sistema . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.5 O Primeiro Programa . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.6 Imprimindo e Lendo do Console . . . . . . . . . . . . . . . . . . . 18
6 1 Iniciando
Como isto é possı́vel? Isto é possı́vel porque o aluno não vai per-
der horas decifrando uma mensagem de erro de compilação na
linha 3560 do arquivo stdio.h. Não vai ter que compreender
como funciona de fato a memória do computador para que alo-
Muitos compiladores limitam o
número máximo de erros que memória dinâmicamente (e que não esqueça de liberar esta
apresentados para 100, evitando memória mais tarde). Ou então indo atrás de 100 unresolved
que travem devido ao excessivo
número de erros. symbol que apareceram porque o compilador foi atualizado para
uma versão mais recente.
Neste livro há um forte apelo para a utilização do Linux. Este livro
O Ubuntu Linux pode ser baixado
de http://www.ubuntu.com. e todo o seu conteúdo foram gerados utilizando uma instalação
de Ubuntu Linux. É claro que sou um entusiasta do Linux e reco-
mendo a sua utilização, entretanto não há nenhum problema em
acompanhar este livro em uma instalação Windows XP e superi-
ores.
O processo de compilação de
arquivos Java é tipicamente Neste ponto o aplicativo já foi compilado e o seu bytecode ge-
rápido. Normalmente o usuário não rado. Na verdade o Eclipse recompila o código automaticamente
percebe a etapa de compilação,
mesmo para projetos grandes. toda vez que um arquivo é salvo, desde que a opção do menu
Project I Build Automatically esteja marcada. O aplicativo já
pode também ser executado através do menu Run I Run As I
Java Application. Entretanto nada acontecerá, pois não adico-
1.5 O Primeiro Programa 17
3 import java.util.Scanner;
3 import java.util.Scanner;
Neste capı́tulo vamos introduzir os conhecimentos necessários para fazer o que vamos cha-
mar de programação tradicional (não orientada a objetos). Um termo mais técnico seria
programação procedural. Isto nos permitirá construir programas pequenos, capazes de fazer
cálculos repetitivamente e de tomar decisões em função da escolha do usuário ou do resultado
dos cálculos executados.
A programação orientada a objetos é introduzida apenas no Capı́tulo 3, isto porque boa parte
dos engenheiros e cientistas já construiram algum tipo de programa tradicional (procedural)
em alguma linguagem antes de experimentar o Java. Se este for o caso, este capı́tulo
pode ser visto praticamente como uma apresentação da sintaxe Java para comandos já bem
conhecidos.
Sumário
2.1 Noções Básicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.2 Tipos Primitivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.3 Comentários . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.4 Operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.5 Tratando Textos com os String’s . . . . . . . . . . . . . . . . . . 33
2.6 Loop while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.7 Loop for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.8 Utilizando break e continue . . . . . . . . . . . . . . . . . . . . 36
2.9 Precisão dos Números em uma Máquina . . . . . . . . . . . . . . 36
2.10 Condicionais com if . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.11 A classe Math . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.12 Funções e Variáveis Estáticas (static) . . . . . . . . . . . . . . . 37
2.1 Noções Básicas 23
2.3 Comentários
Toda a linguagem de programação pertime a presença comentários.
Comentários são textos que não serão interpretados pela máquina
e não alteram em nada a execução do programa. Eles existem
apenas para que o programador explique o funcionamento do pro-
grama ou coloque informações adicionais. Estas informações tor-
narão mais fácil o entendimento do código pelo próprio autor ou
para terceiros que tenham acesso ao código. Em Java existem
dois tipos de comentários:
Por linha : É iniciado por // e faz com que todo o texto seja ignorado
até o final da linha.
Por bloco : É iniciado por /* e faz com que todo o texto seja ignorado
até que */ seja encontrado. Pode se expandir por múltiplas
linhas.
Um trecho de código que exemplifica o uso dos dois tipos de
comentários segue:
// Declaring a double variable (this is a line comment)
double x = 0.5;
2.4 Operadores
Na seção anterior aprendemos como declarar e inicializar variáveis
de tipos primitivos. Agora vamos detalhar como trabalhamos
estas variáveis utilizando operadores. Operadores são sı́mbolos
especiais que executam operações especiais em um, dois ou três
operandos e então retornam um resultado.
28 2 Programação Tradicional
2.4.1 Atribuição
2.4.3 Cast
i = x;
4 i = (int)x;
i = i + 1;
counter = counter - 1;
xGreaterThanZero = x > 0;
É importante notar que os operadores <, >, <= e >= não po-
dem ser utilizados com o tipo String, pois este não é um tipo
numérico primitivo. Também lembre que, embora seja possı́vel
utilizar os operadores == e != com um String estes podem
não retornar o valor desejado (o operador == verificará se os ob-
jetos em teste se referem ao mesmo endereço de memória e não
se o texto contido de fato é o mesmo). Para este caso devem
ser utilizadas as funções equals(), equalsIgnoreCase()
e compareTo(), mais detalhes sobre o tipo String são en-
contrados na Seção 2.5.
Na Seção 2.6 vamos aprender como utilizar os operadores relaci-
onais para iterar várias vezes um trecho de código com o while
32 2 Programação Tradicional
System.out.println(s1 == s2);
System.out.println(s1 == s2);
System.out.println(s1 == s2);
1 package pack;
8 while(one+eps != one){
9 eps = eps/2;
10 }
11 System.out.print("Precision for double:" + eps);
12 }
13 }
Enquanto uma função representa apenas um conjunto de instruções agrupadas para realizar
uma determinada tarefa, um objeto encapsula tanto dados quanto tarefas que vão operar sobre
estes dados. Assim, trabalhando com objetos temos uma estrutura muito mais sofisticada
que auxilia a gerenciar a complexidade de programas grandes.
Sumário
3.1 Objetos, Funções de Objetos e Variaveis de Objeto . . . . . . . . 41
3.2 Construtores e a Inicialização de Objetos . . . . . . . . . . . . . . 44
3.3 Modificadores public e private . . . . . . . . . . . . . . . . . . 46
3.4 Vetores e Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.5 Algumas classes do java.util . . . . . . . . . . . . . . . . . . . 51
3.6 Inheritance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.7 Classes Abstratas e Interfaces . . . . . . . . . . . . . . . . . . . . 54
3.8 Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.9 Arquivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.10 Unidades de Medida . . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.1 Objetos, Funções de Objetos e Variaveis de Objeto 41
10 st1.name = "Charlie";
11 st1.id = 100;
12 st2.name = "Alan";
13 st2.id = 200;
14 st3.name = "Jake";
15 st3.id = 300;
16 }
17 }
6 double getAverage(){
7 return (tes1 + test2 + test3)/3;
8 }
9 }
3.1 Objetos, Funções de Objetos e Variaveis de Objeto 43
6 double getAverage(){
7 return (tes1 + test2 + test3)/3;
8 }
9 }
6 Student(){
7 name = "Unamed";
8 }
10 double getAverage(){
11 return (tes1 + test2 + test3)/3;
12 }
13 }
6 Student(String n){
7 name = n;
8 }
10 double getAverage(){
11 return (tes1 + test2 + test3)/3;
12 }
13 }
7 Student(String n) {
8 id = Student.counter++;
9 name = n;
10 }
11 }
st2.id = st1.id;
public Student(String n) {
id = Student.counter++;
name = n;
}
}
7 public Student(String n) {
8 id = Student.counter++;
9 name = n;
10 }
11 public int getId() {
12 return id;
13 }
14 }
7 public Student(String n) {
8 id = Student.counter++;
9 name = n;
10 }
11 public int getId() {
12 return id;
13 }
14 public void setId(int newId){
15 id = newId;
16 }
17 }
Claro que para o nosso exemplo, seria mais plausı́vel que a função
setId(), na linha 14 do código acima, não existisse.
De qualquer forma, também é recomendado que as variáveis de
uma classe sejam modificadas por outras classes apenas através
de setters. Pois, como um setter é uma função normal podemos
tomar outras ações além de simplesmente atualizar o valor da
variável. Por exemplo, podemos verificar se o valor fornecido é
válido. Ou ainda, atualizar o valor de outras variáveis que depen-
dem da que está sendo alterada.
double doubleVector[];
int intVector[];
String stringVector[];
Student studentVector[];
3.6 Inheritance
Objetos de uma mesma classe compartilham uma mesma estru-
tura e comportamento, mas podem estar em estados diferentes
(variáveis com valores diferentes). A classe determina a estrutura
dos objetos especificando quais são as variáveis que ele contém.
Ela também determina o comportamento dos objetos, pois es-
pecifica quais são as funções que o objeto disponibiliza. Porém,
algo similar pode ser construı́do de uma forma ou de outra com a
maioria das linguagens de programação. O que realmente distin-
gui a programação orientada a objetos da programação tradicio-
nal é que podemos ter classes que compartilham parte, mas não
No Inglês são utilizados os termos
inheritance e polymorphism. toda a estrutura ou comportamento. Isto pode ser feito através
a herança e polimorfismo.
Outros pontos:
• Referencias utilizando a superclass
• Variáveis especiais this e super
• O operador instanceof
Até aqui nossos programas se comunicaram com o usuário apenas através do console. Neste
capı́tulo vamos aprender como construir interfaces gráficas simples para a entrada dados e
reportagem para o usuário.
Sumário
4.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.2 JFrame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.3 Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
4.4 Layouts combinados com o JPanel . . . . . . . . . . . . . . . . . 59
4.5 Listeners . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.6 JLabel e JTextField . . . . . . . . . . . . . . . . . . . . . . . . 62
56 4 Interfaces Gráficas
4.1 Introdução
Até o momento construimos apenas programas que se comuni-
cam com o usuário utilizando a entrada e saı́da padrões de texto
System.in e System.out. Hoje em dia, o usuário de um
computador espera sempre interagir com ele através de uma in-
terface gráfica (Graphical User Interface – GUI). Java pode ser
utilizado para escrever desde applets simples até programas com-
pletos com uma sofisticada GUI. Neste livro vamos construir in-
terfaces gráficas com o swing, que é parte integrante do Java.
A maior parte das classes que vamos utilizar aqui faz parte do
pacote javax.swing.
Em termos da função main um programa gráfico é muito similar
aos programas que vinhamos escrevendo:
public class FirstGUI {
public static void main(String[] args) {
JFrame f = new JFrame();
f.setVisible(true);
}
}
Se o programa acima for executado ele vai exibir uma janela muito
pequena no canto superior esquerdo da tela. Esta janela pode ser
redimensionada, maximizada, movida ou fechada. Entretanto se
a janela é fechada, através do seu botão fechar, o programa não
é finalizado. Note no Eclipse que o programa continua rodando,
mesmo depois de fechada a janela. É preciso finalizar o programa
através do botão Terminate da janela de Debug do Eclipse ou
então através do menu Run I Terminate.
Para que o programa termine quando a janela é fechada precisa-
mos ter o seguinte código:
public class FirstGUI {
public static void main(String[] args) {
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
4.2 JFrame
Uma parte fundamental de um programa GUI é a janela. Em
Java temos vários tipos de janela que podemos utilizar, mas o
comportamento mais usual é obtido com a classe JFrame. Um
JFrame é uma janela independente que pode, por exemplo, ser
4.2 JFrame 57
5 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
7 f.setSize(250,100);
8 f.setLocationRelativeTo(null);
10 f.setVisible(true);
11 }
12 }
5 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
10 f.setSize(250,100);
11 f.setLocationRelativeTo(null);
13 f.setVisible(true);
14 }
15 }
58 4 Interfaces Gráficas
4.3 Layout
Conforme vamos adicionando o conteúdo de uma janela vamos
precisar organizar de que forma este conteúdo será exibido. Para
isto vamos precisar utilizar os gerenciadores de layout. Um ge-
renciador de layout é um objeto que gerencia a forma com que os
objetos são distribuı́dos quando adicionados a um Container.
4.3.1 BorderLayout
5 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
11 f.setSize(250,100);
12 f.setLocationRelativeTo(null);
14 f.setVisible(true);
15 }
16 }
Com o código acima, nosso botão irá ficar sempre na parte inferior
da janela. Se tivéssemos utilizado o BorderLayout.Center
ele voltaria a ocupar toda a janela. As possı́veis possições do
BorderLayout estão apresentadas na Figura 4.1.
5 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
16 f.pack();
17 f.setLocationRelativeTo(null);
19 f.setVisible(true);
20 }
21 }
5 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
25 content.add(xPanel);
26 content.add(yPanel);
27 content.add(buttonPanel);
28 content.add(new JLabel("x + y = 0", JLabel.CENTER));
30 pack();
31 }
36 calc.setLocationRelativeTo(null);
37 calc.setVisible(true);
38 }
39 }
4.5 Listeners 61
4.5 Listeners
Na seção anterior experimentamos como construir janelas com
botões e outros tipos de componentes. Porém ainda não vimos
como realmente responder aos comandos do usuário.
Existe uma diferença básica entre programas feitos para interagir
apenas atráves do console e programas com uma GUI. Em um
programa baseado no console, existe apenas uma única ação es-
perada do usuário. O programa fica pausado esperando que o
usuário digite algo. Quando a entrada é fornecida o programa
continua a sua execução.
Em um programa gráfico, não existe apenas uma opção. O
usuário pode clicar em um botão, modificar uma caixa de texto ou
até mesmo fechar o programa. As diferentes ações que o usuário
pode fazer disparam o que chamamos de eventos. É trabalho de
quem está escrevendo o programa decidir o que fazer quando um
evento ocorre. Podemos não fazer nada ou tomar alguma ação.
Por exemplo, podemos fazer um cálculo quando um determinado
botão recebe um clique. Sempre que um determinado evento
ocorre, o Java avisa aos listener. Um listener é um objeto que
trata um determinado tipo de evento. Quado um listener recebe o
aviso de que um evento ocorreu, ele pode executar algum código.
Assim, para programar um programa GUI, temos que decidir sobre
que eventos queremos ser avisados e então escrever um listener
para eles.
Retornando ao nosso exemplo de uma calculadora de 4 operações.
Se quisermos que algo aconteça quando o usuário pressiona o
botão + precisamos dizer ao botão que vamos ficar escutando.
Isto é feito através da função addActionListener() do
botão:
JButton add = new JButton("+");
add.addActionListener(this);
buttonPanel.add(add);
Isto faz com que objetos da nossa classe possam ser passados para
qualquer função que espere um ActionListener. Por outro
lado, vamos ter que ter que implementar a função actionPerformed()
na nossa classe:
public void actionPerformed(ActionEvent e) {
. . .
}
5 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
19 content.add(top, BorderLayout.PAGE_START);
20 content.add(html, BorderLayout.CENTER);
22 f.pack();
23 f.setLocationRelativeTo(null);
25 f.setVisible(true);
26 }
4.6 JLabel e JTextField 63
27 }
5 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
17 f.pack();
18 f.setLocationRelativeTo(null);
20 f.setVisible(true);
21 }
22 }
Neste capı́tulo vamos construir nosso primeiro programa em Java. Para isto vamos precisar de
algumas ferramentas e aqui apresentamos também como obter e instalar estas ferramentas.
Sumário
5.1 Representando Funções Monovariáveis . . . . . . . . . . . . . . . 66
5.2 Raizes de Funções Monovariáveis . . . . . . . . . . . . . . . . . . 66
5.3 Derivadas e o Método de Newton . . . . . . . . . . . . . . . . . . 66
5.4 Integral Aproximada de Funções Monovariáveis . . . . . . . . . . . 66
5.5 Ajustando Retas e Polinômios . . . . . . . . . . . . . . . . . . . . 66
5.6 Interpolação Linear e Cúbica . . . . . . . . . . . . . . . . . . . . . 66
66 5 Funções Monovariáveis
Neste capı́tulo vamos construir nosso primeiro programa em Java. Para isto vamos precisar de
algumas ferramentas e aqui apresentamos também como obter e instalar estas ferramentas.
Sumário
6.1 Sistemas de Equações Lineares . . . . . . . . . . . . . . . . . . . . 68
6.2 Sistemas de Equações Não-Lineares . . . . . . . . . . . . . . . . . 68
6.3 Sistemas de Equações Diferenciais Ordinárias . . . . . . . . . . . . 68
68 6 Sistemas de Equações
Sumário
7.1 Estatı́stica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
7.2 Distribuições e Testes . . . . . . . . . . . . . . . . . . . . . . . . . 70
70 7 Conteúdo Extra
7.1 Estatı́stica
7.2 Distribuições e Testes
III. Apêndices
Lista de Atalhos
A SUN propõe uma série de regras de codificação em Java no seguinte endereço: http:
//java.sun.com/docs/codeconv/. Neste capı́tulo algumas destas regras são apre-
sentadas, o leitor é encorajado a visitar o site da SUN onde as regras são apresentadas na
ı́ntegra.
74 Apêndice A Padrões de Codificação
import java.util.regex.ASCII;
import java.io.*;
/**
* classVar2 documentation comment that happens to be
* more than one line long
*/
private static Object classVar2;
/**
* ...constructor Blah documentation comment...
*/
public Blah() {
// ...implementation goes here...
}
/**
* ...method doSomething documentation comment...
*/
public void doSomething() {
// ...implementation goes here...
}
/**
* ...method doSomethingElse documentation comment...
* @param someParam description
*/
public void doSomethingElse(Object someParam) {
// ...implementation goes here...
}
}
var = someMethod1(longExpression1,
someMethod2(longExpression2,
longExpression3));
Índice
Ajuste, 66 chamando, 39
Applets, 9 declaração, 38
Arquivos, 54 Funções matemáticas, 37
ArrayList, 54 Funções Monovariáveis
Atribuição, 28 ajuste, 66
definindo, 66
boolean, 24 Integral, 66
break, 36 Interpolação, 66
Newton, 66
Cast, 28, 29
raı́zes, 66
Classes
abstratas, 54 Getter, 46, 48
Comentários, 26
documentação, 27 Herança, 52
Javadoc, 27 Hora, 38
por bloco, 26 hora, 51
por linha, 26
Console if, 37
imprimindo e lendo do, 18 int, 24
Construtores, 44 Interfaces, 54
continue, 36 Java
Convenções não é lento?, 8
comentários, 74 não é para internet?, 9
declaração, 75 porque?, 6
nomes, 77 virtual machine, 7
Data, 51 java.util, 51
Data e hora, 38 Javadoc, 27
Date, 38, 51 JDK
Derivadas, 66 instalando, 9
Documentação, 27 JRE
double, 24 instalando, 9
Listas, 54
Eclipse
instalando, 11 Método de Newton, 66
tutorial, 12 Math, 37
Matrizes, 49, 68
Fit, 66
float, 24 Notação Cientı́fica, 29
for, 36
Funções Objetos, 41
de objetos, 41 construtores, 44
80 Índice
getter, 46, 48
setter, 46, 48
Operadores, 27
Aritméticos, 28
atribuição, 28
Booleanos, 32
Decremento, 29
Incremento, 29
precedência, 32
Relacionais, 31
Precedência, 32
Precisão dos números, 36
print, 18
println, 18
private, 46
public, 46
Scanner, 18
seno, coseno, etc., 37
Setter, 46, 48
Sistemas de Equações
diferenciais ordinárias, 68
lineares, 68
não-lineares, 68
sqrt, 37
static, 37
String, 33
System.in, 18
System.out, 18
Tipos, 23
Tipos primitivos, 24
Unidades de Medida, 54
Variáveis, 23
de objetos, 41
estáticas, 37
locais, 39
membro, 39
static, 39
Vetores, 49
Virtual Machine, 7
instalando, 9
while, 36