六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 41|回复: 0

java Char、byte的理解

[复制链接]

升级  16%

2

主题

2

主题

2

主题

童生

Rank: 1

积分
8
 楼主| 发表于 2013-2-3 14:43:37 | 显示全部楼层 |阅读模式
最近看了一个面试题是这样的:
   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")使用,指定了编码格式,就不根据默认的取得了。
 
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表