![]() |
|
Objetivo
Roteiro
Os caracteres são blocos de construção, que são interpretados pelo computador como uma série de instruções utilizadas para realizar tarefas. O programa pode conter caracteres constantes, sendo o valor inteiro do caracter no conjunto de caracteres Unicode (ASCII), representado entre aspas simples.
Tabela de caracteres ASCII
|
|
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
|---|---|---|---|---|---|---|---|---|---|
|
0 |
null |
soh |
stx |
etx |
eot |
enq |
ack |
bel |
bs |
|
1 |
nl |
vt |
ff |
cr |
so |
si |
dle |
dc1 |
dc2 |
|
2 |
dc4 |
nak |
syn |
etb |
can |
em |
sub |
esc |
fs |
|
3 |
rs |
us |
sp |
! |
“ |
# |
$ |
% |
& |
|
4 |
( |
) |
* |
+ |
, |
- |
. |
/ |
0 |
|
5 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
: |
|
6 |
< |
'=' |
> |
? |
@ |
A |
B |
C |
D |
|
7 |
F |
G |
H |
I |
J |
K |
L |
M |
N |
|
8 |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
|
9 |
Z |
[ |
\ |
] |
^ |
_ |
í |
a |
b |
|
10 |
d |
e |
f |
g |
h |
i |
j |
k |
l |
|
11 |
n |
o |
p |
q |
r |
s |
t |
u |
v |
|
12 |
x |
y |
z |
{ |
| |
} |
~ |
del |
|
Os dígitos à esquerda da tabela são os dígitos mais à esquerda do equivalente em decimal (0-12) do código do caracter e os dígitos na parte superior da tabela são os dígitos na parte superior da tabela são os dígitos à direita do equivalente em unidade (0-8) do código de caracter. Por exemplo, 'z' representa o valor inteiro de z, ou seja, 122.
2. Tipos de dados primitivos na linguagem Java
Ao contrário das linguagens de programação C e C++, os tipos primitivos em Java são portáveis entre todas as plataformas de computador que suportam Java. Este e muitos outros recursos de portabilidade de Java permitem que os programadores escrevam programas uma só vez, sem saber qual a plataforma de computador em que o programa será excecutado. Esse atributo é às vezes conhecido como “WORA(Witre Once, Run Anywhere – escreva uma vez, rode em qualquer lugar)”.
| Tipo | Tamanho em bits | Valores | |
| boolean | 8 | True ou false | |
| char | 16 | \'u000' a '\uFFFF' (0 a 65535) | (conj. De caracteres Unicode ISO) |
| byte | 8 | -128 a +127 |
|
| short | 16 | -32768 a +32767 | |
| int | 32 | -2.147.483.648 a +2.147.483.647 | |
| long | 64 | -9.223.372.036.854.775.808 a +9.223.372.036.854.775.807 | |
| float | Intervalonegativo -3,40282346638552886E+38 a -1,40129846432481707E-45 Intervalo positivo 1,40129846432481707E-45 a 3,40282346638552886E+38 | (Ponto flutuante IEEE 754) | |
| double | Intervalo negativo: -1,7976931348623157E+308 a -4,94065645841246544E-324 Intervalo positivo: 4,94065645841246544E-324 a 1,7976931348623157E+308 | (Ponto flutuante IEEE 754) |
| Para | byte | short | char | int | long | float | double |
| De | |||||||
| byte | - | (char) | Implícito | Implícito | Implícito | Implícito | |
| short | (byte) | - | (char) | Implícito | Implícito | Implícito | Implícito |
| char | (byte) | (short | - | Implícito | Implícito | Implícito | Implícito |
| int | (byte) | (short | (char) | - | Implícito | Implícito | Implícito |
| long | (byte) | (short | (char) | (int) | - | Implícito | Implícito |
| float | (byte) | (short | (char) | (int) | (long) | - | Implícito |
| double | (byte) | (short | (char) | (int) | (long) | (double) | - |
Para um char alguns valores UNICODE
'\u0030' é 0
'\u0039' é 9
'\u0041' é A
'\u005A' é Z
'\u0061' é a
'\u007A' é z
O string
é
uma sequência de
caracteres tratada
como uma só unidade, incluindo letras, dígitos e
vários caracteres especiais, como
+, -, *, /, $ e outros. Os literais string ou
constantes string, também
chamados de objetos anônimos String,
são
escritos como uma sequência de caracteres entre aspas duplas
como segue:
“João da Silva” (nome)
“Rua 13 de maio, 754” (endereço
em uma rua)
4. Construtores da classe String
A classe String fornece nove construtores para inicializar objetos String de diferentes maneiras. O programa abaixo demonstra sete destes construtores:
// ConstrutoresString.java
// Este programa demonstra os construtores da classe String.
// Pacote de extensão de Java
import javax.swing.*;
public class ConstrutoresString {
// testa os construtores de String
public static void main( String args[] ) {
char charArray [] = {'f', 'e', 'l', 'i', 'z', ' ', 'a', 'n', 'i', 'v', 'e', 'r', 's', 'a', 'r', 'i', 'o' };
byte byteArray [] = { ( byte ) 'a', ( byte ) 'n', ( byte ) 'o', ( byte ) ' ',
( byte ) 'n', ( byte ) 'o', ( byte ) 'v', ( byte ) 'o' };
StringBuffer buffer;
String s, s1, s2, s3, s4, s5, s6, s7, output;
s = new String( "Ola" );
buffer = new StringBuffer( "Benvindo a programacao Java!" );
// usa os construtores de String
s1 = new String();
s2 = new String ( s );
s3 = new String( charArray );
s4 = new String( charArray, 6, 11 );
s5 = new String( byteArray, 4, 4 );
s6 = new String( byteArray );
s7 = new String( buffer );
// acrescenta os Strings à saída
output = "s1 = " + s1 + "\ns2 = " + s2 + "\ns3 = " + s3 + "\ns4 = " + s4 +
"\ns5 = " + s5 + "\ns6 = " + s6 + "\ns7 = " + s7;
JOptionPane.showMessageDialog( null, output,
"Demonstrando Classe ConstrutoresString",
JOptionPane.INFORMATION_MESSAGE );
System.exit( 0 );
}
} // fim da classe ConstrutoresString
Resultado da execução do programa ContrutoresString.java:

5. Métodos de Strings: length, charAt e getChars
No exemplo abaixo estaremos estudando os métodos length, charAt e getChars, que determinam o comprimento de um String, obtem o caracter em uma localização específica em um String e obtem todo o conjunto de caracteres em um String, respectivamente.
// DiversosString.java
// Este programa demonstra os métodos length,
// charAt e getChars da classe String.
//
// Nota: o método getChars requer uma posição inicial e uma posição final no String. O primeiro
// argumento corresponde a posição inicial, é o subscrito de onde a cópia realmente inicia.
// O segundo argumento corresponde a posição final, que é uma posição após o subscrito no
// qual a cópia termina. O terceiro argumento corresponde ao array que será transportado os caracteres.
// O último argumento corresponde ao índice inicial no array de caracteres, onde serão transportados.
// Pacotes de extensão Java
import javax.swing.*;
public class DiversosString {
// testa os diversos métodos de String
public static void main( String args[] )
{
String s1, output;
char charArray [] ;
s1 = new String ( "Estou aqui" );
charArray = new char [ 5 ];
// gera o string como saída
output = "s1 = "+ s1;
// testa o método length
output +="\nTamanho de s1 = " + s1.length();
// percorre com um laço os caracteres em s1 e os exibe na ordem inversa
output += "\nA string reversa é = ";
for ( int count = s1.length() - 1; count >= 0; count -- )
output += s1.charAt( count ) + " ";
// copia os caracteres do string para um array de caracteres
s1.getChars( 0, 5, charArray, 0 );
output += "\nO caracter array é = ";
for ( int count = 0; count < charArray.length; count ++ )
output += charArray [ count ] ;
JOptionPane.showMessageDialog( null, output,
"Demonstrando Classe DiversosString ",
JOptionPane.INFORMATION_MESSAGE );
System.exit( 0 );
}
} // fim da classe DiversosString
Resultado da execução do programa DiversosString.java:

Nota sobre o método getChars.
Este método, requer uma posição inicial e uma posição final no String. O primeiro argumento corresponde a posição inicial, é o subscrito de onde a cópia realmente inicia. O segundo argumento corresponde a posição final, que é uma posição após o subscrito no qual a cópia termina. O terceiro argumento corresponde ao array que será transportado os caracteres. O último argumento corresponde ao índice inicial no array de caracteres, onde serão transportados.
6. Comparação em StringJava fornece diversos métodos para comparar objetos String. Esses métodos são demonstrados nos dois exemplos a seguir. Para entender exatamente o que significa um string ser “maior que” ou “menor que” um outro string, pense no processo de colocar em ordem alfabética uma série de nomes. O alfabeto é uma lista ordenada de caracteres. Cada letra ocupa uma posição específica dentro da lista. Por exemplo, o “Z” é a vigésima sexta letra do alfabeto.
Todos os caracteres são representados dentro do computador como códigos numéricos, conforme visto anteriormente - Tabela Conjunto de caracteres ASCII. Quando o computador compara dois strings, ele compara os códigos numéricos dos caracteres strings.
No exemplo a seguir demonstra os métodos equals, equalsIgnoreCase, compareTo e regionMatches de String e a utilização do operador de igualdade = = para comparar objetos String.
// ComparaString.java
// Este programa demonstra os métodos equals, equalsIgnoreCase, compareTo e
// regionMatches da classe String.
// Pacote de extensão de Java
import javax.swing.JOptionPane;
public class ComparaString {
// testa os métodos de comparação da classe String
public static void main( String args[ ] )
{
String s, s1, s2, s3, s4, output;
s1 = new String( "ola" );
s2 = new String ( "tchau" );
s3 = new String( "Feliz Aniversario" );
s4 = new String( "feliz aniversario" );
output = "s1 = " + s1 + "\ns2 = " + s2 + "\ns3 = " + s3 + "\ns4 = " + s4 + "\n\n";
// testa igualdade com equals (utilizado para utilização de mesmo objeto na memória.)
// A instrução s1 = new String( “ola” ); cria um novo objeto String com uma cópia do
// String anônimo “alo” e atribui o novo objeto à referência s1. Assim, aplica-se esta.
if ( s1. equals( "ola" ) )
output += "s1 igual a \"ola\"\n";
else
output += "s1 não igual a \"ola\"\n";
// testa igualdade com = = (tem funciona// diferente qdo. é utilizado para comparar
// referências e quando é utilizado para comparar valores de tipos primitivos de dados.)
// Se s1 tivesse sido inicializada com a instrução s1 = “alo”; aplicaria-se esta função.
if ( s1 == "ola" )
output += "s1 igual a \"ola\"\n";
else
output += "s1 não igual a \"ola\"\n";
// testa igualdade (ignora case de maiúsculas/minúsculas)
if ( s3. equalsIgnoreCase( s4 ) )
output += "s3 igual s4\n";
else
output += "s3 não igual a s4\n";
// testa comparação
output +=
"\ns1.compareTo( s2 ) eh " + s1.compareTo( s2 ) +
"\ns2.compareTo( s1 ) eh " + s2.compareTo( s1 ) +
"\ns1.compareTo( s1 ) eh " + s1.compareTo( s1 ) +
"\ns3.compareTo( s4 ) eh" + s3.compareTo( s4 ) +
"\ns4.compareTo( s3 ) eh " + s4.compareTo( s3 ) +
"\n\n";
// testa comparação em parte de string (diferencia maiúsculas de minúsculas)
if ( s3.regionMatches( 0, s4, 0, 5 ) )
output += "Os primeiros 5 caracteres de s3 e s4 são iguais\n";
else
output += "Os primeiros 5 caracteres de s3 e s4 são diferentes\n";
// testa comparação em parte de string (ignora case de maiúsculas e minúsculas)
if ( s3.regionMatches( true, 0, s4, 0, 5 ) )
output += "Os primeiros 5 caracteres de s3 e s4 são iguais\n";
else
output += "Os primeiros 5 caracteres de s3 e s4 são diferentes\n";
JOptionPane.showMessageDialog( null, output,
"Demonstrando Classe ComparaString",
JOptionPane.INFORMATION_MESSAGE );
System.exit( 0 );
}
} // fim da classe ComparaString
Resultado da execução do programa ComparaString.java:

No segundo exemplo a seguir, demonstra os métodos startsWith e endWith da classe String, para compara início e fim de um String.
// Extensão pacote Java
import javax.swing.*;
public class StringStartEnd {
// método de teste de comparação String para início e fim
// de uma String
public static void main( String args[] )
{
String strings[] =
{ "started", "starting", "ended", "ending" };
String output = "";
// método de teste startsWith
for ( int count = 0; count < strings.length; count++ )
if ( strings[ count ].startsWith( "st" ) )
output += "\"" + strings[ count ] +
"\" starts with \"st\"\n";
output += "\n";
// método de teste startsWith início de uma posição
// 2 de uma string
for ( int count = 0; count < strings.length; count++ )
if ( strings[ count ].startsWith( "art", 2 ) )
output += "\"" + strings[ count ] +
"\" starts with \"art\" at position 2\n";
output += "\n";
// método de teste endsWith
for ( int count = 0; count < strings.length; count++ )
if ( strings[ count ].endsWith( "ed" ) )
output += "\"" + strings[ count ] +
"\" ends with \"ed\"\n";
JOptionPane.showMessageDialog( null, output,
"Demonstrating String Class Comparisons",
JOptionPane.INFORMATION_MESSAGE );
System.exit( 0 );
}
} // fim da classe StringStartEnd
Resultado da execução do programa ComparaString.java:

// MetodosIndexString.java
// Este programa demonstra os métodos
// "index" da classe String.
// Pacotes de extensão de Java
import javax.swing.*;
public class MetodosIndexString {
// Métodos de pesquisa em Strings
public static void main( String args[] )
{
String letters = "abcdefghijklmabcdefghijklm";
// testa indexOf para encontrar o próximo, a partir da posição indicada, caracter em um string
String output = "'c' esta alocado no indice " +
letters.indexOf( 'c' );
output += "\n'a' esta alocado no indice " +
letters.indexOf( 'a', 1 );
output += "\n'$' esta alocado no indice " +
letters.indexOf( '$' );
// testa lastIndexOf para encontrar o último caracter em um string
output += "\n\nUltimo 'c' esta alocado no indice " +
letters.lastIndexOf( 'c' );
output += "\nUltimo 'a' esta alocado no indice " +
letters.lastIndexOf( 'a', 25 );
output += "\nUltimo '$' esta alocado no indice " +
letters.lastIndexOf( '$' );
// testa indexOf para localizar o próximo, a partir da posição indicada, substring em um string
output += "\n\n\"def\" esta alocado no indice " +
letters.indexOf( "def" );
output += "\n\"def\" esta alocado no indice " +
letters.indexOf( "def", 7 );
output += "\n\"alo\" is esta alocado no indice" +
letters.indexOf( "alo" );
// testa (lastIndexOf) para localizar o último substring em um string
output += "\n\nUltimo \"def\" esta alocado no indice " +
letters.lastIndexOf( "def" );
output += "\nUltimo \"def\" esta alocado no indice " +
letters.lastIndexOf( "def", 25 );
output += "\nUltimo \"alo\" esta alocado no indice " +
letters.lastIndexOf( "alo" );
JOptionPane.showMessageDialog( null, output,
"Demonstrando classe String Métodos \"index\" ",
JOptionPane.INFORMATION_MESSAGE );
System.exit( 0 );
}
} // fim da classe MetodosIndexString

// MetodoSubStringString.java
// Este programa demonstra os métodos
// substring da classe String.
// Pacotes de extensão de Java
import javax.swing.*;
public class MetodoSubStringString {
// Métodos substring de Strings
public static void main( String args[] )
{
String letters = "abcdefghijklmabcdefghijklm";
// testa métodos substring
String output = "Substring de índice 20 para o fim é " +
"\"" + letters.substring( 20 ) + "\"\n";
output += "Substring de índice 0 até 5 é " +
"\"" + letters.substring( 0, 6 ) + "\"";
JOptionPane.showMessageDialog( null, output,
"Demonstrando MetodoSubStringString",
JOptionPane.INFORMATION_MESSAGE );
System.exit( 0 );
}
} // Fim da classe MetodoSubStringString

// MetodoConcatenaString.java
// Este programa demonstra o método concat da classe String.
// Note que o método concat retorna um objeto String novo.
// Ele não modifica o objeto que invocou o método concat.
// Pacotes de extensão de Java
import javax.swing.*;
public class MetodoConcatenaString {
// testa o método concat da String
public static void main( String args[] )
{
String s1 = new String( "Feliz " ),
s2 = new String( "Aniversário" );
String output = "s1 = " + s1 + "\ns2 = " + s2;
output += "\n\nResultado de s1.concat( s2 ) = " +
s1.concat( s2 ) ;
output += "\n\ns1 depois de concatenado = " + s1;
output += "\ns2 depois de concatenado = " + s2;
JOptionPane.showMessageDialog( null, output,
"Demonstrando o MetodoConcatenaString",
JOptionPane.INFORMATION_MESSAGE );
System.exit( 0 );
}
} // fim da classe MetodoConcatenaString

10. Métodos replace, toUpperCase, toLowerCase, trim, toString e toCharArray de String
A classe String fornece vários métodos que
retornam
cópias modificadas de Strings ou que retornam um array de
caracteres, permanecendo desta forma inalterado os Strings originais.
Os métodos da classe String:
// MaiusMinusTrimString.java
// Este programa demonstra os métodos replace, toLowerCase,
// toUpperCase, trim, toStringe toCharArray de String
// Pacotes de extensão de Java
import javax.swing.*;
public class MaiusMinusTrimString {
// testa os diversos métodos de String
public static void main( String args[] )
{
String s1 = new String( "alo" ),
s2 = new String( "TCHAU" ),
s3 = new String( " espaços " );
String output = "s1 = " + s1 + "\ns2 = " + s2 +
"\ns3 = " + s3;
// testa o método replace
output += "\n\nTroca 'l' por 'L' em s1: " +
s1.replace( 'l', 'L' );
// testa os métodos toLowerCase e toUpperCase
output +=
"\n\ns1.toUpperCase() = " + s1.toUpperCase() +
"\ns2.toLowerCase() = " + s2.toLowerCase();
// testa o método trim
output += "\n\ns3 after trim = \"" + s3.trim() + "\"";
// testa o método toString
output += "\n\ns1 = " + s1.toString();
// testa o método toCharArray
char charArray[] = s1.toCharArray();
output += "\n\ns1 como um caracter array = ";
for ( int count = 0; count < charArray.length; ++count )
output += charArray[ count ];
JOptionPane.showMessageDialog( null, output,
"Demonstrando Diversos Metodos String",
JOptionPane.INFORMATION_MESSAGE );
System.exit( 0 );
}
} // fim da classe MaiusMinusTrimString

11. Utilizando o método valueOf de String
A classe String fornece um conjunto de métodos de classe static que recebem argumentos de vários tipos, convertem esses argumentos em strings e os devolvem como objetos String. O exemplo de programa a seguir demonstra os métodos valueOf da classe String.
// MetodoValueOfString.java
// Este programa demonstra os métodos valueOf da classe String.
// Pacotes de extensão de Java
import javax.swing.*;
public class MetodoValueOfString {
// testa métodoValueOf de String
public static void main( String args[] )
{
char charArray[] = { 'a', 'b', 'c', 'd', 'e', 'f' };
boolean b = true;
char c = 'Z';
int i = 7;
long l = 10000000;
float f = 2.5f;
double d = 33.333;
Object o = "alo"; // atribui uma referência para Object
String output;
output = "char array = " + String.valueOf( charArray ) +
"\nparte de char array = " +
String.valueOf( charArray, 3, 3 ) +
"\nboolean = " + String.valueOf( b ) +
"\nchar = " + String.valueOf( c ) +
"\nint = " + String.valueOf( i ) +
"\nlong = " + String.valueOf( l ) +
"\nfloat = " + String.valueOf( f ) +
"\ndouble = " + String.valueOf( d ) +
"\nObject = " + String.valueOf( o );
JOptionPane.showMessageDialog( null, output,
"Demonstrando MetodoValueOfString ",
JOptionPane.INFORMATION_MESSAGE );
System.exit( 0 );
}
} // fim da classe MetodoValueOfString

Autores: Carlos Fernando Gonçalves e Marli Esprega Gonçalves (Antares Information Systems)