admin管理员组文章数量:1794759
java的char类型
一、char介绍
字符型数据类型。用于存放单个字符。用单引号【' '】括住
2字节,16位。char在java中是16位,因为java用的是Unicode。一个16位的编码所能产生的字符只有65536个。
Unicode码包括ASCII码。大多数计算机采用ASCII(美国标准信交换码),它是表示所有大小写字母、数字、标点符号和控制字符的8位编码表。从'\\u0000'到'\\u007F'对应128个ASCII字符。
二、char赋值 1. 概述因为char是16位的,采取的Unicode的编码方式,所以char就有以下的初始化方式:
|
x1=A, x1的int值=65 x11=), x11的int值=41 x12=e, x12的int值=101 x2=A, x2的int值=65 x3=A, x3的int值=65
三、char运算char类型是可以运算的因为char在ASCII等字符编码表中有对应的数值。
1. 总结:在JAVA中,对char类型字符运行时,直接当做ASCII表对应的整数来对待。
(1)char+char,char+int——类型均提升为int,附值char变量后,输出字符编码表中对应的字符。
char m=‘a’+1; -->b //提升为int,计算结果98对应的字符是b。(2)自增和自减操作符可以用在char类型变量上,这会得到字符之前或者之后的Unicode字符。
char x1 = 'A'; System.err.println(++x1); //输出B 2. 例子char a = 65; -->A //为char类型变量 a 赋值常量值 65。char b = ‘a’+3; -->D // 65+3=68,ASCII对应的字符为 D【注意:这里查询的是十进制编码的ASCII字符集】char c = a+3; -->报错 //无法从int类型转换为char类型,接下来让我们了解下为什么会不能这样运算:
- 首先,我们先知道在jvm内存机制中,char类型数据运算是将字符在ASCII表对应的整数以int类型参与运算(可以认为’ A'=65)
- 常量(65)与常量(3)运算得到一个新的常量(68),常量赋值给变量(b),不存在强制转换,只要这个接受变量(b)的类型范围大于这个常量即可。
- 而变量声明时需要定义数据类型(例:char a),内存就为这个变量划分一个char类型大小的空间,其中变量(a)的值是可变的,而常量(3)的值是不变的,两个运算得到的还是一个变量,本例中(a+3)是int类型的变量,而int类型变量(a+3)赋值给char类型变量(c)需要强制转换,因此会报错。
char c=(char)(a+3); -->D
四、为什么char类型的变量可以赋值为整型数字?char在java中是unicode编码。Java中对char型数据,在内存中存的就是整数,对应一张ASCII码表。
- 比如说字符知 ‘A’ 对应的是65,字符 ‘a’ 对应的是97 ,所以char c1 = ‘A’ ; 等效于 char c1 = 65 ;
正是因为这样,所以字符型数据既可以作为一个字符使用,也可以作为一个整数使用,所以char型数据可以和int型数据进行运算!
- 比如 ‘A’ + 1 的结果如果用char型变量接收就是 ‘B’ , 用int型变量接收就是66
- char c = ‘A’+1; 最后c为’B’
- int i = ‘A’ + 1 ; 最后i为 66
虽然char型是以整数存储,但是和int型还是有一定区别的,表现在取值范围上:
- char型 占2个字节 无符号 范围是0~65535,所以char c = 65536 就会报错了,专因为越界了
参考:java基本数据类型各占多少字节-java教程-PHP中文网
Java中关于char类型的变量为什么可以赋值为整型数字_这不是你的确定的博客-CSDN博客_char能赋值数字吗
版权声明:本文标题:java的char类型 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686925752a118941.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论