亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

字符串生成器為什么每次執行結果不一樣

字符串生成器為什么每次執行結果不一樣

水月心影鏡中花 2017-08-02 22:19:00
package?xuexi; import?javax.sql.rowset.spi.SyncFactory; public?class?Jerque?{ ????public?static?void?main(String[]?args)?{ ????????//?TODO?Auto-generated?method?stub ????????String?str?=""; ????????long?starTime?=?System.currentTimeMillis(); ????????for(int?i?=?0;?i?<?10000;?i++){ ????????????str?=?str?+?i; ????????} ????????long?endTime?=?System.currentTimeMillis(); ????????long?time?=?endTime?-?starTime; ????????System.out.println(time); ????????StringBuilder?builder?=?new?StringBuilder(); ????????starTime?=?System.currentTimeMillis(); ????????for(int?j?=?0;?j?<?10000;?j++){ ????????????builder.append(j); ????????} ????????endTime?=?System.currentTimeMillis(); ????????time?=?endTime?-?starTime; ????????System.out.println(time); ????} }請問我寫的和書上一樣,為什么結果不一樣?并且每次執行都不同。 書上的結果是第一個time為668,第二個time是2 System.currentTimeMillis()和append()這個是做什么用的? StringBuilder這個是專門用來重載字符串的么? 求大神指教,小子在此謝過了!
查看完整描述

3 回答

已采納
?
產品經理不是經理

TA貢獻481條經驗 獲得超143個贊

  1. 時間不一樣很正常。這個與你電腦有關。

  2. System.currentTimeMillis()是獲取當前時間與1970年凌晨之間的毫秒數。append()是StringBuilder類的一個方法,追加字符串。

  3. 不是重載字符串。它是可變字符串,String類是不可變字符串,使用StringBuilder類可以減少多余的字符串,節省內存空間。

查看完整回答
反對 回復 2017-08-02
?
淺笑若風

TA貢獻6條經驗 獲得超1個贊

  1. 毫無疑問結果肯定不一樣,因為使用System.currentTimeMillis()這個是按照毫秒數級別計算,與你的計算機本身的計算性能有關系。

  2. 上面的代碼目的在于比較String 和StringBuffer 的計算開銷能力,String 的存儲能力不及StringBuffer ,所以每次循環增加一個字符長度的是需要重新劃去一塊內存空間存儲,而StringBuffer不一樣,他的存儲空間比String大的太多,不許要開辟新的空間,所以計算速度比較快,兩者之間的差別在于String適應用于比字符段較小數據的存儲計算,而StringBuffer適用于大的數據存儲計算。

  3. System.currentTimeMillis()獲取當前時間毫秒數按照樓上多說的那種從1970 年的那個基數計算,append()方法則是通過追加的方式去添加一個字符串。

  4. StringBuilder 是一個數據類型,看上面說的你就知道了。

查看完整回答
反對 回復 2017-08-02
  • 3 回答
  • 0 關注
  • 1792 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號