日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

自动化测试学习之路--java String、StringBuilder

發布時間:2024/4/15 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 自动化测试学习之路--java String、StringBuilder 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Java中的String和StringBuilder類:

1.String對象是不可變的。每一個看起來修改了String值的方法,實際上都是創建了全新的String對象。代碼示例如下:

String str12="abc";str12.toUpperCase();System.out.println(str12);

上面程序輸出結果為 abc

str12.toUpperCase();該方法是將str12大寫,但實際上是給大寫之后的字符串重新開辟了空間,絲毫不會影響str12的值。

在計算機的程序設計中,對字符串的操作是非常頻繁的。為了提高效率,不會為每一個字符串都開辟空間。相當于一個“拘留池”,創建的字符串變量都存儲在拘留池中,當有新的String變量時,jdk會先判斷
一下,拘留池中是否已經存在該字符串。如果有,直接將變量的引用指向該字符串,如果沒有才會去開辟空間。
注意:
這個拘留池效應,只針對非new出來的字符串,如果是String str=new String("abc");那么不管拘留池中是否已經存在“abc”這個字符串,都會給重新開辟空間。因為這個語句的執行順序是:先為abc開辟
一個空間,然后再將str這個引用指向這個空間。

2.我們在程序中經常會寫

System.out.println("a"+1+"b");

這里深入講解一下,重載操作符“+”;

1.println()是將括號內的值轉換成string字符串,然后輸出的。其實就是去調用toString()方法。

2.當有"+"這個重載操作符的時候,編譯器會自動創建StringBuilder對象來處理括號內的字符串操作。

  這里稍微分析下,為什么編譯器會這么干:因為String是不可變的,當我們每次給字符串“a”連接一個字符串“b”的時候,必然需要重新開辟一個新的空間,然后將值copy進去。效率低,還會產生需要垃圾回收的一系列對象。因此這里最好使用可變的StringBuilder對象來處理。

3.這里介紹下StringBuilder:

  它是可變的,當需要增加某個字符串長度的時候,直接append就可以了。

  當使用StringBuilder str=new StringBuilder()這個無參構造函數來創建StringBuilder對象的時候,會默認創建長度為16的char[]類型的數組。當你調用append()方法追加的字符串長度大于16的時候(str.length=19),就會需要重新開辟空間。此時內部會將value的值左移+2(如當前是16,二級制是10000,左移之后就是100000(對應10進制數是32),32+2=34),比較value左移+2的值與當前字符串長度與新追加的字符串長度之和,誰的值比較大就取這個大的值去開辟相應的空間長度。

  因為默認開辟的空間只有16個字符大小,在我們還用StringBuilder對象的時候,如果超出這個長度就需要重新開辟空間,就失去了StringBuilder的優勢。所以,當我們可以大致確定所需要的字符串長度時,建議使用StringBuilder(XXX)這個構造函數,用來減少重新分配的次數,提升性能。

?

轉載于:https://www.cnblogs.com/clairejing/p/9247068.html

總結

以上是生活随笔為你收集整理的自动化测试学习之路--java String、StringBuilder的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。