tutorial de java programacao para objectos, Manual de Programação para Java. Universidade Jean Piaget de Cabo Verde
alexandre-varela
alexandre-varela5 de janeiro de 2018

tutorial de java programacao para objectos, Manual de Programação para Java. Universidade Jean Piaget de Cabo Verde

PDF (1 MB)
44 páginas
31Número de visitas
Descrição
tutorial de java programacao para objectos
20 pontos
Pontos de download necessários para baixar
este documento
baixar o documento
Pré-visualização3 páginas / 44

Esta é apenas uma pré-visualização

3 mostrados em 44 páginas

baixar o documento

Esta é apenas uma pré-visualização

3 mostrados em 44 páginas

baixar o documento

Esta é apenas uma pré-visualização

3 mostrados em 44 páginas

baixar o documento

Esta é apenas uma pré-visualização

3 mostrados em 44 páginas

baixar o documento

Introdução à Linguagem Java

Fernando Silva

DCC-FCUP

Estruturas de Dados

Fernando Silva (DCC-FCUP) Introdução à Linguagem Java Estruturas de Dados 1 / 87

A Linguagem Java

Linguagem de programação divulgada pela Sun Microsystems em 1995:

I início do desenvolvimento: 1991 I líder da equipa: James Gosling da Sun Microsystems I a partir de 2009, pertence à Oracle

Sintaxe muito próxima do C: I mas não tem apontadores!

Orientada a objectos (OO): I os programas são classes I noção de objecto é fundamental I propriedades OO: abstracção, encapsulamento, herança e polimorfismo.

outras linguagens OO que lhe antecederam: I smalltalk (1980) - a primeira linguagem de referência I C++ (1985) - acrescentou a orientação aos objectos ao C I outras: Simula (1967), Eiffel, C#, Ruby, Scala, Python, Groovy

Fernando Silva (DCC-FCUP) Introdução à Linguagem Java Estruturas de Dados 2 / 87

Vantagens do Java

linguagem OO relativamente pura portabilidade:

I compila para byte-code (código intermédio) I basta ter uma máquina abstracta (java virtual machine/JVM) para

executar o programa. segurança e robustez:

I ao carregar o byte-code, a máquina abstracta verifica a sua validade I gestão de memória intrinseca (com garbage-collection) I detecta erros em tempo de execução gerando excepções que podem ser

“apanhadas” pelo programa reutilização de código – deriva do facto de ser OO

Fernando Silva (DCC-FCUP) Introdução à Linguagem Java Estruturas de Dados 3 / 87

Processo de Programação

Envolve um conjunto de etapas:

definir as especificações do problema a resolver conceber um algoritmo que resolva o problema codificar o algoritmo numa linguagem de programação de alto-nível documentar o algoritmo/programa de forma a torná-lo compreensível para terceiros testar o programa num conjunto de dados de input significativo de forma a eliminar erros fazer a manutenção do programa ao longo do tempo.

Neste processo, o desenvolvimento pode beneficiar de bons princípios de programação como a modularidade (ou abstracção procedimental) que consiste em dividir programas em módulos mais simples e de menor complexidade.

Fernando Silva (DCC-FCUP) Introdução à Linguagem Java Estruturas de Dados 4 / 87

Modularidade e abstracção

Modularidade: agrupar procedimentos e funções em módulos; ajuda a

diminuir complexidade do programa; identificar funcionalidades permitindo reutilização em outros programas; identificar mais rapidamente partes do programa que têm de ser modificadas sem mexer no programa todo;

O programador precisa apenas de conhecer a interface do módulo (nome de procedimento e tipo de argumentos) para poder usá-lo, ficando assim escondidos detalhes de implementação do módulo. A esta capacidade designamos por:

Abstracção: capacidade de abstrair dos detalhes (complexidade) deixando apenas o que é fundamental para uso do conceito.

Fernando Silva (DCC-FCUP) Introdução à Linguagem Java Estruturas de Dados 5 / 87

