java - String(byte[]) 是否创建字节数组的深拷贝?

标签 java arrays string

或者它只是获取对它的引用?

我有一个由外部库重写的字节数组 - 将其传递到 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/

相关文章:

arrays - julia 函数从元组数组中选择一个元组

python - 基于其他相同大小的数组过滤多维数组

c++ - 检查字符串是否包含另一个字符串算法?

java - 在 Kotlin 中测试非空参数

c++ - C++中的二维数组加法

C++ 字符串数组二分查找

regex - 如何使用 sed 获得所需的输出?

java - 需要一致的javac和java

java - 如何将Guava缓存发送到另一种方法时每30秒清空一次?

java - 在 Java 桌面应用程序中进行数据库访问的最佳方式