我有以下 C 或 C++ 常量:
static const char *selstr2 = "oooo"
"oC o"
"o o"
"oooo";
现在我不明白在 Java 中与此类似的是什么。它是 Java String 还是 String[]?
最佳答案
首先,请注意,在这种情况下,您的 C 风格字符串在取消混淆多行表示和连续 ""
的串联行为时是等效的。在这种情况下,
static const char *selstr2 = "oooooC oo ooooo";
selstr2
是指向 char[17]
的指针C 中的文字和 const char[17]
C++ 中的字面量衰减 为 const char*
指针类型。注意这里 C 和 C++ 的重要区别:虽然类型不是 const
在 C 中,您仍然无法修改内容。
您可能会认为这等同于 java.lang.String
.但它不在两个重点上:(1) Java 字符串更宽;它们由 Java char
组成类型,它们是 16 位无符号类型。并且 (2) NUL 终止符未指定、隐含,甚至可能不存在。
因此我会说 java.lang.String
更接近于 C++ std::basic_string<std::uint16_t>
使用 UTF-16 编码,并且 C 风格的字符串在许多方面最接近 Java 中的字节数组,只是在末尾多了一个 0。
说了这么多,你可能会发现
static final java.lang.String selstr2 = "oooooC oo ooooo";
将符合目的,除非您打算在两种语言之间进行互操作。
关于java - 将 C 或 C++ 常量转换为 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48943433/