Вы находитесь на странице: 1из 52

Programação OO

3ª parte

Prof. Jobson Massollar


jobson.silva@uva.br
Vetores

 Semelhante ao C/C++, o Java também dá suporte à vetores e matrizes


multidimensionais.

 Entretanto, existem algumas diferenças importantes. A primeira delas é que,


em Java, vetores são objetos.

 Para declarar um vetor, usamos o operador [] imediatamente após o tipo


desejado:

int[] v;
float[] notas;

 Outra diferença importante é que, ao declarar um vetor, NÃO definimos o seu


tamanho.

 Isso significa dizer que, ao declarar um vetor, o Java NÃO aloca espaço na
memória para o vetor.
2 Programação OO
Vetores

 Em C/C++:

float nota[10];

0 1 2 3 4 5 6 7 8 9

 Em Java:

float[] nota;

NULO

3 Programação OO
Vetores

 Como vetor é um objeto, precisamos criá-lo com o operador new.


Nesse momento definimos o seu tamanho.
Aqui definimos o
float[] nota; tamanho do vetor !
nota = new float[10];

0 1 2 3 4 5 6 7 8 9

0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0

O índice inicial é Os elementos do vetor são O índice final é


sempre ZERO. inicializados automaticamente sempre o tamanho
da mesma forma que os do vetor – 1.
atributos das classes.

4 Programação OO
Vetores

 Diferentemente do C/C++, o tamanho do vetor pode ser definido


usando uma variável ou uma expressão.

public class TesteVetor {


public static void main(String[] args) {
Scanner t = Scanner(System.in);
int tam;
float[] v;

System.out.print("Qual o tamanho do vetor ? ");


tam = t.nextInt();

v = new float[tam]; Cria o vetor v usando como


} tamanho a variável tam.
}

5 Programação OO
Vetores

 Atenção: uma vez definido o tamanho do vetor com o operador new


não podemos mais alterar esse tamanho.

public class TesteVetor {


public static void main(String[] args) {
Scanner t = Scanner(System.in);
int tam;
float[] v;

System.out.print("Qual o tamanho do vetor ? ");


tam = t.nextInt();

Nesse caso NÃO estamos


v = new float[tam]; aumentando o vetor v.
v[0] = 2; No primeiro new criamos um vetor
v = new float[2 * tam]; com tamanho tam.
} No segundo new criamos outro
} vetor com tamanho 2*tam.

6 Programação OO
Vetores

 Cuidado: se você acessar uma área fora do intervalo do vetor, ocorrerá


uma exceção (ArrayIndexOutOfBoundsException) e a execução do
programa será interrompida.

float[] nota;
nota = new float[10];

Erro de execução:
nota[-1] = 7.5;
ArrayIndexOutOfBoundsException
nota[10] = 8.0;

7 Programação OO
Vetores

 Assim como fazemos com variáveis comuns, também podemos


inicializar vetores.

tipo[] nome = { lista de valores };

 onde:
lista de valores é uma lista cujos elementos são separados por vírgula.
Cria automaticamente um
 Exemplos: vetor de 5 posições

float[] nota = { 5.5, 6.5, 7.0, 9.0, 8.0 };


int[] idade = { 30, 22, 45, 12, 65, 48, 72 };

Cria automaticamente um
vetor de 7 posições

8 Programação OO
Vetores

 Para percorrer individualmente cada elemento do vetor usamos o


comando for.

 O atributo length do vetor pode ser usado para recuperar o tamanho


do vetor.

public class Vetor {


public static void main(String[] args) {
int[] v = { 2, 4, 6, 8, 10 };

for (int i = 0; i < v.length; i++)


System.out.println(v[i]);
}
Recupera o tamanho
}
do vetor, que é 5
nesse caso.

9 Programação OO
Vetores

 Existe uma outra sintaxe do comando for para percorrer vetores. Essa
