Este artigo apresenta as 10 perguntas mais comuns sobre String em Java:
1. Para comparação de strings, você deve usar "==" ou equals()?
Simplificando, "==" determina se duas referências se referem ao mesmo endereço de memória (o mesmo objeto físico).
E equals determina se os valores de duas strings são iguais.
A menos que você queira determinar se duas referências de string são o mesmo objeto, você deve sempre usar o método equals().
Você entenderá melhor esse problema se entender o internamento de strings
2. Para informações confidenciais, por que é melhor usar char[] do que String?
String é um objeto imutável, o que significa que, uma vez criado, o objeto inteiro não pode ser alterado. Mesmo que um novato pense que a referência String foi alterada, na verdade é apenas a referência (ponteiro) apontando para outro (novo) objeto.
Os programadores podem modificar explicitamente a matriz de caracteres, de modo que informações confidenciais (como senhas) não sejam facilmente expostas em outro lugar (desde que você defina char[] como 0 após o uso).
3. Usar String como condição de caso na instrução switch?
A partir do JDK7, isso é possível. A propósito, Java 6 e versões anteriores não suportam isso.
Copie o código do código da seguinte forma:
// Válido apenas em Java 7 e superior!
mudar (str.toLowerCase()) {
caso "a":
valor = 1;
quebrar;
caso "b":
valor = 2;
quebrar;
}
4. Converta String em número
Para números muito grandes use Long, o código é o seguinte
Copie o código do código da seguinte forma:
int idade = Integer.parseInt("10");
long id = Long.parseLong("190"); // Se o valor for grande.
5. Como dividir string por caracteres de espaço em branco
A string recebida pelo método split() de String será analisada como uma expressão regular.
"/s" representa caracteres em branco, como espaço " ", tabulação "/t", avanço de linha "/n", retorno de carro "/r".
Quando o compilador analisa o código-fonte, ele também executa a transcodificação literal, portanto, "//s" é necessário.
Copie o código do código da seguinte forma:
String[] strArray = aString.split("//s+");
6. Como o método substring() é processado internamente?
No JDK6, o método substring() ainda compartilha o array char[] original e constrói uma "nova" String por meio de deslocamento e comprimento.
Se você deseja que substring() obtenha um objeto recém-criado, use o seguinte método:
Copie o código do código da seguinte forma:
String sub = str.substring(início, fim) + "";
Claro, em Java 7, substring() cria um novo array char[] em vez de compartilhá-lo.
Para saber mais, consulte: método substring() e suas diferenças em JDK6 e JDK7
7. String versus StringBuilder versus StringBuffer
StringBuilder é mutável, portanto os valores internos podem ser modificados após a criação.
StringBuffer é sincronizado e, portanto, seguro para threads, mas relativamente menos eficiente.
8. Como emendar a mesma corda repetidamente?
Opção 1: Use a classe de utilitário StringUtils da biblioteca Apache Commons Lang.
Copie o código do código da seguinte forma:
Stringstr = "abcd";
String repetida = StringUtils.repeat(str,3);//abcdabcdabcd
Opção 2:
Use o construtor StringBuilder. Mais flexível.
Copie o código do código da seguinte forma:
String src = "nome";
int len = src.length();
repetição interna = 5;
Construtor StringBuilder = new StringBuilder(len * repetir);
for(int i=0; i<repetir; i++){
construtor.append(src);
}
String dst = construtor.toString();
9. Como converter String em Data?
Copie o código do código da seguinte forma:
Formato SimpleDateFormat = new SimpleDateFormat("aaaa-MM-dd");
String str = "07/11/2013";
Data data = formato.parse(str);
System.out.println(formato.formato(data));//07/11/2013
10. Como contar quantas vezes um determinado personagem aparece?
Também usando a classe StringUtils da biblioteca Apache Commons Lang:
Copie o código do código da seguinte forma:
int n = StringUtils.countMatches("11112222", "1");
System.out.println(n);