亚洲 国产精品 日韩-亚洲 激情-亚洲 欧美 91-亚洲 欧美 成人日韩-青青青草视频在线观看-青青青草影院

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > java拼接字符串的方法

java拼接字符串的方法

來源:千鋒教育
發布人:qyf
時間: 2022-09-08 17:26:48 1662629208

java拼接字符串的方法

  java技術知識有很多,其中java拼接字符串就是其中的一種,本期小編要為大家介紹的是java拼接字符串的方法,文中講解非常細致,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下。

  字符串的拼接,常使用到的大概有4種方式:

  1.直接使用"+"號

  2.使用String的concat方法

  3.使用StringBuilder的append方法

  4.使用StringBuffer的append方法

  由于String是final類型的,因此String對象都是屬于不可變對象,因此,在需要對字符串進行修改操作的時候(比如字符串的連接或者是替換),String總是會生成新的對象。

  1.“+”

  如果不考慮其他,使用“+”號來連接字符串無疑是最方便、最快捷的方式。但是事實上,使用“+”號連接字符串的效率并不高,。

  貼出測試用的demo

  public class Str {

  public static void main(String[] args) {

  String str1 = "hello";

  String str2 = "wolrd";

  String str = str1 + str2;

  System.out.println(str);

  }

  }

  貼出Str通過編譯之后產生的字節碼文件

  public class com.fzkj.str.Str {

  public com.fzkj.str.Str();

  Code:

  0: aload_0

  1: invokespecial #1 // Method java/lang/Object."":()V

  4: return

  public static void main(java.lang.String[]);

  Code:

  0: ldc #2 // String hello

  2: astore_1

  3: ldc #3 // String wolrd

  5: astore_2

  6: new #4 // class java/lang/StringBuilder

  9: dup

  10: invokespecial #5 // Method java/lang/StringBuilder."":()V

  13: aload_1

  14: invokevirtual #6 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;

  17: aload_2

  18: invokevirtual #6 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;

  21: invokevirtual #7 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;

  24: astore_3

  25: getstatic #8 // Field java/lang/System.out:Ljava/io/PrintStream;

  28: aload_3

  29: invokevirtual #9 // Method java/io/PrintStream.println:(Ljava/lang/String;)V

  32: return

  }

  通過上面的字節碼文件可以看出,在執行String str = str1 + str2;這一條語句的時候,其實底層是調用了StringBuilder的append方法來實現,就是說使用“+”號連接字符串的時候,底層會new一個StringBuilder對象,調用該對象的append方法將字符串拼接起來,最后通過toString方法返回拼接之后的值。

  也就是字符串str1+str2就等效于下面的代碼:

  String str1 = "hello";

  String str2 = "wolrd";

  StringBuilder sb = new StringBuilder();

  sb.append(str1).append(str2);

  String s = sb.toString();

  在數據量很大的時候,比如說循環一萬次,那就會創建一萬個StringBuilder對象。所以說使用"+"號拼接字符串的效率很低。

  最后在看一下使用"+"號拼接str1和str2,100000次的耗時。

  public class Str {

  public static void main(String[] args) {

  String str1 = "hello";

  String str2 = "wolrd";

  long startTime = System.currentTimeMillis();

  System.out.println("開始執行時間:"+ startTime);

  for (int i = 0; i < 100000; i++) {

  String str = str1 + str2;

  }

  long stopTime = System.currentTimeMillis();

  System.out.println("結束執行時間:"+ stopTime);

  System.out.println("執行100000次字符串拼接總共耗時:"+(stopTime - startTime)+"ms");

  }

  }

  自媒體培訓

  開始執行時間:1591326544582

  結束執行時間:1591326544601

  執行100000次字符串拼接總共耗時:19ms

  2.concat

  concat源碼如下:

  public String concat(String str) {

  int otherLen = str.length();

  if (otherLen == 0) {

  return this;

  }

  int len = value.length;

  char buf[] = Arrays.copyOf(value, len + otherLen);

  str.getChars(buf, len);

  return new String(buf, true);

  }

  從concat方法的源碼中可以看出來,concat就是申請了一個char數組,將需要拼接的字符串放到這個數組中,最后轉換為String返回。

  還是記錄拼接100000次,總共的耗時

  public class Str {

  public static void main(String[] args) {

  String str1 = "hello";

  String str2 = "wolrd";

  // 使用concat連接字符串

  String concat = str1.concat(str2);

  long startTime = System.currentTimeMillis();

  System.out.println("開始執行時間:"+ startTime);

  for (int i = 0; i < 100000; i++) {

  String str = str1.concat(str2);

  }

  long stopTime = System.currentTimeMillis();

  System.out.println("結束執行時間:"+ stopTime);

  System.out.println("執行100000次字符串拼接總共耗時:"+(stopTime - startTime)+"ms");

  }

  }

  開始執行時間:1591328017552

  結束執行時間:1591328017561

  執行100000次字符串拼接總共耗時:9ms

  3.StringBuffer/StringBuilder

  這兩個類都繼承了同一個抽象類AbstractStringBuilder;而這兩個類的append方法都是調用的父類中的append方法。

  public AbstractStringBuilder append(String str) {

  if (str == null)

  return appendNull();

  int len = str.length();

  ensureCapacityInternal(count + len);

  str.getChars(0, len, value, count);

  count += len;

  return this;

  }

  而它倆的區別就是StringBuffer的append方法上加了synchronized關鍵字,因此是線程安全的。

  public class Str {

  public static void main(String[] args) {

  String str1 = "hello";

  String str2 = "wolrd";

  StringBuffer sb = new StringBuffer();

  long startTime = System.currentTimeMillis();

  System.out.println("開始執行時間:"+ startTime);

  for (int i = 0; i < 100000; i++) {

  sb.append(str1);

  }

  long stopTime = System.currentTimeMillis();

  System.out.println("結束執行時間:"+ stopTime);

  System.out.println("StringBuffer執行100000次字符串拼接總共耗時:"+(stopTime - startTime)+"ms");

  StringBuilder sb1 = new StringBuilder();

  long startTime1 = System.currentTimeMillis();

  System.out.println("開始執行時間:"+ startTime1);

  for (int i = 0; i < 100000; i++) {

  sb1.append(str1);

  }

  long stopTime1 = System.currentTimeMillis();

  System.out.println("結束執行時間:"+ stopTime1);

  System.out.println("StringBuilder執行100000次字符串拼接總共耗時:"+(stopTime1 - startTime1)+"ms");

  }

  }

  開始執行時間:1591328952926

  結束執行時間:1591328952933

  StringBuffer執行100000次字符串拼接總共耗時:7ms

  開始執行時間:1591328952934

  結束執行時間:1591328952936

  StringBuilder執行100000次字符串拼接總共耗時:2ms

  StringBuilder的性能比StringBuffer的性能要好點。

  從上面的結果中,可以得出一個結論,那就是這四種的效率由快到慢依次是:

  StringBudiler>StringBuffer>concat>+

  事實上,在拼接的字符串很少的情況下,concat的效率其實是比StringBuilder的效率還要高的。

  所以在實際的使用過程中,要根據自己的需求選擇使用。。

  以上就是“java拼接字符串的方法”的詳細內容,希望能夠幫助到大家,更多關于JAVA字符串拼接的資料請關注千鋒教育其它相關文章!

