1:“字节”是byte,“位”是bit ;
2: 1 byte = 8 bit ;
char 在java中是2个字节。java采用unicode,2个字节(16位)来表示一个字符。
代码如下:
public class Test {
public static void main(String[] args) {
String str= "中"
char x ='中'
byte[] bytes=null
byte[] bytes1=null
try {
bytes = str.getBytes("utf-8")
bytes1 = charToByte(x)
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace()
}
System.out.println("bytes 大小:"+bytes.length)
System.out.println("bytes1大小:"+bytes1.length)
}
public static byte[] charToByte(char c) {
byte[] b = new byte[2]
b[0] = (byte) ((c & 0xFF00) >> 8)
b[1] = (byte) (c & 0xFF)
return b
}
}
结果如下:
bytes 大小:3
bytes1大小:2
首先,java中的一个char的确是2个字节。java采用unicode,2个字节来表示一个字符。一个数字或英文或汉字都是一个字符,只不过数字和英文时,存储的2个字节的第一个字节都为0,就是浪费了点空间。存汉字就占满了2个字节。
因为java中的char是两个字节的,所有可以用来存储中文(一个中文也是两个字节),而在c语言中char只是一个字节,所有不能用来存储中文,要想存储中文,只能用字节数组。java的基本数据类型长度
* byte:1
* short:2
* int:4
* long:8
* boolean:1
* char:2
* float:4
* double:8
c的基本数据类型长度
* short:2
* int:4
* long:4
* char:1
* float:4
* double:8