Java
 Computer >> コンピューター >  >> プログラミング >> Java

Java 9のコンパクト文字列とは何ですか?


Java 9以降、JVMはコンパクトと呼ばれる新機能を使用して文字列を最適化します。 文字列 char[を使用する代わりに ] 配列 、文字列は byte []として表すことができます 配列。 UTF-16のいずれかを使用できます またはLatin-1 文字ごとに1バイトまたは2バイトを生成します。 JVMが文字列にISO-8859-1/ Latin-1のみが含まれていることを検出した場合 文字の場合、文字列は内部的に文字ごとに1バイトを使用します。

文字列はコンパクトな文字列で表すことができますが、文字列の作成時に検出されません。この機能はデフォルトで有効になっており、 -XX:-CompactStringsを使用してオフになります 。 char []には戻りません 実装し、すべての文字列をUTF-16として格納します。

// In Java 8
public class String {
   private final char[] value; // Stores characters in the string
      ---------
}

// In Java 9
public class String {
   private final byte[] value; // Stores characters in the string
   private final byte coder; // a flag whether to use 1 byte per character or 2 bytes per characters for this string

      ---------
}

  1. JavaのStringIndexOutOfBoundsExceptionとは何ですか?

    文字列は、Javaで文字のシーケンスを格納するために使用され、オブジェクトとして扱われます。 java.langパッケージのStringクラスは、文字列を表します。 文字列は、(他のオブジェクトのように)新しいキーワードを使用するか、(他のプリミティブデータ型のように)リテラルに値を割り当てることによって作成できます。 String stringObject = new String("Hello how are you"); String stringLiteral = "Welcome to Tutorialspoint"; 文字列には文字の配列

  2. Javaで文字列を比較する方法

    文字列が等しいかどうかを比較するには、Stringオブジェクトのequalsを使用する必要があります またはequalsIgnoreCase メソッド。 ==を使用すべきでない理由もわかります 文字列を比較する演算子。 文字列とequals()メソッドの比較 Javaで2つの文字列を比較する必要があり、文字列の大文字と小文字も気にする必要がある場合は、equals()を使用できます。 メソッド。 たとえば、次のスニペットは、文字列の2つのインスタンスが大文字小文字を含むすべての文字で等しいかどうかを判断します。 public class CompareTwoStrings { p