Java 是否将字符串定义为空终止?

2022-09-04 19:21:43

正如我的标题所暗示的,这是一个理论问题。我想知道,如果java将字符串定义为空终止。


答案 1

我想知道,如果java将字符串定义为空终止。

否。字符串被定义为固定长度的值序列。所有可能的值(从 0 到 65535)都可以在字符串中使用。没有“可分辨”值意味着字符串以1 结尾。charchar

那么他们如何跟踪字符串结尾呢?使用长度?

是的。一个对象有一个私有字段(在我检查过的所有实现中...)。Stringlength

如果您想了解有关Java字符串如何实现的更多信息,可以在线获得各种版本的源代码。Google for “java.lang.String source”.


1 - 如前所述,无论是 JLS 还是 String 的 javadocs,都不是字符串实现不能使用 NUL 终止。但是,包括 NUL 在内的所有字符在字符串中都很重要这一事实意味着 NUL 终止是不切实际的。


答案 2

Java 字符串不会像 C 或 C++ 中那样以空字符结尾。虽然java字符串在内部使用char数组,但没有终止null。String 类提供了一个名为 length 的方法,用于了解字符串中的字符数。

下面是简单代码及其调试器内容:

public static void main(String[] args) {
    String s = "Juned";
    System.out.println(s);
}

调试器屏幕截图:

enter image description here