2. Java - Conceitos Básicos

Propaganda
Java – Conceitos Bá
Básicos
Conceitos básicos
Características da Linguagem
n
Java é uma Linguagem OO, contendo uma coleção
de APIs para o desenvolvimento de aplicações
multiplataforma
Java foi lançada pela Sun em 1995. Três grandes revisões:
Java Development Kit (JDK) 1.0/1.0.2
Java Development Kit (JDK) 1.1/1.1.8
Java 2 Platform ( Java 2 SDK e JRE 1.2, 1.3, 1.4, 5.0)
n
Java segundo a Sun MicrosystemsSimples
object-oriented
distribuída
interpretada
robusta
segura
architecture-neutral
portável
alta performance
multithreaded
dinâmica
Características da Linguagem
n
Simplicidade:
¡
¡
¡
¡
¡
¡
¡
¡
¡
¡
Poucos comandos,
Ausência de goto (apesar de suportar break para label),
Mecanismos de tratamento de exceção,
Não permite sobrecarga de operadores,
Não suporta herança múltipla,
Não suporta templates,
Não utiliza ponteiros,
Não trabalha com unions ou estruturas; somente classes.
Vetores e strings são objetos.
Java só trabalha com referências !
1
Características da Linguagem
n
Orientada a Objeto
Suporte completo a OOP. Define uma extensa biblioteca de
classes, disponibilizadas em pacotes (packages).
java.lang => classes para definição básica da linguagem (core language)
java.applet => classes para implementação de Applets
java.awt => classes para gráficos, texto, janelas, GUI
java.awt.image
=> classes para processamento de imagens
java.awt.event
=> classes para tratamento de eventos na interface GUI
java.awt.swing
=> classes para interface GUI extensão do AWT
java.awt.peer
=> classes para interface GUI independente de
plataforma
java.io
=> classes para input / output
java.net
=> classes para network computing
java.util
=> classes para tipos de dados úteis (arrays, listas, etc)
Diferentemente de C++, a maioria dos tipos em Java são
objetos, com exceção dos tipos: numéricos, caracter e boolean.
Características da Linguagem
n
Distribuída
¡
¡
¡
Java suporta aplicações Cliente/Servidor
por ser uma linguagem distribuída.
Suporta vários níveis de conectividade
através de classes presentes no java.net
package.
Suporta conexão através de sockets
(socket class).
Características da Linguagem
n
Robusta
¡
¡
¡
Java é uma linguagem fortemente tipada
(mais que C++).
Requer declaração explícita de métodos
(idem ANSI-C).
Não suporta ponteiros, eliminando assim a
possibilidade de invasões de área e
manipulação errônea com aritmética de
ponteiros
2
Características da Linguagem
n
Interpretada
¡
¡
¡
¡
O compilador Java gera Bytecodes ao invés de código
nativo de cada máquina.
Para executar um programa Java é preciso interpretar
os Bytecodes, o que é feito pelo interpretador Java.
Através dos Bytecodes, Java provê um formato de
arquivo objeto neutro (independente de plataforma), o
que permite a sua migração entre plataformas de
maneira eficiente e segura.
Um programa em Java pode rodar em qualquer
plataforma que tenha o interpretador Java instalado e
as bibliotecas de run-time.
Características da Linguagem
Características da Linguagem
n
A Plataforma Java
¡
¡
¡
Uma platforma é o hardware ou o software onde um
programa roda. Já foi apresentado que as plataformas
mais comuns são Windows XP, Linux, Solaris, e
MacOS.
A maioria das platformas pode ser descrita como uma
combinação de sistema operacional e hardware.
A platafroma Java platform differe das outras
platafromas por ser uma platafroma software-only que
roda sobre outras plataformas baseadas em
hardware.
3
Características da Linguagem
n
A Plataforma Java
¡
A platafroma Java possui os componentes:
n
n
Java Virtual Machine (Java VM)
Java Application Programming Interface (Java API)
Plataforma Java
Variável
n
n
É um um dado com um identificador
Declaração:
type name
n
O programa MaxVariablesDemo
apresenta todos os tipos pre-definidos em
Java e os seu valores máximo.
4
Tipos Primitivos de Dados
Palavra Chave
Descrição
Tamanho/Valor
Inteiros
byte
1 byte
8 bits complemento de 2
short
Inteiro curto
16 bits complemento de 2
int
Inteiro
32 bits complemento de 2
long
Inteiro longo
64 bits complemento de 2
Ponto Flutuante
float
Ponto flutuante precisão simples
32-bit IEEE 754
double
Ponto flutuante precisão dupla
64-bit IEEE 754
Outros tipos
char
Um único caracter
16-bit Unicode character
boolean
Tipo buleano
true ou false
Nomes de variáveis
n
n
n
Um identificador deve ser uma série
de caracteres Unicode que comecem
com uma letra.
Não pode ser uma palavra-chave da
linguagem nem true, false ou null.
Tem que ser única em seu escopo.
Tipos Primitivos x Classes
n
n
As variáveis dos tipos primitivos
armazenam o valor que representam;
As classes e arrays são referências para
os valores que representam.
5
Classes dos Números
NumberDemo.java
public class NumberDemo {
public static void main(String args[]) {
Float floatOne = new Float(14.78f - 13.78f);
Float floatTwo = Float.valueOf("1.0");
Double doubleOne = new Double(1.0);
int difference = floatOne.compareTo(floatTwo);
if (difference == 0) {
System.out.println("floatOne is equal to floatTwo.");
} else if (difference < 0) {
System.out.println("floatOne is less than floatTwo.");
} else if (difference > 0) {
System.out.println("floatOne is greater than floatTwo.");
}
System.out.println("floatOne is "
+ ((floatOne.equals(doubleOne)) ?
"equal" : "not equal")
+ " to doubleOne.");
}
}
Escopo de uma Variável
n
n
n
O escopo de uma variável é a região do
programa onde pode ser acessada através
somente de seu identificador.
Escopo é diferente de visibilidade,
visibilidade é estabelecida para atributos de
uma classe através de modificadores.
A localização onde são declaradas as
variáveis define o seu escopo.
6
Escopo de uma variável
MaxVariablesDemo
/**
* MaxVariablesDemo.java is an application that
* compiles and runs under J2SE 5.0.
* It requires no other files.
*/
public class MaxVariablesDemo {
public static void main(String args[]) {
// integers
byte largestByte =
short largestShort
int largestInteger
long largestLong =
Byte.MAX_VALUE;
= Short.MAX_VALUE;
= Integer.MAX_VALUE;
Long.MAX_VALUE;
// real numbers
float largestFloat = Float.MAX_VALUE;
double largestDouble = Double.MAX_VALUE;
// other primitive types
char aChar = 'S';
boolean aBoolean = true;
// display them all
System.out.println(
"The largest byte value is " +
largestByte);
System.out.println(
"The largest short value is " +
largestShort);
System.out.println(
"The largest integer value is " +
largestInteger);
System.out.println(
"The largest long value is " +
largestLong);
System.out.println(
"The largest float value is " +
largestFloat);
System.out.println(
"The largest double value is " +
largestDouble);
if (Character.isUpperCase(aChar)) {
System.out.println("The character " +
aChar + " is upper case.");
} else {
System.out.println("The character " +
aChar + " is lower case.");
}
System.out.println("The value of aBoolean is “
+ aBoolean);
}
}
MaxVariablesDemo
n
A saída deste programa exemplo é:
The largest byte value is 127
The
The
The
The
The
The
The
largest short value is 32767
largest integer value is 2147483647
largest long value is 9223372036854775807
largest float value is 3.40282e+38
largest double value is 1.79769e+308
character S is upper case.
value of aBoolean is true
7
Variáveis Finais
São semelhantes a constantes.
São declaradas como:
n
n
final int aFinalVar = 0;
Uma variável final que seja declarada e não
inicializada é dita uma blank final e uma vez
inicializada seu valor não pode mais ser
alterado:
n
final int blankfinal;
. . .
blankfinal = 0;
Operadores Aritméticos
Operador
Uso
Descrição
+
op1 + op2
Soma op1 e op2; também usedo para concatenar strings
-
op1 - op2
Subtrai op2 de op1
*
op1 * op2
Multiplica op1 por op2
/
op1 / op2
Divide op1 por op2
op1 % op2
Calcula o resto da divisão de op1 por op2
%
Operadores Aritméticos
Operador
Uso
Descrição
++
op++
Incrementa op de 1; calcula a expressão que contem op antes de
incrementa-lo.
++
++op
Incrementa op de 1; calcula a expressão que contem op depois de
incrementa-lo.
--
op--
Decrementa op de 1; calcula a expressão que contem op antes de
decrementa-lo.
--
--op
Decrementa op de 1; calcula a expressão que contem op depois de
decrementa-lo.
8
Operadores Aritméticos
Unários
Operador
Uso
Descrição
+
+op
Promove op para int se for um byte, short, ou char
-
-op
Aritmeticamente nega op
Operadores Lógicos
Operador
>
Uso
Descrição
op1 > op2
Retorna true se op1 é maior que op2
>=
op1 >= op2
Retorna true se op1 é maior ou igual a op2
<
op1 < op2
Retorna true se op1 é menor que op2
<=
op1 <= op2
Retorna true se op1 é menor ou igual a op2
==
op1 == op2
Retorna true se op1 é igual a op2
!=
op1 != op2
Retorna true se op1 não é igual a op2
Operadores Lógicos
Operador
Uso
Descrição
op1 && op2
Retorna true se op1 e op2 são ambos true; só irá executar op2 se
op1 for true
||
op1 || op2
Retorna true se op1 ou op2 for true; só irá executar op2 se op1
for false
!
!op
Retorna true se op1 for false
&
op1 & op2
Retorna true se op1 e op2 são ambos boleanos e true; geralmente
verifica op1 e op2; Se os operandos forem números,faz a operação
AND bit a bit (bitwise)
|
op1 | op2
Retorna true se op1 e op2 são ambos boleanos e pelo menos um
for true; geralmente verifica op1 e op2; Se os operandos forem
números,faz a operação OU bit a bit (bitwise)
^
op1 ^ op2
Retorna true se op1 e op2 são differentes — isto é, se um ou o
outro operando for true (XOR). Se os operandos forem números,
faz a operação XOR bit a bit (bitwise)
~
~op1
Complemento bit a bit de op1
&&
9
Operadores de Deslocamento
Operador
Uso
Descrição
<<
op1 << op2
Desloca os bits de op1 para a esquerda op2 posições;
preenche com zero os bits restantes a direita.
>>
op1 >> op2
Desloca os bits de op1 para a direita op2 posições;
preenche com o bit de sinal os bits restantes do lado
esquerdo.
op1 >>> op2
Desloca os bits de op1 para a direita op2 posições;
preenche com zero bits o lado esquerdo.
>>>
Operadores de Atribuição
Operador
Uso
Equivalente a
+=
op1 += op2
op1 = op1 + op2
-=
op1 -= op2
op1 = op1 - op2
*=
op1 *= op2
op1 = op1 * op2
/=
op1 /= op2
op1 = op1 / op2
%=
op1 %= op2
op1 = op1 % op2
&=
op1 &= op2
op1 = op1 & op2
|=
op1 |= op2
op1 = op1 | op2
^=
op1 ^= op2
op1 = op1 ^ op2
<<=
op1 <<= op2
op1 = op1 << op2
>>=
op1 >>= op2
op1 = op1 >> op2
>>>=
op1 >>>= op2
op1 = op1 >>> op2
Outros Operadores
Operator
Use
?:
op1 ? op2 : op3
Description
Se op1 é true, retorna op2. Caso contrario, retorna op3.
[]
type []
Declara um array de comprimento desconhecido que
contem elementos do tipo type .
[]
type[ op1 ]
Declara um array de comprimento op1 que contem
elementos do tipo type .
[]
op1[ op2 ]
Acessa o elemento na posição op2 no array op1. Os
índices começam no 0 e vão até o comprimento do array
minos um.
.
op1.op2
É uma referência ao membro op2 de op1.
()
op1(params)
Declara ou chama o método op1 com os parâmetros
params. A lista de parâmetros pode ser vazia.
(type)
(type) op1
Mascara (cast) op1 para o tipo type. Uma exceção será
lançada se os tipos forem incompatíveis.
new
new op1
Cria um novo objeto ou array. op1 pode ser um
construtor ou a especificação do array.
instanceof
op1 instanceof op2
Retorna true se op1 é uma instância de op2
10
Precedência de Operadores
postfix operators
expr++ expr--
unary operators
++expr --expr +expr -expr ~ !
multiplicative
* / %
additive
+ -
shift
<< >> >>>
relational
< > <= >= instanceof
equality
== !=
bitwise AND
&
bitwise exclusive OR
^
bitwise inclusive OR
|
logical AND
&&
logical OR
||
conditional
? :
assignment
= += -= *= /= %= &= ^= |= <<= >>= >>>=
Controle
Tipos
Palavras-chave
loop
while, do-while, for
Desvio Condicional
if-else, switch-case
Tratamento de exceção
try-catch-finally, throw
Interrompendo
break, continue, label:, return
Comandos de loop
while (expression) {
statement
}
do {
statement(s)
} while (expression);
for (initialization; termination; increment) {
statement(s)
}
11
Iterando em Arrays
/**
* ForEachDemo.java is an application that compiles and runs
* under J2SE v5.0 (and *not* under earlier versions).
* It requires no other files.
*
* See ForDemo.java for an equivalent version that doesn't
* use the enhanced for language feature introduced in 5.0.
*/
public class ForEachDemo {
public static void main(String[] args) {
int[] arrayOfInts = { 32, 87, 3, 589, 12, 1076, 2000,
8, 622, 127 };
for (int element : arrayOfInts) {
System.out.print(element + " ");
}
System.out.println();
}
}
Iterando em Arrays
/**
* ForDemo.java is an application that compiles and runs
* under J2SE v5.0. It requires no other files.
*
* See ForEachDemo.java for an equivalent version that takes
* advantage of the for-each feature introduced in 5.0.
*/
public class ForDemo {
public static void main(String[] args) {
int[] arrayOfInts = { 32, 87, 3, 589, 12, 1076, 2000,
8, 622, 127 };
for (int i = 0; i < arrayOfInts.length; i++) {
System.out.print(arrayOfInts[i] + " ");
}
System.out.println();
}
}
Desvio Condicional – if/else
n
O desvio condicional em Java é
implementado através dos comandos:
if (response == OK) {
//code to perform OK action
} else {
//code to perform Cancel action
}
12
Operador ?:
n
Java também possui o operador ?:
if (Character.isUpperCase(aChar)) {
System.out.println("The character " +
aChar + " is upper case.");
} else {
System.out.println("The character " +
aChar + " is lower case.");
}
Equivale a:
System.out.println("The character " + aChar + " is " +
(Character.isUpperCase(aChar) ? "upper" : "lower") +
"case.");
IfElseDemo.java
public class IfElseDemo {
public static void main(String[] args) {
int testscore = 76;
char grade;
if (testscore >= 90) {
grade = 'A';
} else if (testscore >= 80) {
grade = 'B';
} else if (testscore >= 70) {
grade = 'C';
} else if (testscore >= 60) {
grade = 'D';
} else {
grade = 'F';
}
System.out.println("Grade = " + grade);
}
}
SwitchDemo.java
public class SwitchDemo {
public static void main(String[] args) {
int month = 8;
switch (month) {
case 1: System.out.println("January"); break;
case 2: System.out.println("February"); break;
case 3: System.out.println("March"); break;
case 4: System.out.println("April"); break;
case 5: System.out.println("May"); break;
case 6: System.out.println("June"); break;
case 7: System.out.println("July"); break;
case 8: System.out.println("August"); break;
case 9: System.out.println("September"); break;
case 10: System.out.println("October"); break;
case 11: System.out.println("November"); break;
case 12: System.out.println("December"); break;
default: System.out.println("Not a month!"); break;
}
}
}
13
Tipos enumeráveis
n
n
Um tipo enumerável é consiste em um
conjunto fixo de constantes.
Em java são definidos usando a
palavra-chave enum.
enum Days { SUNDAY, MONDAY, TUESDAY,WEDNESDAY,
THURSDAY, FRIDAY, SATURDAY };
Strings e Caracteres
n
Em Java há 4 classes que manipulam caracteres:
¡
¡
¡
¡
Character: uma instância desta classe pode aramzenar
um caracter e possui métodos para manipular caracteres.
String : uma instância desta classe é emrepgada para
manipualr conjuntos de caracteres constantes.
StringBuffer: é uma classe para armazenar e
manipular um conjunto de caracteres não constantes. É
como String, só que seu conteúdo pode ser alterado.
Pode ser empregada em ambientes multi-threaded.
StringBuilder: é semelhante a StringBuffer,
porém deve ser empregada em ambientes com single
thread. É recomendado o seu emprego ao invés da
StringBuffer sempre que possível, uma vez que será
mais rápida na maioria dos casos.
Qual classe usar?
n
n
n
Se o texto for constante use String.
Se o texto poderá muda e será
acessado por uma única
thread,empregue a StringBuilder.
Se o texto poderá mudar e será
acessado por multiplas threads, use a
StringBuffer.
14
length x capacity
n
n
length: este método retorna o
comprimento da string armazenada.
capacity:este método de acesso retorna
a capacidade do StringBuffer ou
StringBuilder
StringsDemo.java
public class StringsDemo {
public static void main(String[] args) {
String palindrome = "Dot saw I was Tod";
int len = palindrome.length();
StringBuilder dest = new StringBuilder(len);
for (int i = (len - 1); i >= 0; i--) {
dest.append(palindrome.charAt(i));
}
System.out.println(dest.toString());
}
}
Procurando um Caractere
Método
Descrição
int indexOf(int)
int lastIndexOf(int)
Retorna o índice da primeira (última)
ocorrência do caractere especificado.
int indexOf(int,int)
int lastIndexOf(int,int)
Retorna o índice da primeira (última)
ocorrência do caractere especificado
procurando para frente (para trás) a partir
de um ponto.
int indexOf(String)
int lastIndexOf(String)
Retorna o índice da primeira (última)
ocorrência da string especificado
int indexOf(String,int)
int lastIndexOf(String,
int)
Retorna o índice da primeira (última)
ocorrência da string especificado
procurando para frente (para trás) a partir
de um ponto.
15
FilenameDemo.java
public class FilenameDemo {
public static void main(String[] args) {
final String FPATH = "/home/mem/index.html";
Filename myHomePage = new Filename(FPATH,
'/', '.');
System.out.println("Extension = " +
myHomePage.extension());
System.out.println("Filename = " +
myHomePage.filename());
System.out.println("Path = " +
myHomePage.path());
}
}
Comparando Strings
Método
Descrição
boolean endsWith(String)
boolean startsWith(String)
boolean startsWith(String, int)
Retorna true se a string termina/inicia com a
a substring especificada. O parâmetro inteiro,
quando presente indica o offset para o início
da busca.
int compareTo(String)
int compareTo(Object)
int compareToIgnoreCase(String)
Compara 2 strings e retorna uma inteiro
indicando se a string é maior (> 0), igual (=
0), ou menor (< 0) que o argumento. Oeste
método ignora a caixa do caractere; “a” e
“A” são considerados iguais.
boolean equals(Object)
boolean equalsIgnoreCase(String)
Retorna true se a string é igual ao
argumento.
boolean regionMatches(int, String,
int, int)
boolean regionMatches(boolean,
int, String, int, int)
Testa se a região da string é igual a região
do argumento. O argumento boolean define
se a caixa deve ser ignorada, true sim false
não.
RegionMatchesDemo.java
public class RegionMatchesDemo {
public static void main(String[] args) {
String searchMe = "Green Eggs and Ham";
String findMe = "Eggs";
int len = findMe.length();
boolean foundIt = false;
int i = 0;
while (!searchMe.regionMatches(i, findMe, 0, len)) {
i++;
foundIt = true;
}
if (foundIt) {
System.out.println(searchMe.substring(i, i+len));
}
}
}
16
valueOf x toString
n
n
n
n
O método valueOf é empregado para
converter números para String .
O métdo toString é empregado para
convertes números para String.
O método toString é declarado em
Object e sobrecarregado para o
comportamento desejado
Exemplos:
¡
¡
ToStringDemo.java
ValueOfDemo.java
Array
n
n
Um array é uma estrutura que
armazena vários objetos do mesmo tipo.
O tamanho de um array é estabelecido
quando este é criado.
Criando e Usando Arrays
public class ArrayDemo {
public static void main(String[] args) {
int[] anArray;
// declare an array of integers
anArray = new int[10];// create an array of integers
// assign a value to each array element and print
for (int i = 0; i < anArray.length; i++) {
anArray[i] = i;
System.out.print(anArray[i] + " ");
}
System.out.println();
}
}
17
Array de Objetos
public class ArrayOfStringsDemo {
public static void main(String[]
String[] anArray = { "String
"String
"String
args) {
One",
Two",
Three" };
for (int i = 0; i < anArray.length; i++)
{
System.out.println(anArray[i].toLowerCase());
}
}
}
Array de Array
public class ArrayOfArraysDemo {
public static void main(String[] args) {
String[][] cartoons =
{
{ "Flintstones", "Fred", "Wilma",
"Pebbles", "Dino" },
{ "Rubbles", "Barney", "Betty",
"Bam Bam" },
{ "Jetsons", "George", "Jane",
"Elroy", "Judy", "Rosie", "Astro" },
{ "Scooby Doo Gang", "Scooby Doo",
"Shaggy", "Velma", "Fred", "Daphne" }
};
for (int i = 0; i < cartoons.length; i++) {
System.out.print(cartoons[i][0] + ": ");
for (int j = 1; j < cartoons[i].length; j++) {
System.out.print(cartoons[i][j] + " ");
}
System.out.println();
}
}
}
Copiando arrays
n
Use o comando arraycopy para copiar arrays.
public static
void arraycopy(Object source,
int srcIndex,
Object dest,
int destIndex,
int length,
18
ArrayCopydemo.java
public class ArrayCopyDemo {
public static void main(String[] args) {
char[] copyFrom = { 'd', 'e', 'c', 'a',
'f', 'f', 'e',
'i', 'n', 'a', 't', 'e', 'd' };
char[] copyTo = new char[7];
System.arraycopy(copyFrom, 2, copyTo,
0, 7);
System.out.println(new String(copyTo));
}
}
19
Download