黑马程序员技术交流社区
标题:
关于char和字节的问题
[打印本页]
作者:
陈坚
时间:
2012-4-11 18:35
标题:
关于char和字节的问题
在c语言中,char china[]="china",它的字节是6个,而在java中
char china[]={'c','h','i','n','a'};
String str = new String(china);
byte[] bs = str.getBytes();
System.out.println(bs.length);//得到的结果是5
各位大侠解析一下,小弟不是很懂!
作者:
黑马张平
时间:
2012-4-11 18:41
一个字符在计算机中是一个字节,一个中文是计算机中是2个字节。
作者:
陈坚
时间:
2012-4-11 18:51
黑马张平 发表于 2012-4-11 18:41
一个字符在计算机中是一个字节,一个中文是计算机中是2个字节。
我的问题不是这个,我的问题是char china[]="china"在c语言中占用了内存6个字节其中包含'\0',而在java中就不是很清楚有没有这样的情况。
作者:
葛尧
时间:
2012-4-11 18:57
本帖最后由 葛尧 于 2012-4-11 19:02 编辑
C语言中 你没发现那是字符串么,字符串默认以\0结束的,所以是6
下面是是“字符型数组” 通过构造函数转成 新的“字符串”,然后再把“字符串”转成“byte[] 型数组”,然后打印的是这个byte[]数组的长度。。。china是5个字符,所以数组的长度就是5?。。
↑这个过程,有必要把\0也给数组吗?(其实我也没有深究。。)
作者:
陈扬
时间:
2012-4-11 19:10
因为C语言把字符串字面量作为字符数组来处理。当C语言编译器在程序中遇到长度为n的字符串字面量时,
它会为字符串字面量分配长度为n+1的内存空间,在末尾增加一个额外的字符——空字符(\0)。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2