[英]Why PasswordField use String instead of char[] in Vaadin?
[英]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.