java - java中字符串可以包含<0x00>以及指定的值吗

标签 java string

如果我声明一个字符串,该字符串是否有可能包含 <0x00>以及分配的数据?

例如:

String s = "Stack";

字符串结果可以是:

Stack<0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00>

最佳答案

是的,如:

String s = "Stack\u0000\u000";

这与 C/C++ 不同,在 C/C++ 中,字符串以 '\0' 字符终止。

如果必须将字符串作为字节数组传递给 native 代码,java 有一个可用于 UTF-8 的技巧, 修改后的 UTF-8,还将 '\u0000' 转换为多字节序列:DataOutputStream.writeUTF(String)

请注意,XML 中不允许使用 \u0000(与其他一些控制字符一样)。

顺便说一句,0 字符串终止符被其发明者认为是 C 语言中最大的错误。它还影响了处理器指令集。

关于java - java中字符串可以包含<0x00>以及指定的值吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59879526/

相关文章:

Java:如何使用 java.awt.Desktop 发送 html 内容

java - 为什么我一直在服务器上获取对象引用,而它在本地系统上运行良好

java - Cassandra 无法创建 Java 虚拟机

java - 对文本文件使用 useDelimiter()

java - 字符串中第 N 次出现的字符并获取值

c++字符串操作指针,中间为空

c# - 如何删除字符串中的\n?

python - 如何在Python中从文件列表中提取字符串?

javascript - 在 Javascript 中匹配一个词后查找下一个词

java - java中FTPClient类的问题