Programação Orientada a Objetos: Uma Abordagem com Java/Princípios da programação na linguagem Java/Classes Java/Strings
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.