A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 闫玉泉 黑马帝   /  2012-1-7 23:14  /  3260 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 闫玉泉 于 2012-1-7 23:15 编辑

我今天用char竟然存了一个汉字,为什么?

7 个回复

倒序浏览
java  char就占两个字节啊  一个汉字不也是占两个字节  所以可以呗

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
java中char使用UTF-16编码, char占两字节,所以可以放汉字。
回复 使用道具 举报
Java不是C语言。所以。
回复 使用道具 举报
你应该是学过C或C++的吧,java中的char与C或C++中的char不同,在C/C++中,char是8位字符类型,用来存储ASCII标准字符集,而ASCII中自然是没有汉字的。而java中是使用Unicode来表示,Unicode定义了一个完全国际化的字符集,可以表示人类语言中发现的所有字符,比如拉丁文,希腊文,阿拉伯语,日文片假名,汉字等等,固然就需要更多位来表示这么多字符,所以java中char是16位类型,而英语法语,德语,西班牙语这样的语言的字符很容易包含在8位之内,所以虽然使用Unicode有点大材小用,但也是全球可移植性必须付出的代价。既然java中char是2个字节,所以你存入一个汉字是完全可以的。

评分

参与人数 1技术分 +2 收起 理由
admin + 2

查看全部评分

回复 使用道具 举报
char:char属于字符类型,在存储的时候用2个字节来存储,因为Java本身的字符集不是用ASCII码来进行存储,是使用的16位Unicode字符集,它的字符范围即是Unicode的字符范围,在变量初始化的时候,char类型的默认值为'u0000'。
一个汉字是两个字节,在java中当然就能用char类型变量存入一个汉字。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
小白 黑马帝 2012-1-9 09:46:52
7#
JAVA默认的编码是UNICODE,可以存储1个中文
回复 使用道具 举报
char型变量是用来存储Unicode编码的字符的,unicode编码字符集中包含了汉字,所以,char型变量中当然可以存储汉字啦。
不过,如果某个特殊的汉字没有被包含在unicode编码字符集中,那么,这个char型变量中就不能存储这个特殊汉字。
补充说明:unicode编码占用两个字节,所以,char类型的变量也是占用两个字节。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马