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

StringsEditar

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 stringsEditar

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 StringEditar

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.