Java中char类型多种赋值⽅式形式,以及ASCII码的讲解
摘要
⼀、前⾔
对char类型进⾏赋值时,⾸先先了解char字符类型
1.1 Java字符
计算机内存和硬盘等存储空间的管理都是以字节为基本单位,每个字节都有⾃⼰的编号,⽽“字符-Char”是⼈们⽤作标记的符号,如’A’、'⼀’等,每个字符都具有约定的抽象含义。
(摘⾃:百度百科)
1.2 字符
1.3 char
16 位,是整数类型,⽤单引号括起来的 1 个字符(可以是⼀个中⽂字符),使⽤ Unicode 码代表字符,0~2^16-1(65535) 。
注意事项: 不能为 0个字符。 转义字符:\n 换⾏ \r 回车 \t Tab 字符 " 双引号 \ 表⽰⼀个\ 两字符 char 中间⽤“+”连接,内部先把字符转成 int 类型,再进⾏加法运算,char 本质就是个数!⼆进制的,显⽰的时候,经过“处理”显⽰为字符。
(引⾃ : )
char类型⽤于标识单个字符.通常⽤来表⽰字符常量.例如:'A'是编码为65所对应的的字符常量.与"A"'不同,"A"是⼀个包含字符A的字符串.(在java中,char类型⽤UTF-16编码表⽰Unicode代码点的代码单元)
详细了解代码单元和代码点请看:)
⼆、多种赋值形式
public class CharTest {
public static void main(String[] args){
char i1 =041;// ⼋进制
System.out.println(i1);
char i2 =33;// ⼗进制
System.out.println(i2);
char i4 ='!';// 直接输⼊标点符号 !
System.out.println(i4);
System.out.println("'!'的ASCII值的⼗进制表⽰数为: "+ Integer.valueOf(i4));// ! 的⼗进制表⽰数为:33,与直接输⼊33等价
char i3 =0x21;// ⼗六进制
System.out.println(i3);
char i0 ='\u0021';
System.out.println(i0);
}
}
ASCII可显⽰字符 :
由程序代码可以看出,多种赋值形式,输出的结果是相同的.unicode码和ascii码区别
道理很简单,就是将ASCII表中的图形的各种表⽰形式进⾏赋值,打印该变量时即可打印出该图形.
2.1 ⼆、⼋、⼗六及Unicode编码形式进⾏赋值
[Tips] : 在jdk1.7之后,就可以使⽤⼆进制数开始赋值了.
⼆进制⽤0b开头,⽐如0b10,就是⼗进制的2
⼋进制⽤0开头,⽐如:012就是⼗进制的10
⼗六进制⽤0x开头,⽐如:0x12就是⼗进制的18`
程序中还有'\uxxxx',进⾏赋值的,这种是\u开头的是⼀个Unicode码的字符.
Unicode可同时包含65536个字符,ASCII/ANSI只包含255个字符,实际上是Unicode的⼀个⼦集。Unicode字符通常⽤⼗六进制编码⽅案表⽰,范围在’\u0000’到’\uFFFF’之间。
\u0000到\u00FF表⽰ASCII/ANSI字符。\u表⽰这是⼀个Unicode值.
因为包含65536个字符,0000-FFFF⼀共包含65536个数.故\u后⾯是4位⼗六进制进⾏表⽰的.
附:所有的Unicode字符:
2.2 Integer.valueOf(String i)⽅法
public class IntegerDemo {
public static void main(String[] args){
System.out.println(Integer.valueOf(010));// ⼋进制
System.out.println(Integer.valueOf(0b11111111));// ⼆进制
System.out.println(Integer.valueOf(0xFFFF));// ⼗六进制
System.out.println(Integer.valueOf('!'));// 字符'!'
System.out.println(Integer.valueOf('\uFFFF'));// Unicode编码
}
}
/*结果为:
8
255
65535
33
65535
*/
将该参数解释为表⽰⼀个有符号的⼗进制整数, 就好像将该参数赋予 parseInt(java.lang.String) ⽅法⼀样。
结果是⼀个表⽰字符串指定的整数值的 Integer 对象。
换句话说,该⽅法返回⼀个等于以下值的 Integer
对象:
new Integer(Integer.parseInt(s))
参数:
前提为如果字符串不能被解析为整数,则参数可以是⼆进制,⼋进制,⼗进制,⼗六进制,字符串可以解析为整数的值或者是字符类型的值,以及Unicode编码等.
结果:
返回保存指定的 String 的值的 Integer 对象。
三、对于空字符与空格字符的区分
public class CharTest {
public static void main(String[] args){
char m =' ';
System.out.println(m +",");
System.out.println("空格的ASCII值的⼗进制表⽰数为: "+ Integer.valueOf(m));
char i =0b000000;// ⼆进制
System.out.println(i+",");
System.out.println("空字符(NULL)的ASCII值的⼗进制表⽰数为: "+ Integer.valueOf(i));
}
}
⼗进制32位空格.对于控制台的输出看上去都是控制,可是当输出两个⼗进制值的时候,两个值是不想同的.
四、输出所有Unicode字符
public class CharTest {
public static void main(String[] args){
for(char c = Character.MIN_VALUE; c <= Character.MAX_VALUE; c++){
System.out.print(c +"\t");
if(c %10==0)
System.out.println();
}
}
}
部分结果截图:
Unicode的代码点可以分成17个代码级别(code plane).
第⼀个代码级别成为基本的多语⾔级别,代码点从U+0000到U+FFFF,其中包括了经典的Unicode代码.例如:\u2122表⽰注册符号(™),\u03C0表⽰希腊字母π.
其余的16个附加级别,代码点从U+10000到U+10FFFF,其中包括了⼀些辅助字符(增补字符).
有些符号eclipse控制台是⽆法显⽰的,暂未到解决办法!
(图⽚来源 : )
不亲⾃尝试,就不知道⾃⼰会不会!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论