Java的char类型包含哪些数据?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java的char类型包含哪些数据?相关的知识,希望对你有一定的参考价值。

参考技术A

java的char是2字节,16bit,包含所有ascii字符,而且更多,api文档里有描述

char的数据是通过 UnicodeData 文件中的信息定义的,该文件是 Unicode Consortium 维护的 Unicode Character Database 的一部分。此文件指定了各种属性,其中包括每个已定义 Unicode 代码点或字符范围的名称和常规类别。 

此文件及其描述可从 Unicode Consortium 获得,网址如下: 

Unicode 字符表示形式

char 数据类型(和 Character 对象封装的值)基于原始的 Unicode 规范,将字符定义为固定宽度的 16 位实体。Unicode 标准曾做过修改,以允许那些其表示形式需要超过 16 位的字符。合法代码点 的范围现在是从 U+0000 到 U+10FFFF,即通常所说的 Unicode 标量值。(请参阅 Unicode 标准中 U+n 表示法的定义。) 

从 U+0000 到 U+FFFF 的字符集有时也称为 Basic Multilingual Plane (BMP)。代码点大于 U+FFFF 的字符称为增补字符。Java 2 平台在 char 数组以及 String 和 StringBuffer 类中使用 UTF-16 表示形式。在这种表现形式中,增补字符表示为一对 char 值,第一个值取自高代理项 范围,即 (\\uD800-\\uDBFF),第二个值取自低代理项 范围,即 (\\uDC00-\\uDFFF)。 

所以,char 值表示 Basic Multilingual Plane (BMP) 代码点,其中包括代理项代码点,或 UTF-16 编码的代码单元。int 值表示所有 Unicode 代码点,包括增补代码点。int 的 21 个低位(最低有效位)用于表示 Unicode 代码点,并且 11 个高位(最高有效位)必须为零。除非另有指定,否则与增补字符和代理项 char 值有关的行为如下: 

只接受一个 char 值的方法无法支持增补字符。它们将代理项字符范围内的 char 值视为未定义字符。例如,Character.isLetter('\\uD840') 返回 false,即使是特定值,如果在字符串的后面跟着任何低代理项值,那么它将表示一个字母。 

接受一个 int 值的方法支持所有 Unicode 字符,其中包括增补字符。例如,Character.isLetter(0x2F81A) 返回 true,因为代码点值表示一个字母(一个 CJK 象形文字)。 

在 Java SE API 文档中,Unicode 代码点 用于范围在 U+0000 与 U+10FFFF 之间的字符值,而 Unicode 代码点 用于作为 UTF-16 编码的代码单元的 16 位 char 值。有关 Unicode 技术的详细信息,请参阅 Unicode Glossary。

ABAP 内表数据类型转换

整合数据到git_result内表中,内表下有A,B,C,三个字段。
三个字段都是I型,我想把字段都转换成char型,且不改变他们的数据。
意思是不改变内表里的数据。因为我调用了一个FM,内表下面的各个字段的类型必须是char型的

1、定义一个新内表git_result2,字段类型为CHAR
2、把git_result内的数据拷给git_result2
3、调用FM就OK了!
参考技术A 在form。 endform中定义一个通用的char型临时变量,每次调用前cleare一下,赋值之后再操作这个临时变量。 参考技术B WRITE一下不就好了 参考技术C 你用哪个FM, 发出来看看

以上是关于Java的char类型包含哪些数据?的主要内容,如果未能解决你的问题,请参考以下文章

java中引用数据类型都有哪些?

Java定义了哪些基本数据类型?基本数据类型和引用数据类型的特点?

java中怎样可以把String类型转化为Char类型的数组啊?

ABAP 内表数据类型转换

java中的基本数据类型都有哪些

Oracle数据类型及存储方式