サロゲートペアを知らない人は、その挙動に戸惑うだろう。直感に反する挙動をするからだ。 次の Java コードを実行すると何が表示されるだろうか。 String val = "𠮷"; System.out.println(val.length()); val は見た目上は一文字なので 1 と表示することを期待するが、実際の結果は 2 と表示される。これは "𠮷" という文字はサロゲートペア文字で、2byte 文字では表せない文字だからである。この文字を表示するために内部では char 2つ(即ち4byte)を用いてこの一文字を表している。この「2つのcharで1つの文字を表す」文字をサロゲートペアと言う。 見た目上の文字数と内部で表される文字数が異なるため、冒頭のコードは2を返したわけだ。 さて、次のコードを実行するとエラーにならず、"𠮷" を構成する2つの文字が取得できることがわかる