Javaのlangパッケージの特徴は何ですか。
Javaの場合、java.lang.String は不変のクラスです。つまり、一度Stringオブジェクトが作成されると、その内容を変更することはできません。この特性は主に文字列プールの存在によるもので、パフォーマンスとセキュリティを向上させるために採用されています。
さらに、Stringクラスには次の特徴もあります:
- 不変性: 一度Stringオブジェクトが作成されると、その内容は変更できません。Stringオブジェクトへのすべての操作は新しいStringオブジェクトを返し、元のオブジェクトに影響を及ぼしません。
- Stringは不変なので、複数のスレッドが同じStringオブジェクトを同時に操作してもスレッドセーフの問題が発生しません。
- オブジェクトを作成する際、Stringクラスはハッシュコードを計算してキャッシュするため、ハッシュマップの性能が向上します。
- Javaでは、文字列プールという特別なメモリ領域があり、文字列定数を保存するために使用されます。文字列定数を作成する際、JVMはまず定数プールに同じ内容の文字列が既に存在するかどうかをチェックします。存在する場合は定数プール内のオブジェクトを直接返し、存在しない場合は新しい文字列定数を作成します。
総合的にみると、Stringクラスの不変性とその他の特性によって、高性能、スレッドセーフ、使いやすいという特徴があります。