认证高级PHP讲师
sb は本質的に StringBuffer オブジェクトです。sb+"" は sb.toString() を呼び出して "" と結合します。また、StringBuffer はスレッド セーフです。その理由は、Jdk の String クラスが Final 型であるためですが、最終的に変更されたバージョンが String str = s + ""; の形式で存在できるのはなぜですか? jvm では、 + が実行されるたびに一時 String オブジェクトが作成され、実際には String str = new String(a) + new String(b) になります。ただし、結合する文字列が多すぎると、多くの String オブジェクトが作成されるため、このような頻繁な操作は文字列結合を直接使用せず、StringBuilder または StringBuffer を使用します。
sb は本質的に StringBuffer オブジェクトです。sb+"" は sb.toString() を呼び出して "" と結合します。また、StringBuffer はスレッド セーフです。その理由は、Jdk の String クラスが Final 型であるためですが、最終的に変更されたバージョンが String str = s + ""; の形式で存在できるのはなぜですか? jvm では、 + が実行されるたびに一時 String オブジェクトが作成され、実際には String str = new String(a) + new String(b) になります。ただし、結合する文字列が多すぎると、多くの String オブジェクトが作成されるため、このような頻繁な操作は文字列結合を直接使用せず、StringBuilder または StringBuffer を使用します。