导航:首页 > 编程语言 > javachar范围

javachar范围

发布时间:2022-07-21 12:24:52

java的char类型包含哪些数据

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。

㈡ 在JAVA中char的取值范围是多少

char只能接受单个字符,而你的'98'明显是两个字符。言外之意就是说''(单引号)里面只能放一个字符。
而为什么可以放'国',因为除了'国'是单字符外,最重要的一点是java
char占用2个字节(2*8=16位),并且是以unicode的形式实现的。

㈢ java中char类型变量的取值范围是什么为什么不能取'12'

char的取值范围是0~65535
char表示一个字符,一个整体,Unicode编码中的组成部分
'12'写法就不正确,单引号中的内容要是一个整体,明显12是两个数字
'1'或者'2'就是正确的

㈣ Java中char到底是多少字节

java中的char占2个字节 
       1:“字节”是byte,“位”是bit ;
2: 1 byte = 8 bit ;
char 在java中是2个字节。java采用unicode,2个字节(16位)来表示一个字符。
代码如下:

public class Test {
    public static void main(String[] args) {
        String str= "中";
        char x ='中';
        byte[] bytes=null;
        byte[] bytes1=null;
        try {
            bytes = str.getBytes("utf-8");
            bytes1 = charToByte(x);
        } catch (UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        System.out.println("bytes 大小:"+bytes.length);
        System.out.println("bytes1大小:"+bytes1.length);
    }
    public static byte[] charToByte(char c) { 
        byte[] b = new byte[2]; 
        b[0] = (byte) ((c & 0xFF00) >> 8); 
        b[1] = (byte) (c & 0xFF); 
        return b; 
    }
}
结果如下:
bytes 大小:3
bytes1大小:2

㈤ java 中的字符变量char范围不是为0~255吗为什么c2>127时,c2的输出都为

char在java中是unicode编码,比如字符'a'对应的是97,那么char c2=97,System.out.println(c2),打印出来的就是'a',所以,你这里c2=220;那么打印出来的就是220在unicode码表中对应的字符!
不懂还可继续提问.

㈥ java的char类型的取值范围是

java中统一字符使用两个字节表示,也就是16位,16位表述的大小就是字符表示的大小

㈦ Java中char到底是多少字节

java中的char占2个字节

1:“字节”是byte,“位”是bit ;

2: 1 byte = 8 bit ;

char 在java中是2个字节。java采用unicode,2个字节(16位)来表示一个字符。

代码如下:

publicclassTest{
publicstaticvoidmain(String[]args){
Stringstr="中";
charx='中';
byte[]bytes=null;
byte[]bytes1=null;
try{
bytes=str.getBytes("utf-8");
bytes1=charToByte(x);
}catch(UnsupportedEncodingExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
System.out.println("bytes大小:"+bytes.length);
System.out.println("bytes1大小:"+bytes1.length);
}
publicstaticbyte[]charToByte(charc){
byte[]b=newbyte[2];
b[0]=(byte)((c&0xFF00)>>8);
b[1]=(byte)(c&0xFF);
returnb;
}
}

结果如下:

bytes 大小:3
bytes1大小:2

㈧ java中char的范围,及其存储原理和能力

这个我在课上的时候老师提过 unicode是一个编码组织 他们的目的是把世界上所有的语言和符号都包含进去 在现在依然活跃中 我们java采用的unicode码虽然只有65536个 但是unicode码的范围是在不断更新 不断增长的 所以出现一个unicode值为84426的东西是完全可以理解的 但是无法运行 因为java里没有 反正我的版本里面是没有 写好一保存就出错

另外char ch1 = (char) 84426; 为什么会报错呢 因为int跟char本来就是可以相互转换的 只要char强转的数字范围没有超过int的范围就不会出错

阅读全文

与javachar范围相关的资料

热点内容
堵车如何缓解压力 浏览:15
喜鹊快贷app怎么了 浏览:263
海龟编辑器积木编程怎么安装 浏览:185
程序员理发店生意怎么样 浏览:603
程序员罗技 浏览:180
软考初级程序员课程2021下载 浏览:491
杭州程序员奶奶 浏览:880
不听命令造成错误 浏览:981
kool系统源码 浏览:610
流氓app在哪里看 浏览:98
域名购买了怎么指向服务器 浏览:121
安卓手机如何让照片颜色反转 浏览:859
怎么下载卓睿安手机版 浏览:514
h3crange命令 浏览:468
php前景和python 浏览:338
php压缩图片内存大小 浏览:495
在哪里可以查看云服务器的信息 浏览:70
python读取非txt文件 浏览:799
艾莫迅用什么编程软件好 浏览:227
android文件存储读取 浏览:214