forma é usada apenas para ler os dados do vetor, mas não serve para
alterar o vetor.

 Usando essa nova sintaxe, o programa anterior poderia ser reescrito


como:

public class Vetor {


public static void main(String[] args) {
int[] v = { 2, 4, 6, 8, 10 };

for (int n : v)
System.out.println(n);
}
}

10 Programação OO
Vetores

 Usando essa nova sintaxe, o programa anterior poderia ser reescrito


como:

public class Vetor {


public static void main(String[] args) {
int[] v = { 2, 4, 6, 8, 10 };

Tipo armazenado Variável que


no vetor percorre o vetor
Vetor

for (int n : v)
System.out.println(n);
}
} A cada iteração, a variável n
recebe os valores armazenados
no vetor v, do primeiro até o
último.

11 Programação OO
Exercícios

 Exercício 23: crie um programa para ler inicialmente o número de


alunos de uma turma. Em seguida, leia as notas dos alunos dessa
turma. Ao final, imprima a média da turma e as notas acima da média.

 Exercício 24: crie um programa para ler um número n e depois ler um


vetor v com n números inteiros positivos. Ao final, ler mais um número
k e informar e que posições do vetor v aparece o número k. Caso k
não exista no vetor v apresente a mensagem "Número não
encontrado".

12 Programação OO
Exercícios

 Exercício 25: cria a classe ConjuntoDeReais que deve armazenar um


conjunto de floats usando um vetor. Implemente os métodos:

public ConjuntoDeReais(int qtdMaximaNumeros)


public boolean pertence(float n)
public boolean adicionar(float n)
public void imprimir()
public boolean remover(float n)
public int quantidade()

13 Programação OO
Métodos Estáticos

 Nos exemplos e exercícios implementados até agora, sempre


executamos métodos a partir de objetos. Exemplos:

r1.mover(10, 20); // move o objeto r1


r2.redimentionar(2, 3); // redimensiona o objeto r2

 Em alguns casos precisamos implementar alguns métodos que


independem dos objetos de uma classe.

 Normalmente esses métodos implementam serviços que estão


associados à classe e não a um objeto específico.

14 Programação OO
Métodos Estáticos

 Se pensarmos na implementação do método para calcular a raiz


quadrada, qual seria o objeto sobre o qual aplicaríamos esse método ?

 Pense, nas demais funções matemáticas: seno, coseno, tangente,


exponenciação, valor absoluto, logaritmo, arredondamento, etc.

 Nesse caso, o que queremos na realidade é implementar um conjunto


de funções matemáticas que independem de um objeto específico.

 Nesse caso, chamamos esses métodos de métodos da classe, que são


implementados usando a palavra static.

15 Programação OO
Métodos Estáticos

 No Java existe uma classe bastante usada que implementa funções


matemáticas chamada Math.

 Todos os métodos dessa classe são estáticos, isto é não dependem de


nenhum objeto para serem executados.

public class Math {


public static double sqrt(double x) { ... }
public static long round(double x) { ... }
public static double pow(double x, double y) { ... }
}

16 Programação OO
Métodos Estáticos

 A principal diferença entre os métodos estáticos e os métodos de


instância está na sua chamada.

 Nos métodos estáticos não precisamos do objeto para chamar o


método.

 Ao invés disso, usamos o próprio nome da classe para chamá-los.

 Exemplos:

double x = 12.2;
double y = Math.sqrt(x); // calcula a raiz quadrada de x
long z = Math.round(y); // arredonda o valor de y

17 Programação OO
Métodos Estáticos – Classe Math
Método Descrição

