サロゲートペアを知らない人は、その挙動に戸惑うだろう。直感に反する挙動をするからだ。 次の Java コードを実行すると何が表示されるだろうか。 String val = "𠮷"; System.out.println(val.length()); val は見た目上は一文字なので 1 と表示することを期待するが、実際の結果は 2 と表示される。これは "𠮷" という文字はサロゲートペア文字で、2byte 文字では表せない文字だからである。この文字を表示するために内部では char 2つ(即ち4byte)を用いてこの一文字を表している。この「2つのcharで1つの文字を表す」文字をサロゲートペアと言う。 見た目上の文字数と内部で表される文字数が異なるため、冒頭のコードは2を返したわけだ。 さて、次のコードを実行するとエラーにならず、"𠮷" を構成する2つの文字が取得できることがわかる
![Java とサロゲートペアについて - にょきにょきブログ](https://cdn-ak-scissors.b.st-hatena.com/image/square/7abd7bab333dded8df79b9e57da8c1d818b0f9f4/height=288;version=1;width=512/http%3A%2F%2Fecx.images-amazon.com%2Fimages%2FI%2F51b7R1hZL-L.jpg)