Ir para o conteúdo

Strings

Strings são os tipos de dados usados quando queremos manipular texto. Em Java, as strings são objectos e não são vectores, ao contrario de outras linguagens onde as strings são cadeias de caracteres, tipicamente terminadas com um caractere especial, em Java as strings são objectos, com tratamento especial em determinadas situações, mas objectos mesmo assim, criados a partir da classe String.

Em Java as strings são imutáveis, não é possível alterar o valor de uma string depois desta ter sido criada. Este é um ponto que deve ser reforçado, ao criarmos uma string o seu valor nunca poderá ser alterado, seja por que operação for, a JVM nunca irá modificar os dados guardados na string. Ao somarmos duas strings, estamos na verdade a criar uma terceira string, nova, que irá conter o resultado da soma. Ao substituirmos um caractere dentro de uma string, estamos a criar uma segunda string, que vai ter todos os caracteres menos o(s) que retiramos.

Isto pode parecer algo estranho, mas é a forma como Java lida com strings, e esta forma de lidar com strings implica que "editar" strings se torna um processo computacionalmente exigente, não sendo as strings, os objectos correctos quando precisamos de editar texto. No entanto, as strings têm a sua utilidade, são talvez dos tipos de objectos mais usados em qualquer programa.

Embora não sejam vectores, as strings possuem vários métodos que permite aceder aos dados através da posição, onde a posição do primeiro caractere é a posição zero e a do último a posição n-1, sendo n o tamanho da string. Para quem já tenha usado C ou C++, não existe caractere terminador 0.

Casos Especiais

O compilador trata algumas situações como especiais no que toca ao tratamento de strings, por exemplo, a criação de uma string pode ser feita sem o operador new

Instanciar uma String:

String s = new String("Isto é uma String");
String s2 = "Isto é uma segunda String"; //processo especial, omissão do construtor e operador new

Concatenar uma String:

String s3 = "Parte 1" + ", outra parte"; //criação de duas strings, 
                                        //soma dos seus valores e 
                                        //conseguente criação de uma terceira string, s3

Alguns dos métodos de uso comum da classe String:

String s = "Uma string de teste";

s.indexOf("U"); //Devolve zero
s.charAt(4); //Devolve 's', o 5º caractere
s.equals(in);
s.compareTo(in);
s.compareToIgnoreCase("");
s.length();
s.concat(s)
s.contains(s);
s.format(s, args); //Formata uma string. Cria uma string nova formatada segundo os parâmetros fornecidos.
s.matches(""); //Permite pesquisas com expressões regulares.
s.trim(); //Removes espaços brancos no início e fim da string.
s.toCharArray();
s.substring(""); //Obtém uma nova string que é uma sub-string da string usada.
s.split(""); //Divide uma string. Devolve um array com novas strings que representam os pedaços.
s.toUpperCase();//Devolve uma nova string com os caracteres todos em maiúscula.
s.toLowerCase();//Devolve uma nova string com os caracteres todos em minúscula.
s.replace('s', '0'); //Substituição de um caractere por outro.
s.replaceAll('s', '0')//Substituir todas as ocorrências de um caractere.

Existem muitos mais métodos na classe que nos são úteis.

No que toca a processamento de strings, as classes StringBuilder e StringBuffer permitem maior performance e são as classes que devem ser usadas sempre que seja necessário "editar" muitas strings.