如何实现StringBuilder以避免不可变的字符串分配问题?

时间:2019-01-03 14:01:21

标签: java string stringbuilder

如何实现git:https://<user2>@github.com以避免不变的字符串分配问题?

Control Panel\User Accounts\Credential Manager

2 个答案:

答案 0 :(得分:5)

通过使用char数组。您可以在JDK源代码中看到这一点。在JDK 1.8(我很方便的源代码)中,StringBuilder建立在AbstractStringBuilder的基础上,使用char[] value; int count; 来保存数据:

byte

({Karol Dowbecki says,JDK 9“有时”使用char而不是count;我没有理由怀疑他。:-))

value告诉类char[16]中有多少是实际数据,而数组中只有可用空间。它以toString开始(除非您事先告知您可能需要的容量),然后根据需要重新分配和复制。

它仅在调用byte[]时使用String(char[],int,int) constructor(或可能接受public String toString() { // Create a copy, don't share the array return new String(value, 0, count); } 的人,有时是JDK9)创建一个字符串,以复制数组内容的一部分。实际使用的:

import webbrowser
webbrowser.open_new('https://www.msn.com')
webbrowser.open_new_tab('https://www.aol.com/')

答案 1 :(得分:2)

它在幕后使用char[](或JDK 9或更高版本中的byte[])来存储字符。仅在调用StringBuilder.toString()之后创建新的String对象。