tags:
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
人人妻人人澡人人爽欧美一区双 | 人妻人人做人做人人爱| 日韩乱码人妻无码系列中文字幕 | WWW亚洲精品自慰一区二区| 成人做爰高潮A片免费视频| 国产日韩欧美亚欧在线| 两只奶头被老头吸肿了| 日韩亚洲欧美精品综合| 亚洲AV综合色区无码一区| 中文字幕乱码亚洲∧V日本| 粗大的内捧猛烈进出A片男男小说| 国产亚洲欧洲网友拍| 免费A级毛片无码A∨奶水在线| 日韩精品成熟妇人Av一区二区 | 久久精品WWW人人做人人爽 | 亚洲AV中文无码乱人伦APP| 18禁黄污无遮挡无码网站| 国产99久60在线视频 | 传| 久久国产乱子精品免费女| 人妻在夫面前被性爆| 亚洲AV无码成人精品区伊人小说| 7777色情XXXX欧美| 国产乱色国产精品免费视频| 免费无码成人AV在线播| 无码少妇一区二区| 18亚洲AV无码成人国产| 国产欧美另类久久久精品图片| 免费女人18毛片A级毛片视频| 无码AV无码一区二区| 在线人成视频播放午夜福利| 国产成人久久AV免费高潮| 邻居一晚让我高潮3次正常吗| 少女たちよ在线观看动漫4| 一炕四女被窝交换啪啪| 国产成人亚洲精品| 男女爽到高潮的免费网站| 偷欢人妻激情系列| 97丨九色丨国产人妻▌| 国内粗鲁VIDEO老熟妇| 人妻含泪让粗大挺进| 亚洲精品无码日韩国产不卡Av | 么公的粗大挺进了我的密道| 无码H黄肉动漫在线观看999| 99精产国品一二三产区区别在线| 国产中年熟女高潮大集合| 人妻人人澡人人添人人爽人人玩| 亚洲精品无码鲁网中文电影| 国产SM残忍打屁股调教视频| 免费无码AV一区二区波多野结衣| 午夜精品久久久久久| MM131美女视频毛片| 久久精品国产亚洲AV影院| 天天躁日日躁狠狠躁欧美老妇小说| 中文在线А√在线| 国语自产偷拍精品视频| 色婷婷成人AV电影| 99久久国产自偷自偷免费一区| 护士HD老师FREE性Ⅹ| 少妇极品熟妇人妻| AV免费无码天堂在线| 久久国产精品波多野结衣AV| 无人区一码二码三码四码| WWW插插插无码免费视频网站| 久久99精品网久久| 午夜精品久久久久久中宇| 波多野结衣一区二区三区AV高清| 浪潮AV激情高潮国产精品| 亚洲AV无码成人影片在线观看| 动性配人ⅩXXXX配| 欧美人禽猛交乱配1| 亚洲综合一区二区三区四区五区| 国产熟女真实乱精品视频| 日韩亚洲欧美精品综合| Chinese老女人老熟妇HD| 久久久久亚洲精品无码蜜桃| 亚洲AV无码专区色爱天堂老鸭| 丰满少妇熟女高潮流白浆| 欧美一级 片内射黑人B| 玉米地诱子偷伦初尝云雨孽欲| 激情内射亚州一区二区三区爱妻| 无码精品H动漫成人影院| 成在人线AV无码免费| 欧美日韩不卡合集视频| 中文字幕V亚洲日本在线| 久久精品国产99精品亚洲| 亚洲AV日韩AV高潮喷无码| 国产精品WWW夜色视频| 色黄啪啪网18以下勿进| 啊灬啊灬啊灬快灬高潮少妇| 男生晚上睡不着想看B站| 在线无码一区二区| 久久人人爽人人爽人人AV| 亚洲精品乱码久久久久久自慰| 国产亚洲精品一区在线播放| 无码人妻精品一区二区三区久久久 | 97香蕉超级碰碰碰久久兔费| 美美女高清毛片视频免费观看| 亚洲自偷图片自拍图片| 久久99精品久久久久麻豆| 亚洲精品NV久久久久久久久久| 国产亚洲欧洲网友拍| 性生交大片免费看淑女出招| 国产精品色内内在线播放| 乌克兰少妇XXXX做受| 丰满护士巨好爽好大乳小说| 日韩欧美成人免费观看| 成人网站V片免费观看| 日韩国产成人精品视频| 八戒八戒WWW资源网在线观看| 欧美性爱在线视频| WWW无套内射高清免费| 人妻一区二区三区Av毛片 | 国产免费不卡午夜福利在线| 无码人妻丝袜在线视频| 国产精品爽黄69天堂A| 午夜成人无码福利免费视频| 国产精品自在拍一区二区不卡| 无码专区人妻系列日韩精品少妇 | 国产成人乱色伦区小说| 乌克兰少妇XXXX做受野外| 国产伦精品一区二区三区免.费| 午夜香吻视频在线看免费| 国精产品一区一区三区糖心| 亚洲国产AV玩弄放荡人妇| 精品亚洲国产成人AV在线| 一本加勒比HEZYO中文无码| 美女脱精光手不挡图片| 99久久免费国产精品四虎99久久精品免费看国产一区二区 | 在线A级毛片无码免费真人| 蜜桃av秘 无码一区二区三区| √天堂中文官网8在线| 欧美最厉害的喷水VIDEOS | 精品国产熟女成人AV| 亚洲日韩精品无码专区加勒比海 | 丁香花在线电影小说观看| 天堂8А√中文在线官网| 国产老妇伦国产熟女老妇高清| 亚洲AV永久无码精品桃花岛 | 久久99久久99小草精品免视看| 一二三四视频社区在线一中文| 妺妺窝人销魂体色www| ZOOM动物高清视频| 少妇爆乳无码AV无码波霸| 国产精品主播一区二区三区| 亚洲国产精品日韩AV不卡在线| 久久亚洲国产成人影院| 99久久国产综合精麻豆| 日日摸夜夜添夜夜添无码| 国产人澡人澡澡澡人碰视| 亚洲欧美中文日韩在线V日本| 美女把尿口扒开让男人桶| 爱情岛永久地址WWW成人| 玩弄JaPan白嫩少妇HD小说| 狠狠躁夜夜躁人人躁婷婷| 中文区中文字幕免费看| 人妻在线无码一区二区三区| 国产精品久久久久久影视不卡| 亚洲AV综合AV一区二区三区| 浪货趴办公桌~H揉秘书电影| ZEESEA在日本| 无码加勒比一区二区三区四区| 久久精品99国产AV精品蜜桃| BT天堂在线观看WWW| 无码AⅤ精品一区二区三区浪潮| 精品无码一区二区三区电影| 69无人区卡一卡二卡| 熟妇高潮喷沈阳45熟妇高潮喷| 好男人好资源在线观看免费视频 | 欧美极品少妇XXX| 国产精品扒开腿做爽爽爽| 亚洲综合国产成人无码| 人妻妺妺窝人体色WWW聚色窝| 国产美女丝袜高潮白浆| 玉米地诱子偷伦初尝云雨孽欲| 日韩乱码人妻无码超清蜜桃丨 | 亚洲人成绝网站色WWW| 欧美一区精品视频一区二区| 国产欧美精品区一区二区三区 | 内射无码专区久久亚洲| 国产播放隔着超薄丝袜进入| 亚洲色精品AⅤ一区区三区| 欧洲洲一区二区精华液| 国产无套码AⅤ在线观看| 最新国产AV无码专区亚洲AVY| 天堂А√在线最新版中文在线| 久久久久久久久久久综合日本| 成 人 H动 漫在线播放日本| 亚洲国产精品久久青草无码| 欧美性猛交╳XXX乱大交| 国产怡春院无码一区二区| 99久久99久久精品国产片| 午夜精品射精入后重之免费观看| 美女黑人做受XXXXXⅩ性| 国产精华液一线二线三线| 在线播放免费人成毛片试看| 无码国产偷倩在线播放| 男男H黄动漫啪啪无遮挡网站| 国产免费AV片无码永久免费| 99久久国产宗和精品1上映 | 精品人妻A∨一区二区夫上司犯|