或者它只是获取对它的引用?
我有一个由外部库重写的字节数组 - 将其传递到 String 构造函数是否安全,或者我应该先创建一个克隆?
byte[] b = MagicLib.getData();
String s = new String(b);
// actually a pointer to previous memory, just with different data
b = MagicLib.getMoreData();
最佳答案
String
包含一个 char
数组,而不是 byte
数组。因此,String
无法共享byte
的存储。
此外,请注意,byte[]
将根据平台默认字符集解码为字符(根据 String(byte[])
的文档),其中进一步暗示必须单独构造 byte[]
数组的解码版本。
关于java - String(byte[]) 是否创建字节数组的深拷贝?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25429815/