abs(x) Retorna o valor absoluto de x. x pode ser do tipo int, long, float ou double.
double acos(double x) Retorna o arco coseno do parâmetro x
double asin(double x) Retorna o arco seno do parâmetro x
double atan(double x) Retorna o arco tangente do parâmetro x
double ceil(double x) Retorna o menor inteiro maior que x
double cos(double x) Retorna o coseno de x
double exp(double x) Retorna a constante de Euller e elevada a x
double floor(double x) Retorna o maior inteiro menor que x
double log(double x) Retorna o logaritmo natural de x
max(x, y) Retorna o maior valor entre x e y. x e y podem ser do tipo int, long, float ou double.
min(x, y) Retorna o menor valor entre x e y. x e y podem ser do tipo int, long, float ou double.
double pow(double x, double y) Retorna xy
double random() Retorna um número aleatório maior ou igual a ZERO e menor que UM
long round(double x) Retorna o inteiro mais próximo de x
double sin(double x) Retorna o seno de x

double tan(double x) Retorna a tangente de x


double sqrt(double x) Retorna a raiz quadrada de x

18 Programação OO
Exercícios

 Exercício 26: implemente na classe Circulo o método:

float distancia(Circulo outroCirculo)

que calcula a distância d' de um círculo a outro círculo.

Dica: a distância entre dois pontos é dada pela fórmula:

d xb  xa 2   yb  ya 2
d

d'

19 Programação OO
Exercícios

 Exercício 26a: implemente na classe ConjuntoDeReais os métodos:

public ConjuntoDeReais uniao(ConjuntoDeReais outro)


public ConjuntoDeReais intersecao(ConjuntoDeReais outro)

20 Programação OO
Atributos Estáticos

 Vimos anteriormente que métodos estáticos são métodos acessados


diretamente pela classe e não por um objeto específico.

 Na classe Math, os métodos estáticos foram usados para criar uma


biblioteca de métodos que implementam funções matemáticas.

 Entretanto, também é possível definir atributos estáticos.

 No caso de atributos estáticos só existe UMA cópia desse atributo na


memória que é COMPARTILHADA por todos os objetos da classe.

 Assim como os métodos estáticos, os atributos estáticos são chamados


atributos da classe, ou seja, podem ser acessados diretamente a partir
da classe.

21 Programação OO
Atributos Estáticos

 Exemplo: Independentemente de quantos


objetos sejam criados, só existe uma
public class Carro { área de memória para o atributo
qtdeCarros.
private int anoFabricacao;
static private int qtdeCarros = 0; Essa área de memória é
compartilhada por todos os objetos.
public Carro(int ano) {
anoFabricacao = ano;
// Cada vez que eu crio um objeto Carro, eu incremento o contador
qtdeCarros ++;
}
Esse método é de instância e só pode
public int getAnoFabricacao() { ser chamado pelo objeto.
return anoFabricacao;
}

public static int getQtdeCarros() { Esse método é estático e deve ser


return qtdeCarros; chamado pela classe.
}
}
22 Programação OO
Atributos Estáticos

 Exemplo (continuação): o que acontece na memória nesse caso ?

public class Concessionaria {


public static void main(String args[]) { anoFabricacao = 2008

Carro c1 = new Carro(2008);

Carro c2 = new Carro(2011);


qtdeCarros= 1
Carro c3 = new Carro(2012);

Carro c4 = new Carro(2010);

System.out.println("Ano de c1 = " + c1.getAnoFabricacao());


System.out.println("Ano de c2 = " + c2.getAnoFabricacao()); Memória compartilhada
System.out.println("Ano de c3 = " + c3.getAnoFabricacao()); pelos objetos !
System.out.println("Ano de c4 = " + c4.getAnoFabricacao());
Qualquer alteração nesse
atributo realizado por um
System.out.println("Qtde de carros = " + Carro.getQtdeCarros()); objeto é "enxergado" por
} todos os objetos dessa
} classe.

23 Programação OO
Atributos Estáticos

 Exemplo (continuação): o que acontece na memória nesse caso ?

