84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
这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 メソッドは実際には同じメソッドであり、効率も同じで、簡単です。