簡體   English   中英

為什么使用char []而不是String?

[英]Why use char[] instead of String?

在第146行的Thread.java中 ,我注意到作者使用了char[]而不是String字段。 有沒有我不知道的性能原因? getName()還在返回名稱之前將字符包裝在String中。 使用String不是更好嗎?

一般來說,是的。 我懷疑char[]是出於性能原因而在Thread中使用,早在Java中的這些東西需要盡一切努力才能獲得不錯的性能時。 隨着現代JVM的出現,這種微優化早已變得不重要,但它只是一直保持這種狀態。

在舊的Java 1.0時代源代碼中有很多奇怪的代碼,我不會過分關注它。

很難說。 也許他們考慮了一些優化,也許編寫這段代碼的人只是更習慣於字符串的C風格char*數組,或者可能在編寫代碼時他們不確定字符串是否是不可變的。 但是使用這段代碼, Thread.getName()調用Thread.getName() ,都會創建一個新的char數組,因此這個代碼實際上比使用字符串更重。

也許原因是安全保護? 可以使用反射更改字符串,因此作者希望在讀取和寫入時進行復制。 如果你這樣做,你也可以使用char數組來加快復制速度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM