stringbuilder - java StringBuilding 定义
PHP中文网
PHP中文网 2017-04-18 10:18:25
0
6
740

这2种定义方式 有不同吗??
第一种会慢吗?

PHP中文网
PHP中文网

认证高级PHP讲师

全員に返信(6)
伊谢尔伦

答え: 同じくらい速いです

文字列初期化操作:

リーリー

このように、コンパイラはデフォルトで同じになります。だから遅くはなりません

別の例:

リーリー

このように生成された s2 は、メモリが 3 回要求されるため、非常に遅くなります。

ご満足いただけましたら、ぜひ採用していただき、ポイントをいただければ幸いです。 。私は新メンバーですが、皆さんのお役に立つことを願っています! ! ! (本当は最初の回答に -1 ポイントを与えたいのですが、ランダムにいくつか回答してください)

いいねを押す +0
阿神

最初のタイプは単に遅いという問題ではなく、クソみたいなコードです。

リーリー
リーリー

上記のように使用する場合は、StringBuilder の機能を使用しないため、 "a" + "b" + "c" を直接使用することをお勧めします。さらに、JDK 用にコンパイルおよび最適化された最終コードは次のようになります。 "a" + "b" + "c"因为没有使用到StringBuilder的任何特性,加上JDK的编译优化最终代码会变成如下。

new StringBuilder("a").append("b").append("c");

第二种完全没看懂啊。使用StringBuilder リーリー

2つ目は全く分かりません。 StringBuilder を使用する意味は何ですか?それ自体はただの文字列ではないでしょうか? 🎜
いいねを押す +0
迷茫

javap -c看看,编译器应该会把你用+接続された文字列定数は一緒に結合され、2 つの書き込みメソッドは同じように実行されるはずです。

いいねを押す +0
小葫芦

定数を直接使用できます +
変数も使用できます +
パフォーマンスが気になる場合は、これをチェックしてください: http://calvin1978.blogcn.com/...

いいねを押す +0
PHPzhong

オブジェクト間で結合文字「+」が使用されていない限り、文字列間で結合文字「+」を使用する場合と使用しない場合に基本的に違いはありません。文字列オブジェクトが生成されると、生成されるように変更されます。すべての文字列を含む別のオブジェクト オブジェクト間の結合は非常に遅くなります;

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){

リーリー

}

いいねを押す +0
巴扎黑

オブジェクトを作成するこれら 2 つの方法は、速いか遅いかを比較するために、次の 2 つの方法に変換できます。 リーリー

もちろん、これら 2 つのメソッドは同等に高速です。JVM では、「T」+「e」+「s」+「t」は実際には「Test」として処理されます。

次の文字列の結合方法を見てみましょう:
リーリー

上記の方法は文字列を結合する最も効率の悪い方法であり、あまりお勧めできません。このように文字列を結合する場合、JVM は実際に新しい StringBuilder を生成し、次に append メソッドを呼び出してから toString を実行するためです。遅い犬 (犬: また銃の上に横たわっています...)

まとめると、対象者によって作成された 2 つの新しい StringBuilder メソッドは実際には同じメソッドであり、効率も同じで、簡単です。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート