Java的String类中提到的代码点,代码单元到底是什么?
unicode
unicode是计算机科学领域里的一项业界标准,包括字符集、编码方案等。计算机采用八比特一个字节,一个字节最大整数是255,还要表示中文一个字也是不够的,至少需要两个字节,为了统一所有的文字编码,unicode为每种语言中的每个字符设定了统一并且唯一的二进制编码,通常用两个字节表示一个字符,所以unicode每个平面可以组合出65535种不同的字符,一共17个平面。
由于英文符号只需要用到低8位,所以其高8位永远是0,因此保存英文文本时会多浪费一倍的空间。
比如汉子“汉”的unicode,在java中输出
System.out.println("\u5B57");
UTF-8
unicode在计算机中如何存储呢,就是用unicode字符集转换格式,即我们常见的UTF-8、UTF-16等。
UTF-8就是以字节为单位对unicode进行编码,对不同范围的字符使用不同长度的编码。
Unicode Utf-8
000000-00007F 0xxxxxxx
000080-0007FF 110xxxxx 10xxxxxx
000800-00FFFF 1110xxxx 10xxxxxx 10xxxxxx
010000-10FFFF 11110xxx10xxxxxx10xxxxxx10xxxxxx
Java中的String对象就是一个unicode编码的字符串。
java中想知道一个字符的unicode编码我们可以通过Integer.toHexString()方法
String str = "编";StringBuffer sb = new StringBuffer();char [] source_char = str.toCharArray();String unicode = null;for (int i=0;i<source_char.length;i++) {unicode = Integer.toHexString(source_char[i]);if (unicode.length() <= 2) {unicode = "00" + unicode;}sb.append("\\u" + unicode);}System.out.println(sb);输出\u7f16
对应的utf-8编码是什么呢?
7f16在0800-FFFF之间,所以要用3字节模板:1110xxxx 10xxxxxx 10xxxxxx。
7f16写成二进制是:0111 1111 0001 0110
按三字节模板分段方法分为0111 111100 010110,代替模板中的x,得到11100111 10111100 10010110,即“编”对应的utf-8的编码是e7 bc 96,占3个字节
codepoint
unicode的范围从000000 - 10FFFF,char的范围只能是在\u0000到\uffff,也就是标准的 2 字节形式通常称作 UCS-2,在Java中,char类型用UTF-16编码描述一个代码单元,但unicode大于0x10000的部分如何用char表示呢,比如一些emoji:
Java的String类中提到的代码点,代码单元到底是什么?相关推荐
- 阿里最新面试必备项之Java的String类,持续更新中!
最新腾讯面试必备项之Java的String类,持续更新中! 1.1 String的特性 String类:代表字符串.Java程序中的所有字符串字面值(如"abc")都作为此类的实例 ...
- Java 11:String类中的新方法
Java 11:String类中的新方法 Java 11没有很多特定于语言的功能.因此,令人惊讶的是,在Java String Class中引入了6种新方法. Java 11 String类新方法 让 ...
- java 实现 string类_java 中String类的常用方法总结,带你玩转String类。
String类: String类在java.lang包中,java使用String类创建一个字符串变量,字符串变量属于对象.String类对象创建后不能修改,StringBuffer & St ...
- 17.Java常用实用类之String类中常用的方法以及一般应用场景,final关键字
文章目录 1.String类学习 1.1.什么是String类 1.2.String类中常用的方法 1.2.1. 构造方法 1.2.2.public int length() 1.2.3.public ...
- Java——String类中的compareTo方法总结
String类的定义: java.lang 类 String java.lang.Object java.lang.String 所有已实现的接口: Serializable, ...
- java string.substring 参数,Java,String类中的subString()方法,stringsubstring
Java,String类中的subString()方法,stringsubstring public class TestStringSubString { // main函数 public stat ...
- java面向对象使用字符串_java面向对象中的String类中12种常用的方法
1.字符串与字符数组的转换 字符串可以使用toCharArray()方法变成一个字符数组,也可以使用String类的构造方法把一个字符数组变成一个字符串. public class StringAPI ...
- java string改变的影响_为什么Java的string类要设成immutable(不可变的)
最流行的Java面试题之一就是:什么是不可变对象(immutable object),不可变对象有什么好处,在什么情况下应该用,或者更具体一些,Java的String类为什么要设成immutable类 ...
- JDK1.8源码(三)——java.lang.String 类
String 类也是java.lang 包下的一个类,算是日常编码中最常用的一个类了,那么本篇博客就来详细的介绍 String 类. 1.String 类的定义 public final class ...
最新文章
- 王坚十年前的坚持,才有了今天世界顶级大数据计算平台MaxCompute
- IIS7.5 错误代码0x8007007e HTTP 错误 500.19
- vba 中sql like用法
- 使用模态窗口编辑数据
- mybatis-plus删除操作(逻辑与物理删除)
- oncreate 测量尺寸
- 无线网络技术学习总结
- 解决Kaggle新用户注册无法弹出验证提示的问题
- 手机屏幕怎么计算机,怎么将手机屏幕投屏到电脑上
- 外包商爱图腾求变推自主APP:91助手阻碍发展
- android学习---开发Google地图应用程序
- fluentd收集K8S日志并以K8S的container_name作为索引名存入Elasticsearch中
- ApplicatioinRunner vs CommandLineRunner
- 基于Python猫眼票房TOP100电影数据抓取
- SOCKS代理的定义
- 潜入维基解密机房 更新中文视频+高清图
- 安信可A7模块 GPRS/GPS使用教程
- 【前端系列教程之JavaScript】01_JavaScript概述和引入方式
- 32位计算机分配的最大内存大小,win732位内存支持多大内存 win732位内存最大支持大小【图文】...
- 在matlab中怎么录制音频_68岁洪金宝参加某节目录制,他在节目中的表现怎么样?...