读书人

java Char、byte的懂得

发布时间: 2012-12-25 16:18:28 作者: rapoo

java Char、byte的理解

最近看了一个面试题是这样的:

?? char 是否能存储一个中文字符,为什么?

?

char类型一般占用两个字节,所以能存储中文字符(一个中文字符占用两个字节)。

???????? char a = '中' ;(合法)?? char a = 'ab' ;(非法的)

?????? 所以char类型在内存中占用两个字节空间,但是只能表示一个字符。若是只要表示一个字节的字符,可以考虑byte。

?

byte表示字节,占用内存一个字节的空间。

??????? byte a = 'a' ;(合法)??? byte a? = '中' ;(非法的,不能存放中文字符)

?

另外:1 byte = 8 bit (bit就是0和1的一个位数,8bit表示一个字节)

?

String str = "中" ;

byte[]? a = str.getBytes();

System.out.println(a.length); //打印出多长?

?

result:可能2,3,4.

原因是getBytes()方法会根据当前默认的字符编码格式获取字节数组,gbk/gb2312占2位,utf-8占3位,unicode占4位(很多地方看见别人说是占两位,但是亲测出来的结果是4,求解!)

?

可以str.getBytes("GBK"),str.getBytes("UTF-8")使用,指定了编码格式,就不根据默认的取得了。

?

1 楼 木头会跑步 2012-05-30 关于unicode的问题,可以看看这篇文章,我觉得他写的很好~

http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html

读书人网 >编程

热点推荐