Encapsulamento

Encapsulamento consiste em “esconder” os detalhes associados à implementação de um módulo, deixando apenas visível uma interface bem definida através da qual pode haver interacção com o exterior. Uma programação baseada em abstracção de dados (esconder detalhes de implementação dos dados) designa-se por programação orientada a objectos. No paradigma de programação OO, existem três entidades fundamentais:

I objecto – repositório de informação (dados) I classe – caracterização geral do tipo de objecto I método – procedimento ou função que opera sobre um objecto

Fernando Silva (DCC-FCUP) Introdução à Linguagem Java Estruturas de Dados 6 / 87

Classes e Objectos

Classe: é a base de encapsulamento e representa uma abstracção de um conjunto de objectos que partilham a mesma estrutura e comportamento; Uma classe descreve os atributos gerais de um objecto através da definição de um template que inclui os tipos dos atributos (variáveis ou dados) e funções (métodos) que operam sobre eles. Objecto: é uma instância particular de uma classe, pelo que é também constituído por um conjunto de dados e métodos que operam sobre esses dados. É comum objectos de diferentes classes estarem relacionados e por vezes constituirem hierarquias de objectos.

Fernando Silva (DCC-FCUP) Introdução à Linguagem Java Estruturas de Dados 7 / 87

Herança e Polimorfismo

Herança: é a capacidade de as classes poderem “herdar” atributos e métodos de classes mais gerais.

I Uma classe ListaCompras herda de uma classe Lista a propriedade de armazenar uma lista de ítens.

I Uma classe Funcionario herda atributos de uma classe Pessoa.

polimorfismo: é a capacidade de definir métodos gerais que funcionem com várias classes, mesmo que estas requeiram implementações diferentes.

I e.g. um método addItem() que sirva para qualquer tipo de lista, independentemente do que lá guardamos.

Fernando Silva (DCC-FCUP) Introdução à Linguagem Java Estruturas de Dados 8 / 87

Classes

Classe: é uma entidade de um programa que representa: um programa/módulo, ou um template para criar um novo tipo de objectos, incluindo a descrição dos:

I tipos de dados que representam os seus atributos, e I métodos que operam sobre os atributos.

Exemplo:

Fernando Silva (DCC-FCUP) Introdução à Linguagem Java Estruturas de Dados 9 / 87

Hello World em Java

Um programa em java é também uma classe:

A execução de um programa Java começa sempre pelo método main(). Para executar este programa, fazer na linha de comando:

khredo> javac HelloWorld.java - compilação do programa - produz um HelloWorld.class (bytecode)

khredo> java HelloWorld - emulador executa HelloWorld.class

Fernando Silva (DCC-FCUP) Introdução à Linguagem Java Estruturas de Dados 10 / 87

Definir classes em Java

Uma classe em Java inclui: I atributos ou variáveis internas à classe;

podem ser globais e acessíveis por todos os métodos e construtores ou locais a um método.

I construtores permitem inicializar os objectos no momento em que são criados;

I métodos que manipulam os atributos, modificando-os.

Fernando Silva (DCC-FCUP) Introdução à Linguagem Java Estruturas de Dados 11 / 87

Exemplo: classe Counter

Implementa um simples contador que pode ser incrementado ou decrementado em uma unidade de cada vez.

Fernando Silva (DCC-FCUP) Introdução à Linguagem Java Estruturas de Dados 12 / 87

Definir classes em Java (2)

Sintaxe: [<qualificador_classe>] class <nome_classe>

[extends <superclasse>] [implements <interface_1>, interface_2>,...]

{ // variáveis e métodos

} Uma classe pode ter um qualificador:

I abstract – interface, i.e. apenas define métodos abstractos (corpo vazio)

I final – a classe não pode ter subclasses. I public – a classe pode ser instanciada ou extendida (. . .)

public class <nome_classe> – só pode existir uma por ficheiro com o nome <nome_classe>.java