public class Concessionaria {


public static void main(String args[]) { anoFabricacao = 2008

Carro c1 = new Carro(2008);


anoFabricacao = 2011
Carro c2 = new Carro(2011);
qtdeCarros= 2
Carro c3 = new Carro(2012);

Carro c4 = new Carro(2010);

System.out.println("Ano de c1 = " + c1.getAnoFabricacao());


System.out.println("Ano de c2 = " + c2.getAnoFabricacao()); Memória compartilhada
System.out.println("Ano de c3 = " + c3.getAnoFabricacao()); pelos objetos !
System.out.println("Ano de c4 = " + c4.getAnoFabricacao());
Qualquer alteração nesse
atributo realizado por um
System.out.println("Qtde de carros = " + Carro.getQtdeCarros()); objeto é "enxergado" por
} todos os objetos dessa
} classe.

24 Programação OO
Atributos Estáticos

 Exemplo (continuação): o que acontece na memória nesse caso ?

public class Concessionaria {


public static void main(String args[]) { anoFabricacao = 2008

Carro c1 = new Carro(2008);


anoFabricacao = 2011
Carro c2 = new Carro(2011);
qtdeCarros= 3
Carro c3 = new Carro(2012); anoFabricacao = 2012

Carro c4 = new Carro(2010);

System.out.println("Ano de c1 = " + c1.getAnoFabricacao());


System.out.println("Ano de c2 = " + c2.getAnoFabricacao()); Memória compartilhada
System.out.println("Ano de c3 = " + c3.getAnoFabricacao()); pelos objetos !
System.out.println("Ano de c4 = " + c4.getAnoFabricacao());
Qualquer alteração nesse
atributo realizado por um
System.out.println("Qtde de carros = " + Carro.getQtdeCarros()); objeto é "enxergado" por
} todos os objetos dessa
} classe.

25 Programação OO
Atributos Estáticos

 Exemplo (continuação): o que acontece na memória nesse caso ?

public class Concessionaria {


public static void main(String args[]) { anoFabricacao = 2008

Carro c1 = new Carro(2008);


anoFabricacao = 2011
Carro c2 = new Carro(2011);
qtdeCarros= 4
Carro c3 = new Carro(2012); anoFabricacao = 2012

Carro c4 = new Carro(2010);


anoFabricacao = 2010

System.out.println("Ano de c1 = " + c1.getAnoFabricacao());


System.out.println("Ano de c2 = " + c2.getAnoFabricacao()); Memória compartilhada
System.out.println("Ano de c3 = " + c3.getAnoFabricacao()); pelos objetos !
System.out.println("Ano de c4 = " + c4.getAnoFabricacao());
Qualquer alteração nesse
atributo realizado por um
System.out.println("Qtde de carros = " + Carro.getQtdeCarros()); objeto é "enxergado" por
} todos os objetos dessa
} classe.

26 Programação OO
Atributos Estáticos

 Exemplo (continuação):

public class Concessionaria {


public static void main(String args[]) {

Carro c1 = new Carro(2008);


Será impresso:
Carro c2 = new Carro(2011);
Ano de c1 = 2008
Ano de c2 = 2011
Carro c3 = new Carro(2012);
Ano de c3 = 2012
Ano de c4 = 2010
Carro c4 = new Carro(2010);
Qtde de carros = 4

System.out.println("Ano de c1 = " + c1.getAnoFabricacao());


System.out.println("Ano de c2 = " + c2.getAnoFabricacao());
System.out.println("Ano de c3 = " + c3.getAnoFabricacao());
System.out.println("Ano de c4 = " + c4.getAnoFabricacao());

System.out.println("Qtde de carros = " + Carro.getQtdeCarros());


}
}

27 Programação OO
Métodos e Atributos Estáticos

 Algumas diferenças importantes:

Métodos de Instância Métodos Estáticos


Só podem ser chamados a partir de São chamados a partir da própria classe.
objetos da classe.
Podem acessar (ler ou alterar) atributos da Só podem acessar (ler ou alterar)
instância ou atributos da classe atributos da classe (estáticos).
(estáticos).

28 Programação OO
Atributos Estáticos

 Podemos definir atributos estáticos públicos junto com a palavra final


para criar constantes que pertencem a uma classe.

 Um exemplo é a constante PI que está definida na classe Math:

