1. Suporte embutido de java para cordas;
O chamado suporte interno significa que os tipos de string não são implementados usando ponteiros Char como C, e a codificação de string de Java está em conformidade com os padrões de codificação Unicode, o que também significa que não precisa ser implementado usando classes de string e WSTRING como C ++ para Seja compatível com a linguagem C e o padrão Unicode. O Java suporta tipos de string através da classe String internamente.
Isso significa: podemos chamar diretamente o mesmo método do objeto String:
// você pode chamar diretamente todos os métodos do objeto String no "ABC"
int length = "abc" .Length ();
assim como
String abc = new String ("ABC");
int length = abc.length ();
2. O valor da string em Java é constante (constante)
O que queremos dizer aqui é que, depois que o tipo de string é criado, o valor não pode ser alterado. String ("def") o "ABC" e "def" no pool constante armazenado na máquina virtual Java.
O "ABC" no código a seguir é armazenado no pool constante, de modo que os endereços apontados pelas variáveis A e AB são os mesmos "ABC" no pool constante.
A cópia do código é a seguinte:
classe pública Stringtest {
public static void main (string [] args) {
String a = "abc";
String ab = "abc";
String abc = new String ("ABC");
System.out.println (ab == a);
System.out.println (a == ABC);
}
}
/*Saída do programa:
* verdadeiro
* Falso
* */
Então, como são implementadas strings gerados e variáveis dinamicamente implementados? O Java fornece classes de StringBuffer e StringBuilder para atingir esse requisito; StringBuilder e StringBuffer são implementados? Ele armazena cordas através de uma matriz de personagens. A seguir, um snippet encontrado no código -fonte que vem com o JDK.
3. Codificação de questões em cordas.
Duas perguntas a entender aqui: Como lidar com a codificação de strings em arquivos de origem? Que codificação as strings usam ao compilar em arquivos de classe ou código é executado na máquina virtual Java?
O primeiro problema é que a codificação da string no código -fonte depende do seu IDE ou editor de texto. Por exemplo, o código a seguir é editado no formato de codificação GBK e depois abre-o usando a decodificação UTF-8 e GBK
// formato de codificação GBK, aberto em formato GBK
// Formato de codificação GBK, aberto no formato UTF-8, iluminado; se o formato de codificação padrão do sistema não for GBK neste momento, você precisar
Então, como lidar com esse tipo de problema de codificação de código -fonte? A resposta é especificada na opção de parâmetro -o codificação do compilador JAVAC. A codificação padrão do Windows geralmente é GBK (esse valor pode ser obtido através do System.getProperty ("File.Encoding")); Use Javac - codificando UTF- 8 Compile.
Qual é a codificação de strings ao compilar em um arquivo ou código de classe ao executar uma máquina virtual Java? Como o código-fonte é a codificação? Isso significa que, desde que o compilador Javac entenda corretamente a codificação de strings no arquivo de código -fonte, as seqüências de strings no arquivo de tempo de execução ou classe bytecode são independentes do formato de codificação no código -fonte. Aqui podemos entender melhor o tipo de char básico ou a classe de personagem em Java. '1' O comprimento dos caracteres ou caracteres chineses em Java é de 16 bits.
Além disso, no tipo de string, também usamos a codificação de caractere fixo especificado para converter a representação binária subjacente e a string, o que significa que podemos ler corretamente a codificação GBK, a codificação UTF-8 ou outros arquivos de texto codificados ou outro fluxo de entrada convertidos na sequência correta na memória.
Por exemplo, existem os seguintes métodos na classe String:
public string (byte [] bytes, charset charset);
public byte [] getBytes (Charset Charset);
Há outro método de membro que precisa receber atenção a:
public byte [] getBytes ();