java编码-简说

1.String底层在JDK9以后使用字节数组来存储字符串,在JDK8及以下使用char[]来存储字符串。并且均被final修饰

  • 为什么要修改字符为字节?节省空间,字符占据两字节,字节占用一个字节

(char是字符,一个字符占两个字节)

2.Java 语言使用 Unicode 字符集,Unicode 为每一个字符都分配的一个唯一的数字,即 这个数字便代表与之对应的字符。

 

Java中的字符(char)

  • 下面的程序打印一个字符 ‘楠’ 字:
public class Temp_3 {
	public static void main(String[] args) {
		System.out.println('楠');
		System.out.println((char)26976);
		System.out.println('\u6960');
	}
}

运行结果为:

楠
楠
楠

 

3.Unicode 只是一个字符集,它为每个字符分配一个唯一的数字,从而可以用数字来表达字符,而 UTF-8 是一种编码方式,描述怎样实际存储Unicode 字符对应的数值

4.当变为.class文件时,就可以跨平台使用了(不同平台的使用编码不同),因为已经完成了从UTF-8编码的文件转成与平台无关的.class文件了,也就是说已经把根据UTF-8编码方式转成了Unicode。

 

5.Unicode为世界上所有字符都分配了一个唯一的数字编号,这个编号范围从 0x000000 到 0x10FFFF(十六进制),有110多万,每个字符都有一个唯一的Unicode编号,这个编号一般写成16进制,在前面加上U+。例如:“楠”的Unicode是U+6960。而26976即为十进制。

 


UTF-8
UTF-8 是目前互联网上使用最广泛的一种 Unicode 编码方式,它的最大特点就是可变长。它可以使用 1 - 4 个字节表示一个字符,根据字符的不同变换长度。编码规则如下:

  1. 对于单个字节的字符,第一位设为 0,后面的 7 位对应这个字符的 Unicode 码点。因此,对于英文中的 0 - 127 号字符,与 ASCII 码完全相同。这意味着 ASCII 码那个年代的文档用 UTF-8 编码打开完全没有问题。

  2. 对于需要使用 N 个字节来表示的字符(N > 1),第一个字节的前 N 位都设为 1,第 N + 1 位设为0,剩余的 N - 1 个字节的前两位都设位 10,剩下的二进制位则使用这个字符的 Unicode 码点来填充。

编码规则:
在这里插入图片描述对于具体的Unicode编号,进行UTF-8编码的方法:
首先找到该Unicode编号所在的编号范围,进而找到对应的二进制格式,然后将该Unicode编号转换为二进制数有(去掉高位的0)最后将该二进制数一次填充入二进制格式的X中,未填充的X变为0.
例:马的Unicode编号是:0x9A6C,整数编号是39532,其格式为:1110XXXX 10XXXXXX 10XXXXXX,39532对应的二进制为1001 1010 0110 1100,填入为:11101001 10101001 10101100

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值