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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

话说Java的字符占两个字节可是……且看下面
  1. class TestByte
  2. {
  3. public static void main(String[] args) {
  4. String a = "我";
  5. String b = "a";
  6. byte[] b1 = a.getBytes();
  7. byte[] b2 = b.getBytes();
  8. System.out.println("中文的byte");
  9. for (int i =0;i<b1.length ;i++ )
  10. {
  11.   System.out.println(b1[i]);//输出两个元素
  12. }
  13. System.out.println("英文的byte");
  14. for (int i =0;i<b2.length ;i++ )
  15. {
  16.   System.out.println(b2[i]);//输出一个元素
  17. }
  18. }
  19. }
复制代码
这是何解呢!!?关于字节和字符的了解实在欠缺,请大家多多指教!!!!

评分

参与人数 2技术分 +1 黑马币 +1 收起 理由
袁梦希 + 1 很给力!
Super_Class + 1 赞一个!

查看全部评分

6 个回复

倒序浏览
本帖最后由 Changer_s 于 2013-5-27 23:37 编辑

字符:二个字节
字节:一个字节
例:你现在要读一个汉字(以二个字节来存,既:一个字符)的“汉”。
        1.用字符流读:一次读二个字节,那么你就可以完全读取到它,并存到你想存的地方。
        2.用字节流读:一次读一个字节,那么你要读二次你才完全得读取到了这个汉字。不然就读取到了半个(一个汉字二个字节中的一个字节),那你说这半个(一个字节)是什么东西?我想这并不是你想要的吧。
还有一点挺有用的,就是在字符流中你可以一次读取一行(readLine()),这我想对于我们来说是一个不错的方法吧。

字符流:操作文本比较容易   
字节流:其余基本都行(例如:图片,电影。。。)  
为什么会是这样的应用?
比如:图片是奇数个字节,那么用字符就准确了,对吧?因为字符是偶数个字节嘛!
同理。。。。字节去解决这些未知大小的问题挺好的
当然文本相对而言:字符好一些,也就是一个汉字对应的一个字符(也就是两个字节);

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
简单的说:字节是计算机认识的,但字节只有8位,即最大为255,也就是最大只能有255个字符;
字符是我们人认识的,由于字符实在太多,所以不得不用多个字节来表示了。以满足需要!

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
一个汉字占两个字节,一英语字母占一个字节,他们都是字符,汉字比较特殊,记住就行了

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
你使用缓冲区的时候就该考虑了。

字符流用的缓冲区是 char []buf = new char[1024];
字节流用的缓冲区是 byte []buf = new byte[1024];

中文占两个字节是使用GBK这个码表。在utf-8中,中文占三个字节

如果你要输出的是中文,就不要转换成byte类型的。byte翻译过来就是字节。。。。

中文可以使用char [] c = a.toCharArray()将此字符串转换为一个新的字符数组。

然后再输入就可以解决了、






希望可以帮到你

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
了解~~多谢{:soso_e181:}
回复 使用道具 举报
楼主你好,如果帖子已经没问题了,那么把帖子的类型改为“已解决”。如果不会改看我的个性签名
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马