Técnicas de Programação II  
Aula 02 Objetos e Strings  
Edirlei Soares de Lima  
<edirlei.lima@uniriotec.br>  
Orientação a Objetos  
O ser humano se relaciona com o mundo através do conceito de  
objetos.  
Damos nomes a esses objetos e os classificamos em grupos  
(classes).  
Os objetos possuem:  
Características pelas quais os identificamos (Atributos);  
O objeto Pessoa possui RG, nome, data de nascimento...  
O objeto Carro possui tipo, cor, quantidade de portas...  
Finalidades para as quais os utilizamos (Comportamentos);  
Um objeto do tipo Pessoa pode andar, correr ou dirigir carros.  
Um objeto do tipo Carro pode ligar, desligar, acelerar, frear.  
Classes e Objetos  
A unidade fundamental da programação orientada a objetos é  
a classe.  
Classe: Carro  
Atributos:  
Tipo  
A classe define o que os objetos devem  
ter (exemplo: tipo, cor, placa e número  
de portas...) e quais operações eles  
podem realizar.  
Cor  
Placa  
N° Portas  
.
..  
Métodos:  
Acelerar()  
Frear()  
TrocarMarcha(x)  
Buzinar()  
As classes definem a estrutura básica  
para a construção de objetos.  
.
..  
Classes e Objetos  
Objetos são instâncias da classe.  
Classe Carro  
Objeto Carro1  
Objeto Carro2  
Objeto Carro3  
Classes e Objetos  
A classe é o modelo ou molde de construção de objetos. Ela  
define as características e comportamentos que os objetos  
irão possuir.  
Sob o ponto de vista da programação orientada a objetos, um  
objeto não é muito diferente de uma variável normal.  
Um programa orientado a objetos é composto por um  
conjunto de objetos que interagem entre si.  
Classes e Objetos  
Para manipularmos objetos em Java precisamos declarar  
variáveis de objetos.  
Uma variável de objeto é uma referência para um objeto.  
A declaração de uma variável de objeto é semelhante a  
declaração de uma variável normal:  
Carro carro1; /* carro1 não referencia nenhum objeto,  
o seu valor inicial é null */  
A simples declaração de uma variável de objeto não é  
suficiente para a criação de um objeto.  
Classes e Objetos  
A criação de um objeto deve ser explicitamente feita através  
do operador new:  
Carro carro1; /* carro1 não referencia nenhum objeto,  
o seu valor inicial é null */  
carro1 = new Carro(); /* instancia o objeto carro1 */  
O operador new aloca o objeto em memória e retorna uma  
referência para o mesmo:  
Carro  
Tipo = XYZ  
Cor = Branco  
Placa = ABC123  
carro1  
N° Portas = 2  
.
..  
Classes e Objetos  
Como as variáveis de objeto são referências, as operações de  
atribuição entre elas não criam novos objetos:  
Carro carro1, carro2, carro3;  
carro1 = new Carro();  
carro2 = carro1; /* carro2 passa a referenciar o mesmo  
objeto referenciado por carro1 */  
Carro  
carro1  
Tipo = XYZ  
Cor = Branco  
Placa = ABC123  
N° Portas = 2  
carro2  
carro3  
null  
.
..  
Classes e Objetos  
Um objeto expõe o seu comportamento através de métodos  
(funções).  
É possivel invocar métodos dos objetos instanciados:  
Carro carro1 = new Carro();  
Carro carro2 = new Carro();  
carro1.mudarMarcha(2);  
carro1.aumentaVelocidade(5);  
carro2.mudarMarcha(4);  
carro2.aumentaVelocidade(10);  
A Classe String  
Strings são sequências de caracteres. Na linguagem Java,  
strings são instâncias da classe String.  
O modo mais direto de criar uma string é:  
String s = "Técnicas de Programação II";  
Sempre que o compilador encontra uma string literal no  
código de um programa ele cria um objeto da classe String  
contendo o valor do literal.  
A Classe String  
Como qualquer outro objeto, uma string pode ser criada pelo  
operador new.  
A classe String possui 15 metodos construtores, que nos  
permitem fornecer o valor inicial da string usando diferentes  
fontes, tais como arrays de caracteres:  
char data[] = {'U', 'N', 'I', 'R', 'I', 'O'};  
String str = new String(data);  
String str = new String("UNIRIO");  
String str = "UNIRIO";  
Métodos da Classe String  
Classe String fornece um conjunto de métodos para a  
manipulação de cadeias de caracteres.  
Um destes métodos é o método length, o qual retorna um  
valor inteiro igual ao número de caracteres contidos na string:  
int length();  
Exemplo:  
String str = "Técnicas de Programação II";  
int tamanho = str.length();  
System.out.println("Tamanho: " + tamanho);  
Métodos da Classe String  
Outro método da classe String é o método charAt, o qual  
permite o acesso individual aos caracteres contidos na string:  
char charAt(int index);  
Exemplo:  
String str = "Técnicas de Programação II";  
System.out.println("Primeira Letra: " + str.charAt(0));  
System.out.println("Ultima Letra: " + str.charAt(str.length()-1));  
Resultado:  
Primeira Letra: T  
Ultima Letra: I  
Métodos da Classe String  
A classe String possui um método estático, chamado  
format, que nos permite formatar uma string.  
static String format(String format, Object... args);  
Exemplo:  
String str1;  
str1 = String.format("Alunos: %d \nMédia: %.2f", 25, 7.45);  
System.out.println(str1);  
Resultado:  
Alunos: 25  
Média: 7,45  
Métodos da Classe String  
Alguns outros métodos da classe String:  
boolean contains(String s)  
int indexOf(String str)  
String replace(char oldChar, char newChar)  
String substring(int beginIndex, int endIndex)  
String toLowerCase()  
String toUpperCase()  
String trim()  
Igualdade de Objetos  
As variáveis de objetos em Java fazem referencia aos  
objetos instanciados em memória.  
String s = new String("abc");  
String s2 = new String("abc");  
Igualdade de Objetos  
Ao usarmos o operador == para compararmos variáveis de  
objetos, estamos verificando se ambas apontam para o  
mesmo objeto instanciado em memória.  
String s = new String("abc");  
String s2 = new String("abc");  
if (s1 == s2)  
System.out.println("É igual!");  
else  
System.out.println("Não é igual!");  
Resultado:  
Não é igual!  
Igualdade de Strings  
Para compararmos o conteúdo de uma String devemos utilizar  
os métodos de comparação fornecidos pela classe String:  
boolean equals(Object anObject)retorna true se, e  
somente se, a string representa a mesma sequência de caracteres que  
o objeto passado como argumento. Exemplo:  
String s = new String("abc");  
String s2 = new String("abc");  
if (s1.equals(s2))  
System.out.println("É igual!");  
else  
System.out.println("Não é igual!");  
Resultado:  
É igual!  
Igualdade de Strings  
A classe String também fornece outros métodos para  
comparação de Strings:  
boolean endsWith(String suffix)retorna true se a string  
termina com a string passada como argumento.  
boolean startsWith(String prefix)retorna true se a  
string começa com a string passada como argumento.  
int compareTo(String s)compara duas strings  
lexicograficamente. Retorna um inteiro que indica se a string maior  
(
passada como argumento.  
retorno > 0), igual (retorno = 0) ou menor (retorno < 0) que a string  
Imutabilidade de Strings  
Em Java, strings são imutável. Uma vez criado um objeto da  
classe String, ele não pode ser modificado.  
A classe String possui vários métodos que parecem alterar o conteúdo  
de uma string, mas estes métodos na verdade fazem é criar e retornar  
uma nova string que contém o resultado da operação.  
String s = "abc";  
String s2 = s;  
s = s.concat("def");  
System.out.println(s);  
System.out.println(s2);  
Resultado:  
abcdef  
abc  
Imutabilidade de Strings  
String s = "abc";  
String s2 = s;  
s = s.concat("def");  
Imutabilidade de Strings  
String x = "Java";  
x.concat(" Rules!");  
System.out.println(x);  
Resultado:  
Java  
StringBuffer e StringBuilder  
Para se trabalhar com strings nas quais se deseja modificar o  
conteúdo, a biblioteca Java oferece as classes StringBuffer e  
StringBuilder.  
Ambas as classes possuem a maioria dos métodos da classe String,  
além de métodos de alteração.  
A classe StringBuffer é sincronizada para acesso concorrente,  
enquanto que a StringBuilder não tem sincronização.  
Os principais métodos destas classes são:  
append(...)adiciona o parâmetro ao final da string;  
insert(int offset, ...)insere o parâmetro na posição;  
setCharAt(int index, char ch)altera o caractere na  
posição;  
StringBuffer e StringBuilder  
Exemplo:  
public static void main(String[] args)  
{
StringBuffer s1 = new StringBuffer("UNIRIO");  
s1.append(" - RJ");  
s1.insert(s1.indexOf("- ")+1, " BSX -");  
s1.setCharAt(s1.indexOf("X"), 'I');  
System.out.println(s1);  
}
Resultado:  
UNIRIO - BSI - RJ  
Quando usar String e StringBuffer?  
Use String para manipular com valores constantes:  
Valores literais;  
Textos carregados de fora da aplicação;  
Textos em geral que não serão modificados intensivamente.  
Use StringBuffer para alterar textos:  
Acrescentar, concatenar, inserir, etc.  
Prefira usar StringBuffer para construir Strings  
Concatenação de strings usando "+" é extremamente cara.  
Leitura de Strings via Console  
A classe java.util.Scanner, além de fornecer funções  
para a leitura de variáveis simples (int, float, double...),  
também fornece funções para leitura de Strings:  
String nextLine()Retorna a ultima linha de texto digitada no  
console;  
Exemplo:  
String nome;  
Scanner entrada = new Scanner(System.in);  
System.out.println("Digite o seu nome:");  
nome = entrada.nextLine();  
System.out.println(nome);  
Manipulando Caracteres  
É possível acessar individual os caracteres contidos em uma  
Strings através do método charAt. Exemplo:  
char opcao;  
Scanner entrada = new Scanner(System.in);  
System.out.println("Deseja continuar (s ou n):");  
opcao = entrada.nextLine().charAt(0);  
if (opcao == 's')  
System.out.println("Continua!");  
else if (opcao == 'n')  
System.out.println("Não Continua!");  
else  
System.out.println("Opção Invalida!");  
Manipulando Caracteres  
É possível analisar os caracteres de uma Strings usando o  
método charAt. Exemplo:  
public static int conta_letra(String str, char letra)  
{
int i, total = 0;  
for (i = 0; i < str.length(); i++)  
{
if (str.charAt(i) == letra)  
total++;  
}
return total;  
}
String str1 = "Tecnicas de Programacao II";  
System.out.println("Total: " + conta_letra(str1, 'a'));  
Conversão de Strings  
Converter de String para int:  
String str1 = "52";  
int num1 = Integer.parseInt(str1);  
Converter de String para float:  
String str1 = "28.6";  
float num1 = Float.parseFloat(str1);  
Converter de String para double:  
String str1 = "85.1";  
double num1 = Double.parseDouble(str1);  
Conversão de Strings  
Converter de int para String:  
int num1 = 52;  
String str1 = String.valueOf(num1);  
Converter de float para String:  
float num1 = 28.6f;  
String str1 = String.valueOf(num1);  
Converter de String para double:  
double num1 = 85.1;  
String str1 = String.valueOf(num1);  
Exercícios  
Lista de Exercícios 02 Objetos e Strings  
http://uniriodb2.uniriotec.br