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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 那得好好想想 中级黑马   /  2013-11-4 17:51  /  1145 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

2 个回复

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

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马