I se não se usar qualificador, assume-se a classe como friendly, i.e. equivalente a public class (default).

Fernando Silva (DCC-FCUP) Introdução à Linguagem Java Estruturas de Dados 13 / 87

Noção de objecto em Java

Em Java manipulamos essencialmente objectos (instâncias particulares de classes):

I fazemo-lo através de uma variável que é uma referência para o objecto I através da referência podemos invocar métodos do objecto que podem

alterar o seu estado Uma analogia: televisor (objecto) e comando-remoto (referência)

I tendo o comando-remoto posso modificar o estado do objecto: aumentar o volume, mudar de canal, etc;

I se me deslocar na sala e quiser controlar o televisor basta-me levar comigo o comando e não o televisor;

I por outro lado, o facto de eu ter um comando-remoto não significa que tenha um televisor associado;

Fernando Silva (DCC-FCUP) Introdução à Linguagem Java Estruturas de Dados 14 / 87

Exemplo: criação de objectos da classe Counter

Fernando Silva (DCC-FCUP) Introdução à Linguagem Java Estruturas de Dados 15 / 87

Criação de um objecto em Java

Criação de uma referência: Counter c;

I c é uma referência para um objecto da classe Counter; I contudo c ainda não representa um objecto.

O objecto é criado invocando o método construtor precedido de new. Counter c = new Counter();

I c representa agora um novo objecto do tipo Counter inicializado pelo método construtor desta classe;

Ao fazermos d= c; estamos a fazer com que d referencie o mesmo objecto que c e não a cópia! Note-se que existem outros tipos básicos de dados e classes, assim como podemos criar novas classes, de onde se podem instanciar novos objectos.

Fernando Silva (DCC-FCUP) Introdução à Linguagem Java Estruturas de Dados 16 / 87

Métodos de classes

são conceptualmente análogos a funções em outras linguagens e apenas podem existir dentro de classes; class Exemplo { ... int soma(int a, int b) { return a+b; }

}

só podem ser invocados através de um objecto ... Exemplo x= new Exemplo(); // objecto x ... int a= x.soma(2,3); // invocação do método de x

usamos o objecto x e invocamos o método soma() (ou enviamos uma mensagem para o objecto x).

Fernando Silva (DCC-FCUP) Introdução à Linguagem Java Estruturas de Dados 17 / 87

Métodos de classes: sintaxe

