这2种定义方式 有不同吗??第一种会慢吗?
认证高级PHP讲师
答え: 同じくらい速いです
文字列初期化操作: リーリー このように、コンパイラはデフォルトで同じになります。だから遅くはなりません 別の例: リーリー このように生成された s2 は、メモリが 3 回要求されるため、非常に遅くなります。
文字列初期化操作:
このように、コンパイラはデフォルトで同じになります。だから遅くはなりません
別の例:
このように生成された s2 は、メモリが 3 回要求されるため、非常に遅くなります。
ご満足いただけましたら、ぜひ採用していただき、ポイントをいただければ幸いです。 。私は新メンバーですが、皆さんのお役に立つことを願っています! ! ! (本当は最初の回答に -1 ポイントを与えたいのですが、ランダムにいくつか回答してください)
最初のタイプは単に遅いという問題ではなく、クソみたいなコードです。
上記のように使用する場合は、StringBuilder の機能を使用しないため、 "a" + "b" + "c" を直接使用することをお勧めします。さらに、JDK 用にコンパイルおよび最適化された最終コードは次のようになります。 "a" + "b" + "c"因为没有使用到StringBuilder的任何特性,加上JDK的编译优化最终代码会变成如下。
StringBuilder
"a" + "b" + "c"
JDK
new StringBuilder("a").append("b").append("c");
第二种完全没看懂啊。使用StringBuilder リーリー
javap -c看看,编译器应该会把你用+接続された文字列定数は一緒に結合され、2 つの書き込みメソッドは同じように実行されるはずです。
javap -c
+
定数を直接使用できます +変数も使用できます +パフォーマンスが気になる場合は、これをチェックしてください: http://calvin1978.blogcn.com/...
オブジェクト間で結合文字「+」が使用されていない限り、文字列間で結合文字「+」を使用する場合と使用しない場合に基本的に違いはありません。文字列オブジェクトが生成されると、生成されるように変更されます。すべての文字列を含む別のオブジェクト オブジェクト間の結合は非常に遅くなります;
public static void main(String[] args) {
}private static void fun1(int length){
}private static void fun2(int length){
}private static void fun3(int length){
}private static void fun4(int length){
}
オブジェクトを作成するこれら 2 つの方法は、速いか遅いかを比較するために、次の 2 つの方法に変換できます。 リーリー
次の文字列の結合方法を見てみましょう: リーリー
まとめると、対象者によって作成された 2 つの新しい StringBuilder メソッドは実際には同じメソッドであり、効率も同じで、簡単です。
答え: 同じくらい速いです
ご満足いただけましたら、ぜひ採用していただき、ポイントをいただければ幸いです。 。私は新メンバーですが、皆さんのお役に立つことを願っています! ! ! (本当は最初の回答に -1 ポイントを与えたいのですが、ランダムにいくつか回答してください)
最初のタイプは単に遅いという問題ではなく、クソみたいなコードです。
リーリーリーリー
上記のように使用する場合は、
StringBuilder
の機能を使用しないため、"a" + "b" + "c"
を直接使用することをお勧めします。さらに、JDK
用にコンパイルおよび最適化された最終コードは次のようになります。"a" + "b" + "c"
因为没有使用到StringBuilder
的任何特性,加上JDK
的编译优化最终代码会变成如下。第二种完全没看懂啊。使用
2つ目は全く分かりません。StringBuilder
リーリーStringBuilder
を使用する意味は何ですか?それ自体はただの文字列ではないでしょうか? 🎜javap -c
看看,编译器应该会把你用+
接続された文字列定数は一緒に結合され、2 つの書き込みメソッドは同じように実行されるはずです。定数を直接使用できます +
変数も使用できます +
パフォーマンスが気になる場合は、これをチェックしてください: http://calvin1978.blogcn.com/...
オブジェクト間で結合文字「+」が使用されていない限り、文字列間で結合文字「+」を使用する場合と使用しない場合に基本的に違いはありません。文字列オブジェクトが生成されると、生成されるように変更されます。すべての文字列を含む別のオブジェクト オブジェクト間の結合は非常に遅くなります;
public static void main(String[] args) {
リーリー}
リーリーprivate static void fun1(int length){
}
リーリーprivate static void fun2(int length){
}
リーリーprivate static void fun3(int length){
}
リーリーprivate static void fun4(int length){
}
オブジェクトを作成するこれら 2 つの方法は、速いか遅いかを比較するために、次の 2 つの方法に変換できます。 リーリー
もちろん、これら 2 つのメソッドは同等に高速です。JVM では、「T」+「e」+「s」+「t」は実際には「Test」として処理されます。次の文字列の結合方法を見てみましょう:
上記の方法は文字列を結合する最も効率の悪い方法であり、あまりお勧めできません。このように文字列を結合する場合、JVM は実際に新しい StringBuilder を生成し、次に append メソッドを呼び出してから toString を実行するためです。遅い犬 (犬: また銃の上に横たわっています...)リーリー
まとめると、対象者によって作成された 2 つの新しい StringBuilder メソッドは実際には同じメソッドであり、効率も同じで、簡単です。