java将字符串定义为null终止吗?

时间:2013-08-24 04:17:56

标签: java string null

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

3 个答案:

答案 0 :(得分:8)

  

我想知道如果java将string定义为null终止。

没有。 String被定义为char值的固定长度序列。可以在字符串中使用所有可能的char值(从0到65535)。没有“distinguished”值表示字符串结束。

  

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

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

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

答案 1 :(得分:5)

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

答案 2 :(得分:1)

重要吗?

如果将Java字符串转换为某种序列化格式(在磁盘,网络等上),那么重要的是序列化格式,而不是JVM的内部格式。

如果您是通过JNI读取C代码中的字符串数据,那么您永远不会直接读取数据,而是始终使用JNI函数,如GetStringChars()GetStringUTFChars()GetStringChars()未记录为返回以null结尾的数据,因此您不应假设它以空终止 - 您必须使用GetStringLength()来确定其长度。与GetStringUTFChars()类似,您必须使用GetStringUTF8Length()modified UTF-8 format中确定其长度。