当前位置: 技术问答>java相关
关于数据类型的问题
来源: 互联网 发布时间:2015-04-24
本文导语: 我要把一些char加入到StringBuffer中,到底占用几个字节??? 请看一下程序: StringBuffer buf=new StringBuffer(); char ch=40; buf.append(ch); byte[] arr=buf.toString().getBytes(); System.out.println(arr.length); 输...
我要把一些char加入到StringBuffer中,到底占用几个字节???
请看一下程序:
StringBuffer buf=new StringBuffer();
char ch=40;
buf.append(ch);
byte[] arr=buf.toString().getBytes();
System.out.println(arr.length);
输出结果是1,但是当ch赋值大于256时,有时输出结果是1,有时是2,比喻说,当ch=257时输出是2,ch=258时输出是:1,ch=333时输出是:2,为什么????
我现在用java写一个客户端程序,需要和c++写的服务器通讯,发送和接收一些结构体,其中包括short,char等类型,我想把这些数据都转化成一个字节数组,然后一起发送出去,但是如果如果其中的各种类型长度不定的话,在服务器端就没法转换了,谁能给我一个解决的方法吗??先谢了!!!!!!
请看一下程序:
StringBuffer buf=new StringBuffer();
char ch=40;
buf.append(ch);
byte[] arr=buf.toString().getBytes();
System.out.println(arr.length);
输出结果是1,但是当ch赋值大于256时,有时输出结果是1,有时是2,比喻说,当ch=257时输出是2,ch=258时输出是:1,ch=333时输出是:2,为什么????
我现在用java写一个客户端程序,需要和c++写的服务器通讯,发送和接收一些结构体,其中包括short,char等类型,我想把这些数据都转化成一个字节数组,然后一起发送出去,但是如果如果其中的各种类型长度不定的话,在服务器端就没法转换了,谁能给我一个解决的方法吗??先谢了!!!!!!
|
Yes, char is indeed a 16-bit value. However, the actual answer is in the
Java
Language Specification, section 5.6.2, which is at the following URL:
http://java.sun.com/docs/books/jls/second_edition/html/conversions.doc.html#170983
Java
Language Specification, section 5.6.2, which is at the following URL:
http://java.sun.com/docs/books/jls/second_edition/html/conversions.doc.html#170983
|
java的语法声明char本身长度为2个字节,它是为unicode量身定做的。应该按照2个字节来算。
|
2个字节!
|
是两个字节,char在java中unicode表示
2字节=16bit。
2字节=16bit。
|
看看UNICODE、UTF-8的东东吧。
|
char的长度与编码是有关的:
gb2312或GBK中有两字节或一字节,
在UTF-8中都是两个字节,
在iso8859-1中是一个字节,
使用buf.toString().getBytes("UTF-8"),长度都是两字节。
gb2312或GBK中有两字节或一字节,
在UTF-8中都是两个字节,
在iso8859-1中是一个字节,
使用buf.toString().getBytes("UTF-8"),长度都是两字节。