字节与字符及java中char与数据库中char的区别

最近工作遇到字节与字符,就有认真总结了一下。

1.字节

    字节是计算机信息科技用于计量存储容量的一种计量单位,也表示一些计算机编程语言中的数据类型和语言字符。

    1个等于字节是8个bit位每个bit位又0/1两种状态也就是说一个字节可以表示256个状态,计算机里用字节来作为最基本的存储
单位。一般来说,英文状态下一个字母或数字(称之为字符)占用一个字节,一个汉字用两个字节表示。

2.字符
字符是指计算机中使用的字母、数字、字和符号,一个字符是一个单位的字形、类字形单位或符号的基本信息

3.不同编码下的字符与字节

其实不同编码下相同汉字、字符占有的字节数也不相同

如:在 ASCII 编码中,一个英文字母(不分大小写)占一个字节的空间,一个汉字占两个字节的空间。一个二进制数字序列,在计算机中作为一个数字单元,一般为8位二进制数,换算为十进制。最小值0,最大值255。如一个ASCII码就是一个字节


GBK编码,一个英文字符占一个字节,一个汉字占两个字节。


UTF-16编码,一个英文字母字符或一个汉字字符存储都需要2个字节(Unicode扩展区的一些汉字存储需要4个字节),通常汉字占两个字节,CJKV扩展B区、扩展C区、扩展D区中的汉字占四个字节(一般字符的Unicode范围是U+0000至U+FFFF,而这些扩展部分的范围大于U+20000,因而要用两个UTF-16)。

UTF-8编码是变长编码,通常汉字占三个字节,扩展B区以后的汉字占四个字节。而一个英文字母字符存储需要1个字节


在UTF-32编码中,世界上任何字符的存储都需要4个字节。

ISO-8859-1里面汉字占了6个字节
 
GB-2312中,一个英文字符占一个字节,一个汉字占两个字节。


Unicode编码:一个英文等于两个字节,一个中文(含繁体)等于两个字节


符号:英文标点占一个字节,中文标点占两个字节。举例:英文句号“.”占1个字节的大小,中文句号“。”占2个字节的大小。


4.Java中的char与数据库中的char

      java采用unicode,所以一个字符占2个字节,char类型的一个数字或英文或汉字都是一个字符,只不过数字和英文时,存储的2个字节的第一个字节都为0,就是浪费了点空间。存汉字就占满了2个字节

    数据库中char 的单位长度是1个byte,CHAR(15) 就是能装15个字节的内容。另外char定长字符型不足会自动补充空格,填满15个字节,而varchar是变长型字符数据类型,非Unicode的字符数据,存储最长长度为8,000 个字符,不会自动填充


5.char与varchar的区别

   (1)char的长度是固定的,而varchar的长度是可以变化的

   (2)char的效率比varchar的效率稍高









你可能感兴趣的:(Java基础)