㈠ 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的范围就不会出错