黑马程序员技术交流社区

标题: 关于字符和字节 [打印本页]

作者: 那得好好想想    时间: 2013-11-4 17:51
标题: 关于字符和字节
看到String里有两个方法,分别是toCharArray() 和 getBytes() ,这两个方法都返回一个数组,一个是字符类型的,一个是字节类型的。有一些疑问 ,用getBytes() 返回的数组里面每个都是字节码,例如String str=“aa”; 那么返回数组就是97 97。为什么String类型里要有一个返回字节数组的方法呢?如果用toCharArray() 方法完全可以将aa转换成字节码呀。何必要两个方法。
所以联想到字节码和字节类型又是什么关系?
字节型又该如何理解? 例如:char ch='1';  这个1该如何理解?
请指导!

作者: 胡志翔    时间: 2013-11-4 17:57
在之后学习的网络编程里,数据传输都以字节型传输的,字节数组byte[]应用很频繁的。
作者: 李慧声    时间: 2013-11-4 18:21
首先纠正一个错,'a'所对应的的97,是'a'在unicode码表中对应的编码值,而不是字节码,字节码在java中有特殊的含义--》.class文件,你可以叫做字节编码,但不能叫字节码。
其次,那么你想,人家设置两个方法肯定是有道理的,肯定是针对不同的需求上来做的。
        从返回值类型上就可以看出一点端倪吧,getBytes()---》返回值字节数组,字节,这玩意儿,我们在计算机内存中直接操作的的二进制吧,一个字节就是8个二进制位吧,离底层进吧,效率高吧;tocharArray(),返回值是char数组,每个元素是一个char,两个字节吧,解析相对byte复杂吧,而tocharArray()更多的用来对str进行一系列遍历等等的操作。
再者,如果str是一个中文呢,比如“帅哥好衰啊”,对于这种你想获取里面的每一个'帅','哥','好','衰','啊'能用getBytes()来做吗,显然不行吧,会乱码吧,每一个汉字都是两个字节吧,只能用tocharArray()吧,原理就在这里。
其实总结之,就可以说是:看需求是什么,是操作字节方便呢,还是字符方便呢,看情况而定,当然操作字节的话会效率高一点~~~
个人理解,希望帮助到楼主。~





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