首页 > 试题广场 >

语句:char foo='中',是否正确?

[单选题]
语句:char foo='中',是否正确?(假设源文件以GB2312编码存储,并且以javac – encoding GB2312命令编译)
  • 正确
  • 错误
推荐
Java语言中,中文字符所占的字节数取决于字符的编码方式,一般情况下,采用ISO8859-1编码方式时,一个中文字符与一个英文字符一样只占1个字节;采用GB2312或GBK编码方式时,一个中文字符占2个字节;而采用UTF-8编码方式时,一个中文字符会占3个字节。

在C++中

在C++中,char是基础数据类型,8位,1个字节byte不是基础数据类型,一般是typedef unsigned char byte;这样子的,也就是说,byte其实是unsigned char类型,那么也是8位,1个字节。不同的是,char可以表示的范围是-128-127,而byte可以表示的范围是0-255。

在Java中

在java中,char和byte都是基础数据类型,其中的byte和C++中的char类型是一样的,8位,1个字节,-128-127。但是,char类型,是16位,2个字节 '\u0000'-'\uFFFF'。

为什么java里的char是2个字节?

因为java内部都是用unicode的,所以java其实是支持中文变量名的,比如string 世界 = "我的世界";这样的语句是可以通过的。

综上,java中采用GB2312或GBK编码方式时,一个中文字符占2个字节,而char是2个字节,所以是对的
编辑于 2019-01-25 10:29:34 回复(7)
答案:A
这在java中是正确的,在C语言中是错误的,java的char类型占两个字节,默认使用GBK编码存储。这种写法是正确的,此外java还可以用中文做变量名。
编辑于 2019-01-25 10:29:34 回复(12)
这道题应该和GB2312编码关系不大吧。即使用UTF-8来存储和编译,也是正确的。(’中‘字在UTF-8中是三字节的)
我的个人看法是:这里的’中‘应该是不管用什么编码方式存储,赋值给char变量后都会先转换成对应的unicode的序号\u4e2d,(知道了项目原编码方式,以及某个字符,然后按对应规则转--见下文a)之后再用UTF-16BE来作为\u4e2d这个字符编码的存储方案。
因此,只要是utf-16be能表示的unicode编码都是可以成功的,与java文件本身的字符编码无关系。
--a:比如,’中‘在gbk中的编码是d6d0,那当赋值给char类型时,java知道这是gbk字符集下表示的’中‘,那就能通过对比gbk和unicode,找到d6d0对应的是\u4e2d.同理,utf-8的’中‘虽然是占了三个字节,但java只会直接把它转成对应的unicode编码,再转成utf16be表示,与它是几个字节无关。
发表于 2016-08-31 23:08:29 回复(7)
A.在Java中,char类型占两个字节,一个汉字也占两个字节,所以是正确的。
发表于 2015-08-21 15:29:29 回复(0)
ISO 中文占一个字节,gb2312,gbk占2字节,UTF-8 占3个字节
发表于 2022-01-04 08:38:43 回复(0)
char占两个字节,GB2312编码的汉字也占2个字节,答案正确。而用utf-8编码的汉字占3个字节,就不对了
编辑于 2019-03-12 00:01:29 回复(0)
gbk和gb2312中一个英文和一个中文都占两个字节。iso8859-1中中文和英文都只占一个字节。utf-8中一个中文占三个字节,数字字母各占一个字节
编辑于 2018-10-13 19:45:20 回复(1)
Demo.java==>用utf-8保存==》编译时,这个文件是字节流,因此必须用对应的utf-8解码成本来的字符==》接着按Unicode编码成字节(内存中)==》因此解码可用任意字符编码
发表于 2017-09-07 23:05:26 回复(0)
为什么这么多人说正确啊,你们确定测试通过了吗?懵了懵了
发表于 2018-03-22 11:18:12 回复(4)
在GB2312编码格式中,一个汉字占2个字节,而char类型也是两个字节,所以正确
发表于 2021-08-18 23:25:20 回复(0)
这里的源文件编码和操作系统内部的编码是两回事吧,之所以能存放中文到char类型中,肯定是因为char类型是两个字节。 就像'中',无论你使用什么编码,它都不能用一个字节存下。 编码指的是编码表,就是将二进制与字符进行映射。 乱码就是因为存储的时候按照某一个编码将字符转换为二进制,而在进行读取的时候使用了其它的编码将二进制转化为字符,这时,两种编码方式字符和二进制的映射不一样,就产生了乱码。 变量可以使用中文只是因为编译器识别,因为变量名经过编译后就成了一个个相对地址,变量名又不会出现在编译后的二进制文件中。 还有各种编码 ascii 最基本的一种编码方式,一字节8位可以表示从0到127的数,ascii就是将简单的数字字母和符号与0到127的8位二进制建立一个映射 gb2312 简体中文的编码方式 BIG5 繁体中文的编码方式 gbk 亚洲所有文字的编码方式 unicode 所有国家文字的编码方式,万国码 utf-8 可变长度的万国码
发表于 2019-01-13 17:49:15 回复(0)
B
发表于 2014-10-27 10:41:26 回复(0)
发表于 2020-03-12 22:58:42 回复(0)
ISO8859-1编码,一个中文字符和一个英文字符一样只占一个字节。GBK或者GB2312编码,一个中文字符占两个字节。UTF-8编码,一个中文字符占3个字节。而在Java中,一个char只有一个字节,所以无法显示GB2312下的中文。
发表于 2018-10-13 09:33:25 回复(1)
java的char类型占两个字节,默认使用GBK编码存储。这种写法是正确的.
发表于 2016-11-08 19:31:35 回复(0)
答案:A 这在java中是正确的,在C语言中是错误的,java的char类型占两个字节,默认使用GBK编码存储。这种写法是正确的,此外java还可以用中文做变量名。
发表于 2016-08-14 20:25:08 回复(0)
utf-8是3个字节
发表于 2015-04-16 17:42:12 回复(0)
Java内部使用Unicode来表示字符,不管源代码文件使用什么编码方式存储,只要在编译时指定了正确的编码参数,编译器都能正确地将源代码文件中的字符转换成Unicode字符。因此,无论是GB2312还是UTF-8编码,只要编译时指定了匹配源文件编码的 -encoding 参数,char 类型的变量都能正确地存储中文字符。
发表于 2023-11-29 11:15:41 回复(0)
java中的char类型占两个字节
发表于 2022-10-19 00:04:48 回复(0)
在GB2312编码格式中,一个汉字占2个字节,而char类型也是两个字节,所以正确
发表于 2020-07-07 14:35:59 回复(0)
如果用gb2312保存之后再转换成utf-8保存,编译代码会报错
编辑于 2023-09-19 16:31:02 回复(0)