Programação Orientada a Objetos: Uma Abordagem com Java/Princípios da programação na linguagem Java/Classes Java/Strings

Origem: Wikilivros, livros abertos por um mundo aberto.

Strings[editar | editar código-fonte]

Ao contrário do que ocorre em C e C++, strings em Java não são tratadas como sequências de caracteres terminadas por NUL. São objetos, instâncias da classe java.lang.String.

Criação de strings[editar | editar código-fonte]

Como qualquer outro objeto, um objeto da classe string pode ser criado com o operador new:

String s = new String("abc");

Particularmente para esta classe, objetos podem ser criados pela forma alternativa:

String s = "abc";

Uma vez criados, objetos da classe String não podem ser modificados, ou seja, são imutáveis.

Apesar de Java não suportar o conceito de sobrecarga de operadores, como C++ faz, o operador + pode ser utilizado concatenar strings:

System.out.println("String s: " + s);

Neste exemplo, o argumento do método println é uma string criada pela combinação de duas outras strings, "String s" e o conteúdo do objeto referenciado por s.

Se, em uma mesma expressão, o operador + combinar strings e valores de outros tipos, esses valores serão primeiro convertidos para strings e então concatenados.

Métodos da classe String[editar | editar código-fonte]

A classe String define um conjunto de funcionalidades para manipular strings através de seus métodos. Para obter o número de caracteres em uma string, o método int length() é usado. Assim, a expressão

s.length();

retornaria o valor 3, assumindo que s é uma referência para a string "abc".

Para criar uma nova string a partir da concatenação de duas strings, o método String concat(String outro) pode ser usado. Por exemplo,

String t = s.concat(".java");

faria com que a string t tivesse o conteúdo “abc.java”. Observe que a string s não é modificada por essa operação.

Para comparar o conteúdo de duas strings há três formas básicas. O método equals(String outro) compara as duas strings, retornando verdadeiro se seus conteúdos forem exatamente iguais. Assim, dando sequência aos exemplos acima, a expressão

t.equals(s);

retornaria falso, mas

s.equals("abc");

retornaria verdadeiro.

O método equalsIgnoreCase(String outro) tem a mesma funcionalidade, mas ignora se as letras são maiúsculas ou minúsculas. Assim,

s.equalsIgnoreCase("ABC");

também retornaria verdadeiro.

A terceira forma é através do método compareTo(String outro), que retorna um valor inteiro igual a zero se as duas strings forem iguais, negativo se a string à qual o método for aplicado preceder lexicograficamente a string do argumento (baseado nos valores Unicode dos caracteres) ou positivo, caso contrário. Há também um método compareToIgnoreCase(String str).

Para extrair caracteres individuais de uma string, pode-se utilizar o método charAt(int pos), que retorna o caráter na posição especificada no argumento (0 é a primeira posição).

Para obter substrings de uma string, o método substring() pode ser utilizado. Esse método tem duas assinaturas:

String substring(int pos_inicial); 
String substring(int pos_inicial, int pos_final);

A localização de uma substring dentro de uma string pode ocorrer de diversas formas. O método indexOf(), com quatro assinaturas distintas, retorna a primeira posição na string onde o caractere ou substring especificada no argumento ocorre. É possível também especificar uma posição diferente da inicial a partir de onde a busca deve ocorrer. Similarmente, lastIndexOf() busca pela última ocorrência do caráter ou substring a partir do final ou da posição especificada.

É possível também verificar se uma string começa com um determinado prefixo ou termina com um sufixo através respectivamente dos métodos startsWith() e endsWith(). Ambos recebem como argumento uma string e retornam um valor booleano.