字符char、字节byte傻傻分不清(2015年10月13日)

字符char

字节byte

一直都有个概念性的错误:

说char能存放两个字节,中文汉字一般占两个字节,一个字母占一个字节,所以有

char a = 'bc';

但事实这样会报错。

因为:因为Java的字符是用的Unicode编码,Unicode编码是中文和字母都是两个字节的,所以这跟java编码相关。

而java采用Unicode编码的原因是,Java的Applet允许全世界范围内运行,那它就需要一种可以表述人类所有语言的字符编码,瞬间感觉好高大尚。

byte字节类型是JAVA中最小的数据类型,它在内存中占8位,取值范围从-128到127,

赋值:byte i = 127;
注:byte型在赋值时,一旦超过127或小于-128,则会产生编译错误。


char字符类型在内存中占2个字节。表示一个字符,也可以使用A SCII码范围内的值来给char型的变量赋值。由于字符在内存中的取值不存在负数范围,所有取值范围从0到655 35。

赋值:char i = 'a'; 或者 char i = 97;

再来个问题(百度看到的哈):

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,求解!)

亲测之后,gbk编码状态下结果为2,utf-8编码状态下结果为3。



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值