Java基础—char类型数据
char类型介绍
char类型原本表示单个字符,但由于Unicode字符集扩充,导致有些字符需要使用两个char来描述
大小: 一个char类型占两个字节,16位
范围: 为十进制数 0 ~ 65535(即0 ~ 216-1),Unicode表示\u0000 ~ \uFFFF
定义方式:
char a1 = 'A'; // 使用单引号定义一个char
char a2 = '\u0041'; // unioncode编码定义,与上面定义等价
char a3 = 65; // 等价运算1 接受8进制、10进制、16进制数字,表示其在Unicode编码中的位置
运算:
char a1 = 'A' + 1; // 值为 B
转义序列:
除了\u的Unicode字符外,还有一些转义序列可出现在char字面量中(单引号里)
转移序列 | 名称 | Unicode值 |
---|---|---|
\b | 退格 | \u0008 |
\t | 制表 | \u0009 |
\n | 换行 | \u000a |
\r | 回车 | \u000d |
\’ | 单引号 | \u0022 |
\" | 双引号 | \u0027 |
\\ | 斜杠 | \u005c |
// 以下三者等价
char a1 = '\b';
char a2 = '\u0008';
char a3 = 0x0008;
注意: Unicode转移序列会在解析代码之前转换,使用中须小心
示例:
// \u000A is a newline
// 会产生一个语法错误,因为编译时\u000A会替换为换行符
// look inside c:\user
// 同样报错,因为\u后没有跟16进制数
Unicode编码
Unicode目的是解决各字符集编码方式不统一的问题,当时工程师预估只用2byte的代码宽度即可对世界上所有语言的所有字符进行编码,该工程从20世纪80年代启动,于1991年发布Unicode1.0,仅占用216-1(65536)的一半不到。Java设计时使用16位的char以支持Unicode,此后由于加入大量汉语、日语、韩语的表意文字,导致16位的char已不能满足Unicode的需要。
名词解释:
码点(code point): 指一个编码表中一个字符代表的编码值
在Unicode中码点采用16进制书写,并加前缀 U+,如:U+0041代表拉丁字母A的码点
代码平面(cod plane)
Unicode的码点可分为17个代码平面
第一个代码平面称为_基本多语言平面_(basic multilingual plane),包括码点从U+0000到U+FFFF的“经典”Unicode代码
其余16个代码平面为从U+10000到U+10FFFF,包括_辅助字符_(supplementary character)
以下为Java解决Unicode扩容问题的方案:
UTF-16编码采用不同长度的编码表示所有Unicode码点,在基本多语言平面中,每个字符用16位表示,通常称作_代码单元_(code unit);而辅助字符编码为一对连续的代码单元。采用这种编码对表示的各个值落入基本多语言平面中未用的2048个值范围内,通常称为_替代区域_(surrogate area)(U+D800~U+DBFF为第一个代码单元, U+DC00~U+DFFF为第二个代码单元)。如此设计,我们可以迅速判断一个代码单元是一个字符的编码,还是一个辅助字符的第一或第二部分。
关于编码的算法详见(https://tools.ietf.org/html/rfc2781)
注意: 强烈建议不要在Java中使用char类型,除非确实需要处理UTF-16代码单元
Java基础—char类型数据相关推荐
- Java基础题37:(单选题)java中char类型的取值范围是() A.0 ... 32767 B.0 ... 65535
37.(单选题)java中char类型的取值范围是() A.0 - 32767 B.0 - 65535 C.–256 - 255 D.–32768 - 32767 [正确答案]B [答案解析]在jav ...
- Android java传递string类型数据给C
本文接着实现<Android java传递int类型数据给C>的还未实现的方法: public native String sayHelloInC(String s); 先贴一个工具方法, ...
- java char 计算_经典Java面试题之Java中Char类型的运算
经典Java面试题之Java中Char类型的运算 char在java中称为"字符型",占2个字节.本文是百分网小编搜索整理的关于经典Java面试题之Java中Char类型的运算,有 ...
- java的char类型
一.Char介绍 字符型数据类型.用于存放单个字符.用单引号[' ']括住 2字节,16位.char在java中是16位,因为java用的是Unicode.一个16位的编码所能产生的字符只有65536 ...
- 杂记(1)java读取char类型2. 大小写字母的转换3. 字符串的拼接4. 一串数字排序
1. java读取char类型 应为java中没有nextchar();函数,所以只能先读取一行,即 Sting a=sc.nextline(); char need=a.charAt(0);//取字 ...
- java中map转为json数据_Java技术-将java中Map类型数据转化为json数据并以Ajax形式返回...
Java技术-将java中Map类型数据转化为json数据并以Ajax形式返回html 1.自定义工具类(简单易用)-下面是我写的一个简单的工具类前端 package com.test.util; i ...
- java中char类型可以存储两个中文字符吗
java中char类型只能存储一个中文字符 https://www.cnblogs.com/lchzls/p/7071862.html https://blog.csdn.net/qq_4264294 ...
- Java基础及大数据视频
Java基础及大数据视频 Java相关视频: Java基础:链接:https://pan.baidu.com/s/1fvebyh7M8Yc-Igj_Gsg0Yg 提取码:5sce : Javaweb: ...
- Java中char类型数组打印数组名输出结果不是地址值
Java中其他类型数组打印数组名,输出结果都是内存地址 Java中char类型数组打印数组名,输出结果不是内存地址 char类型的数组就相当于一个字符串. 因为输出流System.out是PrintS ...
最新文章
- ListView 异步更新出现问题的解决(Handler)
- PhpStorm 2017 for Mac 汉化
- 顺序容器之vector
- Html5---可编辑的Contenteditable
- kotlin编译失败_聊两个 Kotlin 编译器的 bug
- drupal7 payment module:把支付form元素注入到form中
- 春节回来,陪你去看星河云!
- 【Vue 4 笔记 】(一)
- [Python] 七段数码管绘制
- IP-guard加密软件的攻防之路
- Qt 应用程序输出中文乱码+UI界面输出中文乱码
- 中鑫吉鼎|不同的年龄该如何进行资产配置
- GPS北斗卫星授时设备(京准)
- nyoj 779-兰州烧饼 (ceil)
- ESP32 CAM CameraWebServer示例测试
- lstrip在python中是什么意思_映月城与电子姬 憋住作用是什么 憋住作用介绍
- 《共模电感元器件》的特性分析
- QT中Json的使用方法(类和json字符串相互转换的方法)
- 个人计算机的选购调查报告,计算机选购调查报告1
- R语言计算数值的反对数(antilog,antilogarithm)实战
热门文章
- 一维数组的使用:逆序输出数据/:任意输入5个数据,存放于数组,编程实现将这5个数据逆序存放并输出
- Dwarves(拓扑排序+字符串使用map量化表示)
- zookeeper入门到实战-阶段二(常用命令的使用)
- 【图灵教育读书】分享读书心得,奖励精品图书!
- apache 2.4 httpd 2.4.6 反向代理后端的服务为HTTPS https 基于centos7
- 什么是中断?什么是中断向量?中断向量表的地址范围?
- 研发团队管理激励机制
- windows远程桌面连接redhat
- Docker容器-------网络模式,数据卷和数据卷容器
- 11.深入浅出:深度负反馈及放大倍数——参考《模拟电子技术基础》清华大学华成英主讲