Fundamentos Basicos Do Java
Fundamentos Basicos Do Java
-2
Sumário
Índice de tabelas
Índice de Figuras
Introdução ao Java – Fundamentos básicos - 3
básicos
Introdução ao Java – Fundamentos básicos - 4
1.1. Introdução
Veremos a estrutura básica do Java com mais detalhes nessa apostila, portanto
leia com bastante atenção e anote as dúvidas para discussão nos fóruns.
Classifcamos como tópicos iniciais o conceito de classes, variáveis, objetos, métodos,
controle de fuxo, operadores.
1.2. Classes
Como um objeto é uma instância de uma classe, muitas vezes veremos essas
duas palavras, objeto e instância, sendo usadas de forma intercambiável. Quando
defnimos uma classe, precisamos declarar com exatidão sua forma e sua natureza.
Isso é feito especifcando-se os dados que ela contém e as funções (métodos) que
operam sobre esses dados.
Não se preocupe muito se alguns termos por agora não fazerem sentindo,
ou, estranho. A medida que vamos avançando no curso e praticando as
dúvidas teóricas tendem a serem solucionadas através da pratica.
Introdução ao Java – Fundamentos básicos - 6
class Pessoa {
double largura;
double altura;
} // fm da classe Pessoa
Observe que uma "Pessoa real" poderia ter várias outras características,
como: idade; peso; etc. Nesse nosso exemplo, limitamos nossa abstração
somente às propriedades largura, altura. Nossa classe Pessoa defne duas
variáveis de instância: “largura” e “altura”.
Como dissemos, uma classe defne um novo tipo de dado. Nesse caso, o novo
tipo de dado é chamado Pessoa. Usaremos esse nome para declarar objetos do tipo
Pessoa. É importante lembrar que a declaração de uma classe apenas não cria um
objeto. Assim, a declaração não faz com que um objeto do tipo Pessoa passe a existir.
Para que seja criado, de fato, um objeto do tipo Pessoa, usamos o seguinte
comando: Pessoa pessoa1 = new Pessoa(); // cria um objeto do tipo Pessoa chamado
pessoa1.
Depois que o comando for executado, "pessoa1" será uma instância de Pessoa,
passando a ser uma realidade física. Por enquanto, não se preocupe com os detalhes
desse comando.
Introdução ao Java – Fundamentos básicos - 7
Novamente, cada vez que criamos uma instância de uma classe, estamos
criando um objeto que contém sua própria cópia de cada variável de instância
defnida pela classe. Portanto, cada objeto Pessoa contém cópias próprias das
variáveis de instância “largura” e “altura”.
Para acessar essas variáveis, usamos o operador “ponto” ('.'). Ele conecta o
nome do objeto ao nome de uma variável de instância. Por exemplo, para atribuir o
valor 50 à variável “largura” de “pessoa1”, usamos o seguinte comando:
Pessoa1.largura = 50;
Quando esse programa for compilado, veremos que dois arquivos “.class”
foram criados: PessoaDemo.class e Pessoa.class .
Introdução ao Java – Fundamentos básicos - 9
java PessoaDemo
1.3. Variáveis
Uma variável é um contêiner que armazena algo, você pode imaginar como
sendo uma gaveta também e que ela possui um espaço ou tamanho para armazenar
algo e pode ter seu conteúdo alterado com o tempo. A variável em Java deve ter um
nome e um tipo obrigatoriamente. Isso é importante, pois é um recurso que impede
que você insira um valor literal (um texto, por exemplo) dentro de uma variável que
deve armazenar um número inteiro.
É importante deixar claro que existem palavras reservadas que não podem ser
usadas como identifcadores de variáveis. Veja as palavras reservadas na imagem
abaixo:
Existe uma convenção Java que diz que nomes de variáveis devem:
As variáveis dos tipos byte, short, int, long, double, foat representam
valores numéricos.
Essas letras são sufxos de literais. Elas indicam o tipo do valor que você
está passando para a variável.
O programa abaixo ilustra esse fato. Ele declara dois objetos da classe
“Caixa”.
1.4. Métodos
“tipo” especifca o tipo de dados retornado pelo método. Pode ser qualquer
tipo válido, inclusive os tipos de classes criadas pelo programador. Se um método não
retorna nenhum valor, seu valor retornado deve ser declarado como sendo “void”.
return valor;
Raramente criamos uma classe como “Caixa”, que contém somente dados,
embora isso seja perfeitamente legal em Java. Na prática, geralmente usamos
métodos para acessar as variáveis de instância defnidas pela classe.
São os métodos que defnem a interface da maioria das classes. Isso permite
que o implementador da classe oculte o layout interno das estruturas de dados da
classe, por trás das abstrações de métodos. Isso é muito mais seguro e elegante.
Volume = 1000.0
Volume = 1536.0
caixa1.volume();
caixa2.volume();
A linha
caixa1.volume();
Cada vez que “volume()” é invocado, ele exibe o volume da caixa especifcada.
Podemos dizer que o método é a forma usada por Java para implementar sub-
rotinas. Há uma coisa muito importante a se observar dentro do método “volume()”:
as variáveis de instância “largura”, “altura” e “profundidade” são referenciadas
diretamente, sem necessidade de precedê-las com o nome do objeto nem o operador
“ponto”.
Introdução ao Java – Fundamentos básicos - 20
Quando um método utiliza uma variável de instância que é defnida por sua
classe, ele faz isso diretamente, sem referência explícita a um objeto e sem usar o
operador “ponto”.
Resumindo:
• Quando uma variável de instância é acessada por um código que não faz
parte da classe na qual essa variável de instância é defnida, isso precisa ser feito
através de um objeto, usando o operador “ponto”.
• Quando uma variável de instância é acessada por um código que faz parte
da mesma classe que a variável de instância, essa variável pode ser referenciada
diretamente. O mesmo se aplica aos métodos.
Nas linhas:
volumeVar = caixa1.volume();
volumeVar = caixa2.volume();
Ainda com relação aos valores retornados por um método, dois aspectos
importantes devem ser lembrados:
• O tipo do dado retornado por um método deve ser compatível com o tipo
retornado especifcado para o método. Por exemplo, se o tipo especifcado para um
método for "boolean", ele não pode retornar um "int".
int quadrado() {
return 2 * 2;
} // fm do método quadrado()
Embora esse método retorne de fato o valor de 2 ao quadrado, seu uso é muito
limitado. Contudo, se modifcarmos o método de maneira que ele receba um
parâmetro, conforme mostrado a seguir, é possível fazer com que “quadrado()” seja
muito mais útil.
Agora, “quadrado()” retorna o quadrado de qualquer valor para o qual ele seja
chamado. Isto é, “quadrado()” é agora um método de uso geral, capaz de computar o
quadrado de qualquer valor inteiro, e não apenas de 2, conforme mostram as linhas
abaixo.
int x, y;
x = quadrado(7); // x é igual a 49.
x = quadrado(9); // x é igual a 81.
y = 10;
x = quadrado(y); // x é igual a 100.
caixa1.largura = 5;
caixa1.altura = 10;
caixa1.profundidade = 20;
Nas linhas:
é executada:
1.5.1. if
A diretiva if permite a tomada de decisão baseada numa condição. Estrutura
do if:
1.5.2. switch
switch ( <expr_ord> ) {
[ case const0 :
[ diretivas; ]]
[ case const1 :
[ diretivas; ]]
[ default :
[ diretivas; ]]
}
Exemplo do switch:
• Se uma variável for menor que o tipo int é convertido desde, que siga a regra
do tipo;
byte g =2;
switch(g){
case 23://valido
case 128: // invalido muito grande para um byte.
Introdução ao Java – Fundamentos básicos - 31
1.5.3. break
O importante é que o switch funciona de cima para baixo, e quando um case
verdadeiro é encontrado tudo abaixo será executado, isso quando não temos o break
para dar um stop no processo. Baixe o código sw1.java no Moodle para teste:
1.5.4. default
1.5.5. for
A instrução for é usada para percorrer conjunto de dados, que pode ser um
array, uma lista, etc. A partir do Java 5, o for ganhou um novo apelido : “for básico” o
motivo foi que nasceu um novo tipo de for, o chamado de for aprimorado, tem o
mesmo objetivo, porém melhora a legibilidade quando precisamos percorrer todo o
conjunto sem se preocupar em saber o tamanho dele. Veremos mais na frente o for
aprimorado.
Algumas características:
1.5.7. while
A instrução while serve para testar uma condição enquanto ela for verdadeira,
a diferença é que sempre que for verdadeira, o que está no bloco do while é
executado. Muito cuidado para não criar loops infnitos aqui.
1.5.8. do / while
do {
corpo;
} while ( <cond> );
1.6. Construtores
Não é prático inicializar todas as variáveis de uma classe cada vez que uma
instância é criada mesmo que seja por meio de métodos como o “defneDim()” do
exemplo CaixaDemo5.java. Seria mais simples e prático se toda a inicialização fosse
feita automaticamente no momento da criação do objeto. Como a necessidade de
inicialização é muito comum, o Java permite que os objetos inicializem a si mesmos
quando são criados. Essa inicialização automática é executada através do uso de um
método construtor.
Um aspecto diferente do construtor é que ele não tem tipo retornado, nem
mesmo void. Isso acontece porque o tipo retornado pelo construtor de uma classe é o
tipo da própria classe.
O exemplo da classe “Caixa” da lição anterior pode ser reescrito, de modo que
as dimensões da caixa sejam automaticamente inicializadas quando o objeto for
construído. Isso é feito com o uso de um construtor no lugar do método
“defneDim()”. Nessa primeira versão, o construtor simplesmente ajusta todas as
dimensões da caixa para um mesmo valor.
Introdução ao Java – Fundamentos básicos - 38
Nas linhas :
• += Soma e atribui
• -= Subtrai e atribui
• *= Multiplica e atribui
• /= Divide e atribui
• + Adição
• - Subtração
• * Multiplicação
• / Divisão
• % Resto da divisão inteira
Introdução ao Java – Fundamentos básicos - 42
int a = 1, b;
b = a++; // b recebe 1, a contém 2
int a = 1, b;
b = ++a; // b recebe 2, a contém 2
• == Igualdade
• != Diferença
• > Maior que
• < Menor que
• >= Maior ou igual
• <= Menor ou igual
Introdução ao Java – Fundamentos básicos - 44