[<qualificador>] <tipoRetorno> <nomeMétodo> ([<parâmetros>]) {

// corpo do método }

qualificadores: I public pode ser invocado por qualquer um I protected pode ser invocado apenas por métodos do mesmo package

ou subclasses. I private pode ser invocado apenas pelos métodos da mesma subclasse. I por defeito o método é friendly, pode ser invocado por objectos de

classes do mesmo package.

Fernando Silva (DCC-FCUP) Introdução à Linguagem Java Estruturas de Dados 18 / 87

Métodos de classes (cont.)

qualificadores de segundo nível: I abstract sem código; apenas em classes abstractas. I final método que não pode ser reescrito pela subclasse. I static método da classe; na invocação não se cria uma nova instância,

pode ser invocado independente do objecto métodos construtores

I são métodos especiais, com o mesmo nome da classe e usados para inicializar novos objectos.

I não pode ter qualificadores método main() – a classe que define o programa tem de ter um método main() para indicar onde se inicia a execução.

Fernando Silva (DCC-FCUP) Introdução à Linguagem Java Estruturas de Dados 19 / 87

Declaração e Atribuição

Declaração de variáveis: I sintaxe: tipo-dados nome-variável; I as variáveis têm de ser declaradas antes de ser usadas. I a declaração corresponde a fazer-se reserva de memória para

guardarmos o valor da variável. Atribuição:

I sintaxe: nome-variável = expressão; I atribuir um valor à variável (guarda na memória associada à variável).

Fernando Silva (DCC-FCUP) Introdução à Linguagem Java Estruturas de Dados 20 / 87

Qualificador static

serve para referir algo independente do número de objectos criados; variáveis estáticas:

class StaticField { static int x= 10;

} StaticField sf1 = new StaticField(); StaticField sf2 = new StaticField();

Os atributos x dos objectos referenciados por sf1 e sf2 têm o mesmo valor (referem a mesma posição de memória). métodos estáticos: o método pode ser invocado através da classe, sem se criar o objecto.

class StaticMethod { static int soma(int a, int b) {return a+b;}

} int x= StaticMethod.soma(2,3);

Fernando Silva (DCC-FCUP) Introdução à Linguagem Java Estruturas de Dados 21 / 87

Palavras reservadas

O Java tem um conjunto de identificadores (palavras) reservadas da linguagem:

abstract default if private this boolean do implements protected throw break double import public throws byte else instanceof return transient case extends int short try catch final interface static void char finally long strictfp volatile class float native super while const for new switch continue goto package synchronized

Fernando Silva (DCC-FCUP) Introdução à Linguagem Java Estruturas de Dados 22 / 87

Tipos de dados básicos

O Java tem apenas estes tipos de dados simples; tudo o resto são objectos:

inteiros byte 8 bits [−27 : 27 − 1] short 16 bits [−215 : 215 − 1] int 32 bits [−231 : 231 − 1] long 64 bits [−263 : 263 − 1]

Vírgula flutuante (IEEE 754 floating point)

float 32 bits [−3.4029E + 38 : +3.4029E + 38] double 64 bits [−1.79769E + 308 : +1.79769E + 308]

Outros boolean 8 bits valor booleano (true ou false) char 16 bits ISO Unicode char set

Fernando Silva (DCC-FCUP) Introdução à Linguagem Java Estruturas de Dados 23 / 87

Exemplo com tipos de dados básicos

Fernando Silva (DCC-FCUP) Introdução à Linguagem Java Estruturas de Dados 24 / 87

Operadores

Aritméticos: Lógicos: + adição - subtracção * multiplicação / divisão % módulo ++ incremento -- decremento

! NOT lógico && AND lógico || OR lógico

Bits: ~ NOT binário & AND binário | OR binário ^ XOR binário << shift binário esquerda >> shift binário direita

Relacionais ou de comparação: == igualdade != diferente < menor que <= menor ou igual que > maior que >= maior ou igual que

Fernando Silva (DCC-FCUP) Introdução à Linguagem Java Estruturas de Dados 25 / 87

Divisão-inteira e Resto-da-divisão

Quando dividimos inteiros, o quociente é inteiro. I 18/4 dá 4 e não 4.5 I y = x/2; – a divisão será inteira se x for um int. I se x for float e y for int, a divisão será em virgula flutuante, mas

depois o resultado é truncado para inteiro. I dividir por 0 provoca um erro durante a execução

O operador % calcula o resto da divisão inteira. I 18 % 4 dá 2 I 59 % 5 dá 4

Aplicações do operador %: I obter o último dígito de um número: 12345 % 10 é 5 I obter os últimos três dígitos: 734528 % 1000 é 528 I verificar se um número é par: 9 % 2 é 1 e 16 % 2 é 0

Fernando Silva (DCC-FCUP) Introdução à Linguagem Java Estruturas de Dados 26 / 87

Regras de precedência entre operadores

Precedência: ordem de avaliação dos operadores.

a regra geral é avaliação da esquerda para a direita. I 5-2-7 é igual a (5-2)-7 que é -4

mas os operadores * / % têm maior precedência que + - I 5+2*3 é 11 I 5+10/2*3 é 5+5*3 que dá 20

os parentesis forçam a ordem de avaliação

Fernando Silva (DCC-FCUP) Introdução à Linguagem Java Estruturas de Dados 27 / 87

Operadores de incremento/decremento operadores incremento/decremento:

I variavel++; ⇐⇒ variavel = variavel + 1; I variavel--; ⇐⇒ variavel = variavel - 1; I ++variavel; ⇐⇒ variavel = variavel + 1; I --variavel; ⇐⇒ variavel = variavel - 1;

Cuidado com o uso destes operadores sobre variáveis no meio de expressões. Consideremos o seguinte:

I int x= 5, y= 3, z; I x++; // incrementa x, i.e. x= x+1 I --y; // decrementa y, i.e. y= y-1 I z= x-- * ++y; // com que valores ficam x, y e z ?

x-- diz-nos para usar primeiro o valor de x e depois decrementar em uma unidade; ++y diz-nos para primeiro incrementar y uma unidade e depois usar o seu valor.

Fernando Silva (DCC-FCUP) Introdução à Linguagem Java Estruturas de Dados 28 / 87

Operadores de imodificação-e-atribuição

operadores modifica-e-atribui: I variavel += valor; ⇐⇒ variavel= variavel + valor; I variavel -= valor; ⇐⇒ variavel= variavel - valor; I variavel *= valor; ⇐⇒ variavel= variavel * valor; I variavel /= valor;⇐⇒ variavel= variavel / valor;

Exemplos: I x -= 1; ⇐⇒ x--; ⇐⇒ x= x-1; I y /= 2; ⇐⇒ y = y/2; I x *= y+2;⇐⇒ x= x*(y+2);

Fernando Silva (DCC-FCUP) Introdução à Linguagem Java Estruturas de Dados 29 / 87

Instruções de controle de fluxo (ou de decisão)

if-else if (a>b) a++; else b++; ?: (a>b) ? a++; : b++; switch-case

if (condição) { switch (variável) { codigo-se-condição-true; case valor1: {

} bloco-código1; else { break;

código-se-condição-false; } } case valor2: {

... } default: {

código-por-defeito; break;

} }

(condição) ? código-se-true; : código-se-false; Fernando Silva (DCC-FCUP) Introdução à Linguagem Java Estruturas de Dados 30 / 87

Instruções de ciclo: while

Estrutura geral:

inicializa; while (condição) {

bloco_instruções; next;

}

Um exemplo: método para verificar se um inteiro é primo.

Fernando Silva (DCC-FCUP) Introdução à Linguagem Java Estruturas de Dados 31 / 87

Instruções de ciclo: for

Estrutura geral:

for (inicialização; condição-paragem; next) { bloco_instruções;

}

Um exemplo: método para verificar se um inteiro é primo.

Fernando Silva (DCC-FCUP) Introdução à Linguagem Java Estruturas de Dados 32 / 87

Instruções de ciclo: do-while

Estrutura geral:

inicializa; do {

bloco_instruções; next;

} while (condição);

Um exemplo: método para verificar se um inteiro é primo..

Fernando Silva (DCC-FCUP) Introdução à Linguagem Java Estruturas de Dados 33 / 87

Strings em Java

as strings são objectos da classe String uma string é uma sequência de caracteres vista como uma unidade. criação de strings:

I String cor1= “vermelho”; – inicializada. I String mistura= “vermelho” + “amarelo”; – inicializada. I String cor2; – não inicializada.

criação/inicialização invocando métodos construtores: I cor2= new String(“verde”); I cor3= new String(“”); – inicializa com string vazia

o operador + funciona como concatenador de strings I cor2= “Hello” + “World” + cor1;

segue-se um exemplo do uso de construtores para inicializar um objecto String.

Fernando Silva (DCC-FCUP) Introdução à Linguagem Java Estruturas de Dados 34 / 87

Exemplo com Strings

Diferentes maneiras de criar objectos do tipo String:

Fernando Silva (DCC-FCUP) Introdução à Linguagem Java Estruturas de Dados 35 / 87

Strings como vectores de caracteres

As strings não são vectores do tipo array do Java, mas, podem ser vistas como vectores:

cada caracter é um char, mas como aceder a cada um dos caracteres? nome.charAt(0) ou nome.charAt(5) e se pretender imprimir todos?

for(int c=0; c < nome.length(); c++) System.out.print(nome.charAt(c));

posso transformar um vector de caracteres numa string e vice versa? I char n[]= nome.toCharArray(); converte a string em vector. I String nova= Arrays.toString(n); converte o vector n[] em

string. Fernando Silva (DCC-FCUP) Introdução à Linguagem Java Estruturas de Dados 36 / 87

Comparação de Strings

Como comparar se duas strings são iguais? I usar o método equals() e não o habitual operador “==”.

Dadas duas strings s1 e s2: I s1 == s2 apenas compara as referências dos dois objectos para ver se

se referem à mesma instância. I s1.equals(s2) compara por ordem os caracteres das duas strings.

O método equals() compara duas strings I as duas strings serão iguais se tiverem os caracteres iguais, pela mesma

ordem. O método int n= s1.compareTo(s2) compara lexicograficamente as strings s1 e s2

I n<0, se s1 precede s2 I n==0, se forem iguais I n>0, se s1 vem a seguir a s2

Fernando Silva (DCC-FCUP) Introdução à Linguagem Java Estruturas de Dados 37 / 87

Comparação de Strings

Exemplos:

String s1= ‘‘Hello’’; String s2= ‘‘Hello’’; String s3= ‘‘Good-bye’’; String s4= ‘‘HELLO’’; s1.equals(s2) --> true s1.equals(s3) --> false s1.equals(s4) --> false s1.equalsIgnoreCase(s4) --> true

Experimentar num programa: System.out.print(s1+" equals "+s2+"-->"s1.equals(s2)); (true) e System.out.print(s1+"=="+s2+"-->" s1 == s2); (false)

Fernando Silva (DCC-FCUP) Introdução à Linguagem Java Estruturas de Dados 38 / 87

Input e Output em Java

As funcionalidades de I/O do Java estão definidas na API: java.io. A leitura e escrita faz-se através de canais (streams) que podem representar um qualquer periférico físico. Os canais podem ser: Byte streams : leitura e escrita sob a forma de bytes; Character streams : leitura e escrita sob a forma de carateres. A classe System, definida em java.lang, inclui muitas definições de sistema, nomeadamente 3 canais: in, out, e err.

I InputStream System.in – objecto que representa o standard input stream (por defeito o teclado);

I PrintStream System.out – objecto que representa o standard output stream (por defeito a consola);

I PrintStream System.err – objecto que representa o standard error stream (consola).

Fernando Silva (DCC-FCUP) Introdução à Linguagem Java Estruturas de Dados 39 / 87

A classe Scanner

Fornece métodos de parsing de tipos primitivos e Strings. Simplifica muito o processamento do input vindo de:

I um canal de leitura (tipo InputStream) Scanner stdIn= new Scanner(System.in); // lê do teclado

I uma String Scanner strIn= new Scanner(line); // line é uma string

I ou de um ficheiro File nf= new File(nomeFich); Scanner fileIn= new Scanner(nf); // lê do ficheiro

a classe Scanner lê do canal de leitura e divide-o em palavras que são strings separadas por caracteres especiais, os delimitadores.

I o método useDelimiter(expressao) permite especificar, através de uma expressão regular, o modo como se pretende separar o input em palavras.

I Exemplo: scanner.useDelimiter("\r\n") Fernando Silva (DCC-FCUP) Introdução à Linguagem Java Estruturas de Dados 40 / 87

Classe Scanner - métodos

Para se poder usar a classe Scanner é necessário declarar no programa: import java.util.Scanner; ou import java.util.*;

Alguns métodos relevantes desta classe: hasNext() true se e só se existir mais uma palavra no input

next() retorna a próxima palavra (String) do input hasNextLine() true se e só se o input tiver mais uma linha de texto

nextLine() retorna a próxima linha de texto do input hasNextType() true se e só se a próxima palavra for do tipo Type, onde

Type pode ser qualquer tipo básico: Int, Float, Double... nextType() retorna a próxima palavra convertida para o tipo básico

definido por Type.

Fernando Silva (DCC-FCUP) Introdução à Linguagem Java Estruturas de Dados 41 / 87

Scanner: leitura a partir de uma String

Processa a leitura a partir da String e aplica os separadores definidos por useDelimiter():

Fernando Silva (DCC-FCUP) Introdução à Linguagem Java Estruturas de Dados 42 / 87

Scanner: leitura a partir do teclado

Fernando Silva (DCC-FCUP) Introdução à Linguagem Java Estruturas de Dados 43 / 87

Scanner: leitura a partir de um ficheiro

Fernando Silva (DCC-FCUP) Introdução à Linguagem Java Estruturas de Dados 44 / 87

Output formatado: classe Formatter

O Java a partir da versão 5.0 admite output formatado ao estilo do printf do C. usar a package java.util.Formatter e o método format() da classe String: String fmt= String.format(‘‘pi = %5.3f\n’’); para escrever formatado, usar: double pi= Math.PI; System.out.printf(fmt, pi); ou System.out.printf("pi= %5.3f\n", pi);

Fernando Silva (DCC-FCUP) Introdução à Linguagem Java Estruturas de Dados 45 / 87

Formatação de texto com printf()

Sintaxe do método printf() é: System.out.printf ("string formato", parâmetros) Uma string de formato contém “encaixes” para inserir os valores dos parâmetros:

I %d - inteiro base 10 I %x - inteiro base hexadecimal I %o - inteiro base octal I %f - número real ou em vírgula flutuante I %s - string I %c - caracter

o printf() não faz a mudança de linha é necessário incluir o caracter ‘\n’ (newline) na string de formato no ponto onde quisermos mudar de linha.

Fernando Silva (DCC-FCUP) Introdução à Linguagem Java Estruturas de Dados 46 / 87

Formatos especiais (inteiros)

%Wd - inteiro com W caracteres de largura, alinhado à direita. %-Wd - inteiro com W caracteres de largura, alinhado à esquerda.

Output:

1 2 3 4 5 6 7 8 9 10 2 4 6 8 10 12 14 16 18 20 3 6 9 12 15 18 21 24 27 30

Fernando Silva (DCC-FCUP) Introdução à Linguagem Java Estruturas de Dados 47 / 87

Formatos especiais (reais)

%.Df - no real, arredondado para D casas decimais. %W.Df - no real, com W caracteres e D casas decimais. %-W.Df - no real, com W caracteres alinhados à esquerda e D casas decimais. Exemplo: double media= 13.172585; System.out.printf("Media: %.1f\n", media); System.out.printf("Media mais precisa: %8.3f\n", media); Output: Media: 13.2 Media mais precisa: 13.173

Fernando Silva (DCC-FCUP) Introdução à Linguagem Java Estruturas de Dados 48 / 87

Exemplo: uso de printf

Fernando Silva (DCC-FCUP) Introdução à Linguagem Java Estruturas de Dados 49 / 87

Vectores simples (arrays) em Java

Os arrays são objectos que agrupam sob um mesmo nome um conjunto de variáveis numeradas de um mesmo tipo (primitivo ou objecto). As variáveis de um array são sempre indexadas a partir do zero.

criar uma referência x para um “vector de inteiros”; I int[] x; ou I int x[];

o operador new permite reservar espaço em memória para o vector x[] (dimensionando-o):

I x = new int[10]; – cria efectivamente o vector e guarda a sua localização em x.

x[0]= 23 x[1]= 15 x[2]= 25 ...

Fernando Silva (DCC-FCUP) Introdução à Linguagem Java Estruturas de Dados 50 / 87

comentários (0)

Até o momento nenhum comentário

Seja o primeiro a comentar!

Esta é apenas uma pré-visualização

3 mostrados em 44 páginas

baixar o documento