public class Math {


public static final double PI = 3.14159;
}

 Assim, para usar PI usamos a classe Math:

double raio = 7.5;


double area = Math.PI * Math.pow(raio, 2); // R2

29 Programação OO
Strings

 Java não possui um tipo primitivo string como em algumas outras linguagens
(VB, Delphi).

 A biblioteca de classes do Java possui uma classe pré-definida chamada


String.

 Logo, em Java, strings não são tipos primitivos e sim objetos.

 A declaração de um objeto String segue o mesmo padrão de declaração das


variáveis de tipos básicos:
A concatenação de strings
String mensagem; é feita com o operador +
String nome = "Joao da Silva";
String saudacao = "Olá " + nome;
String vazia = "";

 Repare que não precisamos do operador new para criar o objeto String. O
Java chama implicitamente esse operador.
30 Programação OO
Strings

 A classe String possui mais de 60 métodos para manipulação de strings.

 Alguns dos métodos mais usados são definidos a seguir:

31 Programação OO
Strings
Método Descrição

char charAt(int n) Retorna o caracter na n-ésima posição (começa a partir do ZERO)


int compareTo(String outra) Compara a string com outra. Retorna –1, 0 ou 1 caso a string seja menor, igual ou
maior que a outra, respectivamente
boolean endsWith(String sufixo) Verifica se a string termina com o sufixo
boolean equals(String outra) Compara a string com o objeto (case-sensitive)
boolean equalsIgnoreCase(String outra) Compara a string com o objeto ignorando maiúsculas e minúsculas
int indexOf(char ch) Retorna a primeira ocorrência de ch na string ou -1 se não existir
int indexOf(String str) Retorna a primeira ocorrência de str na string ou -1 se não existir
int indexOf(String str, int n) Retorna a primeira ocorrência de str na string começando a busca na posição n
int lastIndexOf(String str) Retorna a última ocorrência de str na string ou -1 se não existir
int lastIndexOf(String str, int n) Retorna a última ocorrência de str na string começando a busca na posição n
int length() Retorna o tamanho da string em caracteres
String replace(char velho, char novo) Substitui todas as ocorrências do caracter velho pelo novo
Boolean startsWith(String prefixo) Verifica se a string inicia com o prefixo
String substring(int inicio) Retorna a substring que começa na posição início até o fim da string
String substring(int inicio, int fim) Retorna a substring da posição inicio até fim-1
String toLowerCase() Retorna a string convertida para letras minúsculas

String toUpperCase() Retorna a string convertida para letras maiúsculas


String trim() Retira os espaços em branco no início e no fim da string
32 Programação OO
Strings

 Exemplos:

String str = "Programação Orientada a Objetos";


String nome = " João da Silva ";
int p;
char c;
boolean ok;

c = str.charAt(2);
c = str.charAt(7);

ok = str.endsWith("tos");
ok = str.endsWith("objeto");

33 Programação OO
Strings

 Exemplos:
0123456789012345678901234567890
String str = "Programação Orientada a Objetos";
String nome = " João da Silva ";
int p;
char c;
boolean ok;

c = str.charAt(2); -> 'o'


c = str.charAt(7); -> 'a'

ok = str.endsWith("tos"); -> true


ok = str.endsWith("objeto"); -> false

34 Programação OO
Strings

 Exemplos:

String str = "Programação Orientada a Objetos";


String nome = " João da Silva ";
int p;
char c;
boolean ok;

p = str.indexOf('a');
p = str.indexOf('O');
p = str.indexOf('x');
p = str.lastIndexOf('a');

p = str.length();

String nova = str.replace('o', '-');

35 Programação OO
Strings

 Exemplos:
0123456789012345678901234567890
String str = "Programação Orientada a Objetos";
String nome = " João da Silva ";
int p;
char c;
boolean ok;

