为什么下面输出都是4呢? 那只是具体编码方式的不同具体的每一个字符编码方式不一样length是说这个数组里面有多少个元素而不是说占用了多少空间 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 一共只有四个字符,数组的长度都是4.与"byte是8位的,char是16位的"无关. 难道String转换成byte[]时和转成char[]不是按照位数转的吗?都是4个元素的话,每个元素存放什么呢?特别是byte[]中 byte[]中是a,l,i,n对应的ascii 为什么不是Unicode码? char[] ch = st.toCharArray(); byte[] by = st.getBytes(); //长度为什么会一样? System.out.println("" + ch[0]); System.out.println("" + (char)by[0]);outPut:aaascii正好能放在8位里面,要是16位的Unicode,byte类型就放不下了啊 你们没明白我的意思啊: String st = "我是谁"; char[] ch = st.toCharArray(); byte[] by = st.getBytes(); System.out.println("" + ch.length); System.out.println("" + by.length);output:36难道跟acsii重复的字符都用8位的表示,不重复的象汉字用16位unicode表示??好奇怪啊 双字节编码的字符都要用两个byte啊所以如果你把by数组一个一个输出来那会发现不是中文~~~~因为要两个才能出来一个中文 可是在java里英文字母也是用unicode表示的啊?难道是单字节的? 求解:java中的拆箱装箱和多态性中对象向上转型向下转型是不是一个意思? JAVA中类的方法在内存中存放在哪? 如何去除反编译的注释 问个愚蠢的问题 scjp关于线程问题,高手进!! 关于静态初始化块(static initialization block)执行先后顺序的一个怪异现象 Jdbc连接到Ms sqlserver2005问题,照顾不到类库 请那位高人给讲讲java Thread的内部机制 谈谈内类的使用以及技巧! 用回溯法解实际问题 Linux下到底如何设置JDK的环境变量 关于JSP或java application连接WEBLOGIC中"连接池"!
char[] ch = st.toCharArray();
byte[] by = st.getBytes();
//长度为什么会一样?
System.out.println("" + ch[0]);
System.out.println("" + (char)by[0]);outPut:
a
aascii正好能放在8位里面,要是16位的Unicode,byte类型就放不下了啊
String st = "我是谁";
char[] ch = st.toCharArray();
byte[] by = st.getBytes();
System.out.println("" + ch.length);
System.out.println("" + by.length);
output:
3
6难道跟acsii重复的字符都用8位的表示,不重复的象汉字用16位unicode表示??好奇怪啊
都要用两个byte啊
所以如果你把by数组一个一个输出来
那会发现不是中文~~~~
因为要两个才能出来一个中文