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类型数据相关推荐

  1. 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 ...

  2. Android java传递string类型数据给C

    本文接着实现<Android java传递int类型数据给C>的还未实现的方法: public native String sayHelloInC(String s); 先贴一个工具方法, ...

  3. java char 计算_经典Java面试题之Java中Char类型的运算

    经典Java面试题之Java中Char类型的运算 char在java中称为"字符型",占2个字节.本文是百分网小编搜索整理的关于经典Java面试题之Java中Char类型的运算,有 ...

  4. java的char类型

    一.Char介绍 字符型数据类型.用于存放单个字符.用单引号[' ']括住 2字节,16位.char在java中是16位,因为java用的是Unicode.一个16位的编码所能产生的字符只有65536 ...

  5. 杂记(1)java读取char类型2. 大小写字母的转换3. 字符串的拼接4. 一串数字排序

    1. java读取char类型 应为java中没有nextchar();函数,所以只能先读取一行,即 Sting a=sc.nextline(); char need=a.charAt(0);//取字 ...

  6. java中map转为json数据_Java技术-将java中Map类型数据转化为json数据并以Ajax形式返回...

    Java技术-将java中Map类型数据转化为json数据并以Ajax形式返回html 1.自定义工具类(简单易用)-下面是我写的一个简单的工具类前端 package com.test.util; i ...

  7. java中char类型可以存储两个中文字符吗

    java中char类型只能存储一个中文字符 https://www.cnblogs.com/lchzls/p/7071862.html https://blog.csdn.net/qq_4264294 ...

  8. Java基础及大数据视频

    Java基础及大数据视频 Java相关视频: Java基础:链接:https://pan.baidu.com/s/1fvebyh7M8Yc-Igj_Gsg0Yg 提取码:5sce : Javaweb: ...

  9. Java中char类型数组打印数组名输出结果不是地址值

    Java中其他类型数组打印数组名,输出结果都是内存地址 Java中char类型数组打印数组名,输出结果不是内存地址 char类型的数组就相当于一个字符串. 因为输出流System.out是PrintS ...

最新文章

  1. ListView 异步更新出现问题的解决(Handler)
  2. PhpStorm 2017 for Mac 汉化
  3. 顺序容器之vector
  4. Html5---可编辑的Contenteditable
  5. kotlin编译失败_聊两个 Kotlin 编译器的 bug
  6. drupal7 payment module:把支付form元素注入到form中
  7. 春节回来,陪你去看星河云!
  8. 【Vue 4 笔记 】(一)
  9. [Python] 七段数码管绘制
  10. IP-guard加密软件的攻防之路
  11. Qt 应用程序输出中文乱码+UI界面输出中文乱码
  12. 中鑫吉鼎|不同的年龄该如何进行资产配置
  13. GPS北斗卫星授时设备(京准)
  14. nyoj 779-兰州烧饼 (ceil)
  15. ESP32 CAM CameraWebServer示例测试
  16. lstrip在python中是什么意思_映月城与电子姬 憋住作用是什么 憋住作用介绍
  17. 《共模电感元器件》的特性分析
  18. QT中Json的使用方法(类和json字符串相互转换的方法)
  19. 个人计算机的选购调查报告,计算机选购调查报告1
  20. R语言计算数值的反对数(antilog,antilogarithm)实战

热门文章

  1. 一维数组的使用:逆序输出数据/:任意输入5个数据,存放于数组,编程实现将这5个数据逆序存放并输出
  2. Dwarves(拓扑排序+字符串使用map量化表示)
  3. zookeeper入门到实战-阶段二(常用命令的使用)
  4. 【图灵教育读书】分享读书心得,奖励精品图书!
  5. apache 2.4 httpd 2.4.6 反向代理后端的服务为HTTPS https 基于centos7
  6. 什么是中断?什么是中断向量?中断向量表的地址范围?
  7. 研发团队管理激励机制
  8. windows远程桌面连接redhat
  9. Docker容器-------网络模式,数据卷和数据卷容器
  10. 11.深入浅出:深度负反馈及放大倍数——参考《模拟电子技术基础》清华大学华成英主讲