p = str.indexOf('a'); -> 5
p = str.indexOf('O'); -> 12
p = str.indexOf('x'); -> -1
p = str.lastIndexOf('a'); -> 22

p = str.length(); -> 31

String nova = str.replace('o', '-');


-> "Pr-gramaçã- Orientada a Objet-s"

36 Programação OO
Strings

 Exemplos:

String str = "Programação Orientada a Objetos";


String nome = " João da Silva ";
int p;
char c;
boolean ok;

ok = str.startsWith('Progra');
ok = str.startsWith('grama');

System.out.println(str.toUpperCase());

System.out.println(str.substring(0, 6));
System.out.println(str.substring(3, 8));

37 Programação OO
Strings

 Exemplos:

String str = "Programação Orientada a Objetos";


String nome = " João da Silva ";
int p;
char c;
boolean ok;

ok = str.startsWith('Progra'); -> true


ok = str.startsWith('grama'); -> false

System.out.println(str.toUpperCase());
-> "PROGRAMAÇÃO ORIENTADA A OBJETOS"

System.out.println(str.substring(0, 6)); -> "Progra"


System.out.println(str.substring(3, 8)); -> "grama"

38 Programação OO
Strings

 Exemplos:

String str = "Programação Orientada a Objetos";


String nome = " João da Silva ";
int p;
char c;
boolean ok;

System.out.println(nome.trim());

System.out.println(nome.trim().toUpperCase());

39 Programação OO
Strings

 Exemplos:

String str = "Programação Orientada a Objetos";


String nome = " João da Silva ";
int p;
char c;
boolean ok;

System.out.println(nome.trim()); -> "João da Silva"

System.out.println(nome.trim().toUpperCase());
-> "JOÃO DA SILVA"

40 Programação OO
Strings

 Strings, em Java, são imutáveis.

 Isso significa dizer que, uma vez criadas, não podemos alterar o conteúdo de
uma string.

 Quando usamos um método que "altera" a string, na realidade estamos


criando um outro objeto na memória.

 Exemplo: "Programação Orientada a Objetos"

String disciplina = "Programação Orientada a Objetos";

"PROGRAMAÇÃO ORIENTADA A OBJETOS"


String maiuscula = disciplina.toUpperCase();

String outra = maiuscula.replace(' ', '-');


"PROGRAMAÇÃO-ORIENTADA-A-OBJETOS"

41 Programação OO
Strings

 Outro exemplo: " Programação"

String disciplina = "Programação";

disciplina = disciplina + " Orientada";

disciplina = disciplina + " a";

disciplina = disciplina + " Objetos";

42 Programação OO
Strings

 Outro exemplo: " Programação"

String disciplina = "Programação";


" Programação Orientada"

disciplina = disciplina + " Orientada";

disciplina = disciplina + " a";

disciplina = disciplina + " Objetos";

43 Programação OO
Strings

 Outro exemplo: " Programação"

String disciplina = "Programação";


" Programação Orientada"

disciplina = disciplina + " Orientada";


"Programação Orientada a"
disciplina = disciplina + " a";

disciplina = disciplina + " Objetos";

44 Programação OO
Strings
A JVM irá descartar
 Outro exemplo: " Programação" automaticamente
esses objetos
quando necessário.
String disciplina = "Programação";
" Programação Orientada"

disciplina = disciplina + " Orientada";


"Programação Orientada a"
disciplina = disciplina + " a";

disciplina = disciplina + " Objetos"; "Programação Orientada a Objetos"

 Ou seja, se alteramos com muita frequência uma string, temos uma perda de
desempenho relacionada à cópia dessa string para um novo objeto. E quanto
maior a string, pior o desempenho.

 Por isso, para programas que trabalham intensamente com strings use a classe
StringBuilder.

45 Programação OO
Strings

 Um detalhe muito importante da manipulação de strings é em relação à


