黑马程序员技术交流社区

标题: 关于字符和字节有点晕,请大家指点 [打印本页]

作者: 归☆夜↑『    时间: 2013-5-27 23:27
标题: 关于字符和字节有点晕,请大家指点
话说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. }
复制代码
这是何解呢!!?关于字节和字符的了解实在欠缺,请大家多多指教!!!!


作者: Changer_s    时间: 2013-5-27 23:32
本帖最后由 Changer_s 于 2013-5-27 23:37 编辑

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

字符流:操作文本比较容易   
字节流:其余基本都行(例如:图片,电影。。。)  
为什么会是这样的应用?
比如:图片是奇数个字节,那么用字符就准确了,对吧?因为字符是偶数个字节嘛!
同理。。。。字节去解决这些未知大小的问题挺好的
当然文本相对而言:字符好一些,也就是一个汉字对应的一个字符(也就是两个字节);
作者: ZhaoYuBetter    时间: 2013-5-27 23:59
简单的说:字节是计算机认识的,但字节只有8位,即最大为255,也就是最大只能有255个字符;
字符是我们人认识的,由于字符实在太多,所以不得不用多个字节来表示了。以满足需要!
作者: 张俊迪    时间: 2013-5-28 01:32
一个汉字占两个字节,一英语字母占一个字节,他们都是字符,汉字比较特殊,记住就行了
作者: Super_Class    时间: 2013-5-28 09:06
你使用缓冲区的时候就该考虑了。

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

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

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

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

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






希望可以帮到你
作者: 归☆夜↑『    时间: 2013-5-28 16:01
了解~~多谢{:soso_e181:}
作者: 袁梦希    时间: 2013-5-30 10:41
楼主你好,如果帖子已经没问题了,那么把帖子的类型改为“已解决”。如果不会改看我的个性签名




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2