为什么C需要null零作为字符串终止符而Java不呢?

edh*_*dhu 2 c java

我注意到,当我创建一个字符数组来保存CI中的字符串时,总是需要在结尾添加一个空零作为终结符.例如:

char Month[10];
Month[0] = 'M';
Month[1] = 'a';
Month[2] = 'r';
Month[3] = 'c';
Month[4] = 'h';
Month[5] = '\0';
Run Code Online (Sandbox Code Playgroud)

这里我需要添加Month[5] = '\0'以使char数组显示正确的结果.如果我忽略零值,它将给出结果March_\377.但是在Java中我仍然可以在March不添加null零的情况下获得.我想知道C和Java如何以不同的方式处理这种情况?

Lrr*_*rrr 7

在Java中,我们有一个名为的类String,它有一个名为的方法length().

在C语言中,您需要\0在字符串的末尾添加一个字符串,以便知道字符串的结尾.但是在Java中,这个问题是用这个方法处理的length().


Gre*_*man 5

在C中没有类型string,只有一个指向a的指针char.在C语言中,您需要一个字符串,您需要知道字符串中有多少个字符,或者有一个指示符,表明您已到达字符串的末尾.

传统上,这种要求有两种方法.在C世界中,约定是用\0字符终止字符串.在PASCAL世界中,约定是使用另一个变量来存储字符串的长度.

Java使用PASCAL约定并将字符串的长度存储在另一个变量中作为字符串的内容.

这两种方法都有其优点.在Java/PASCAL世界中,很容易知道字符串的长度,字符串可以包含\ 0字符.在C中,您可以为尾部子串等重用相同的字符数组.