comparação de strings.

 Como strings são objetos, se usarmos os operadores relacionais (==, !=, >, <,
>= ou <=) estaremos comparando as referências para as strings e não o
conteúdo das strings.

 Por isso não podemos usar os operadores relacionais (==, !=, >, <, >= ou
<=) para comparar strings.

 Para realizar a comparação do conteúdo devemos usar os métodos:


equals()
equalsIgnoreCase()
compareTo()
compareToIgnoreCase()

46 Programação OO
Strings

 Exemplo 1:

Scanner t = new Scanner(System.in); nome1


"Joao" nome1 == nome3
String nome1 = t.nextLine(); nome3

String nome2 = t.nextLine();


"Joao" nome1 != nome2
nome2
String nome3 = nome1;

Quando comparamos
if (nome1 == nome2) nome1 == nome2
System.out.println("Igual"); estamos comparando se a área de
else memória referenciada é a mesma e
System.out.println("Diferente"); não se o conteúdo é o mesmo.
Nesse caso vai imprimir "Diferente"

47 Programação OO
Strings

 Exemplo 2:

Scanner t = new Scanner(System.in); nome1


"Joao" nome1 == nome3
String nome1 = t.nextLine(); nome3

String nome2 = t.nextLine();


"Joao" nome1 != nome2
nome2
String nome3 = nome1;

if (nome1.equals(nome2)) Com o método equals() estamos


System.out.println("Igual"); comparando os conteúdos.
else Nesse caso vai imprimir "Igual"
System.out.println("Diferente");

48 Programação OO
Strings

 Exemplo 3:

Scanner t = new Scanner(System.in); nome1


"Joao" nome1 == nome3
String nome1 = t.nextLine(); nome3

String nome2 = t.nextLine();


"Joao" nome1 != nome2
nome2
String nome3 = nome1;

if (nome1.compareTo(nome2) == 0)
System.out.println("Igual"); O método compareTo() retorna:
else
• um valor < 0 se nome1 < nome2
System.out.println("Diferente");
• um valor > 0 se nome1 > nome2
• um valor = 0 se nome1 = nome2

A comparação é feita usando a ordem


do dicionário.

49 Programação OO
Strings

 Exemplos de resultados de s1.compareTo(s2):

S1 S2 Resultado Descrição
"a" "b" <0 "a" < "b"
"A" "a" <0 "A" < "a"
Letras maiúsculas vem ANTES de letras minúsculas
"JOAO" "joao" <0 "JOAO" < "joao"
Letras maiúsculas vem ANTES de letras minúsculas
"joao" "ana" >0 "joao" > "ana"
"joao" "Pedro" >0 "joao" > "Pedro"
P maiúsculo vem ANTES do j minúsculo
"123" "joao" <0 "123" < "joao"
Dígitos vem ANTES de letras maiúsculas ou
minúsculas
"11" "2" <0 "11" < "2"
A comparação é feita como string e não como
número

50 Programação OO
Strings

 Também é possível usar constantes nas comparações de strings:

Scanner t = new Scanner(System.in);


String nome1 = t.nextLine();
String nome2 = t.nextLine();
String nome3 = nome1;

if (nome1.compareTo("Jose") < 0)
System.out.println(nome1 + " vem antes de Jose");
else if (nome1.compareTo("Jose") > 0)
System.out.println(nome1 + " vem depois de Jose");

if (nome2.equalsIgnoreCase("JOAO"))
System.out.println("Igual");
else
System.out.println("Diferente");

51 Programação OO
Strings

 Exercício 27: crie um programa Java que lê duas strings e implementa os


seguintes itens:

a) Imprimir a quantidade de vogais da primeira string.


b) Criar uma outra string que é idêntica à primeira, mas sem as vogais.
c) Criar uma outra string com as letras que fazem parte da primeira string
(sem repetições)
d) Criar um outra string com os caracteres comuns entre a primeira e a
segunda string.
e) Criar uma outra string com as vogais que fazem parte da primeira string
(sem repetições)

Nas letras b a e, a string criada deverá ser impressa.

52 Programação OO

Вам также может понравиться