Java の文字列型 (String)

Java の文字列とは?

String は Java で文字列をあらわす基本的なクラスです。

基本的といってもプリミティブデータタイプとして「文字列」という型があるわけではありません。 Java の標準ライブラリとして用意されている String クラスです。

Java の String リテラルは二重引用符で囲む

二重引用符 " で囲んだ文字列リテラル (定数) は、String オブジェクトとして認識されます。

次の例では、変数 sHello という文字を表す String オブジェクトになります。 このため、下の例のように、直接 String クラスのメソッドを呼び出せます。

public class TestApp {
    public static void main(String[] args) {
        String s = "Hello";
        System.out.println(s.toUpperCase()); // HELLO
    }
}

C言語の場合は二重引用符で囲った文字列は、単純にメモリ上にその文字が書き込まれ、そのメモリ領域を指し示すポインターになります。Java では String オブジェクトです。

Java の文字列と Unicode

Java の文字は Unicode (UTF-16) です。

このことを実際に、 Java プログラムを実行して確認してみましょう。

UTF-16 と char 型については 「Java の文字型 (char)」をご覧ください。 以下、UTF-16 のエンコーディング方法については知っているものとして説明しています。

はじめに文字列リテラルで String オブジェクトを作成し、文字の符号を確認します。

まず、"ABC" という文字列リテラルから String オブジェクトを作成します。 その String オブジェクトの文字型 (char) を取り出して、char のサイズである 2 バイト長毎の符号を確認します。

package com.keicode.java.test;

public class TestApp {
  public static void main(String[] args) {
    String s = "ABC";
    for (char ch : s.toCharArray()) {
      System.out.printf("%c %04X\n", ch, (int) ch);
    }
  }
}

実行結果は次のようになります。

A 0041
B 0042
C 0043

A0x0041B0x0042C0x0043 であることが確認できました。

そこで次は、この符号を元にして文字列を作ってみましょう。

文字列リテラルに符号を入力する時は \uXXXX というフォーマットで 16 進数の数値を入力します。

次のコードで 5 行目で、Unicode の符号から文字列を作成しています。

package com.keicode.java.test;

public class TestApp {
  public static void main(String[] args) {
    String s = "\u0041\u0042\u0043";
    System.out.println(s);
  }
}

実行結果は次のようになります。

ABC

注意点としては、Unicode のコードポイントを直接入力するのではなく、UTF-16 で符号化した符号を入力するところです。

文字 A の場合は Unicode のコードポイントは U+0041 であり、UTF-16 の符号も 16 進数で 0x0041 です。このため Unicode のコードポイントをそのまま文字列に入力しているともいえます。

しかし、例えば次の Emoji の場合 Unicode のコードポイントは U+1F923 です。

Rolling on the floor laughing

これを UTF-16 でエンコードすると、符号は 0xD83E 0xDD23 になります。

UTF-16 エンコードの方法については「Unicode の UTF-16 エンコーディング手順」をみてください。

Java の文字列では UTF-16 で符号を入力しますから、この Emoji を文字列に書くには "\uD83E\uDD23" とします。"\u1F923" ではないので注意しましょう。

Java の String の基本操作

String オブジェクトでは String クラスの各種メソッドが利用できます。

String オブジェクトのデータの長さを取得する

char の配列から String オブジェクトを作成する

Java で char の配列から String オブジェクトを作成するには、String クラスのコンストラクタに char の配列を渡します。

package com.keicode.java.test;

public class TestApp {
    public static void main(String[] args) {
        char[] a = {'A', 'B', 'C', 0xD83E, 0xDD23};
        String s = new String(a);
        System.out.println(s);
    }
}

実行結果は次のようになります。

以上、Java の基本的なデータ型である String について説明しました。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 Java 入門