Os exemplos neste artigo resumem o uso de strings em Java. Compartilhe com todos para sua referência. A análise específica é a seguinte:
A essência de uma string é um array do tipo char, mas em Java, todas as strings declaradas entre aspas duplas "" são objetos da classe String. Isso também reflete as características da linguagem Java totalmente orientada a objetos.
Classe de cordas
1. O objeto da classe String representa uma string constante. É de comprimento imutável. Em outras palavras, uma vez criada uma instância da classe String, a string representada por esta instância não pode ser alterada. Semelhante a
str = str + "Olá";
Esta operação cria essencialmente um novo objeto String combinando os dois objetos String str e "Hello" e, em seguida, atribui a referência do novo objeto String a str. O uso extensivo desta operação pode causar falhas de desempenho. Se precisar alterar o conteúdo da string com frequência, você deve usar a classe StringBuffer ou a classe StringBuilder. Podemos usar um pequeno programa para ver quão grande é a diferença de desempenho entre as classes String e StringBuffer.
class StringTest { public static void main(String[] args) { /** * Execute 10.000 operações de acréscimo usando objetos String e objetos StringBuffer respectivamente * Tempo de execução do teste * 2013.3.18 */ String constStr = ""; currentTimeMillis(); for(int i = 0; i < 10000; ++i) constStr += i; System.out.println("Const String:"+(System.currentTimeMillis()-lTime)); StringBuilder strBuf = new StringBuilder(""); 10000 ;++i) strBuf.append(String.valueOf(i)); String: "+(System.currentTimeMillis()-lTime)); } }Resultado da execução:
Pode-se observar que StringBuilder leva segundos, mas a classe String leva 300ms, o que mostra a enorme diferença de desempenho.
Tanto StringBuilder quanto StringBuffered representam um objeto string de comprimento variável (mutável). A diferença entre eles é que a classe StringBuffered faz algum processamento de segurança em termos de sincronização de thread, enquanto StringBuilder faz o oposto. Portanto, se você estiver programando apenas em uma única linha, o StringBuilder é um pouco mais eficiente que o StringBuffered (na verdade a diferença não é grande)
2. "Hello World" é um objeto String. Podemos usar "Hello World" diretamente como um objeto, como:
if("Olá".equals("Olá")) System.out.println("Sim");O resultado da saída é Sim.
3. Ao comparar objetos string, você deve usar o método equals() em vez de simplesmente usar == para julgar. Como == compara se as instâncias referenciadas por dois nomes de referência são iguais, o método equals() compara se as strings nos dois objetos são iguais.
Uma pergunta comum é: quantos objetos String o trecho de código a seguir gera no total?
String str1 = new String("Olá");String str2 = new String("Olá");Provavelmente a maioria das pessoas responderá: 2. Mas, na verdade, um total de 3 objetos String são gerados aqui. Além de str1 e str2, não esqueça que "Hello" também é um objeto String.
4. Piscina de cordas (piscina)
Java mantém um pool de String durante a execução. Quando uma string declarada entre aspas duplas aparece, a JVM irá primeiro verificar se o mesmo objeto String (com os mesmos caracteres) existe na memória. Se existir, retornará uma referência ao objeto que já existe na memória. ele não existe, ele irá criá-lo. Um novo objeto String. Isso economiza memória. Conforme mostrado no trecho de código a seguir, str1 e str2 na verdade apontam para o mesmo objeto String.
String str1 = "Olá";String str2 = "Olá";
5. Receba parâmetros de linha de comando
Quando declaramos o método principal, declaramos um parâmetro formal do tipo String[]. Este array de objetos String armazena os parâmetros da linha de comando passados pelo usuário ao executar este programa. Observe que, diferentemente da linguagem C, os parâmetros da linha de comando em Java começam na primeira variável após o nome do programa. Em outras palavras, os dados String[] não incluem o nome do aplicativo. Por exemplo:
classe strCmd { public static void main(String[] args) { if(args.length > 0) { for(String str: args) System.out.println(str);A saída ao executar java strCmd Hello World!
6. Separação de strings
Semelhante ao strtok na linguagem C, a classe String também possui um método split que pode separar uma string em um formato especificado. O método split retorna um array de objetos String, representando cada string separada. como:
class strSplit { public static void main(String[] args) { String str = "Olá/tWorld/tI/tLove/tYou!"; System.out.println("String original: " + strString[] strArr = str.split("/t"); for(String s: strArr) System.out.println(s);Entre eles, os parâmetros do método split() podem ser expressões regulares. Você pode usar o método estático matches() da classe Matcher no pacote java.util para determinar se uma string corresponde a uma expressão regular.
A classe String possui muitas outras funções poderosas e devemos aprender a ler a documentação da API. Aqui se reflete a importância do inglês...
Espero que este artigo seja útil para a programação Java de todos.