JAVA数据类型中的char类型
1、java中,char占2字节,16位。可在存放汉字
2、char赋值
char a='a'; //任意单个字符,加单引号。
char a='中';//任意单个中文字,加单引号。
char a=111;//整数。0~65535。十进制、八进制、十六进制均可。输出字符编码表中对应的字符。
注:只能放单个字符。
3、char运算
char类型是可以运算的因为char在ascii等字符编码表中有对应的数值。
在java中,对char类型字符运行时,直接当做ascii表对应的整数来对待。
示例1:
char m='a'; -->a
char m='a'+'b'; -->? //char类型相加,提升为int类型,输出对应的字符(a和b分别对应
的数值为97和98,相加等于195,其对应的字符为 ?)。
int m='a'+'b'; -->195 //195没有超出int范围,直接输出195。
char m=197; -->? //输出字符编码表中对应的字符。
char m='197; -->报错 //因为有单引号,表示是字符,只允许放单个字符。
char m='a'+1; -->b //提升为int,计算结果98对应的字符是b。
char m='中'+'国'; -->42282
char m='中'+'国'+'国'+'国'; -->报错 //int转char有损失。因为结果已经超出char类型的范围。
int m='中'+'国'+'国'+'国'; -->86820
char m='中'+1; -->丮 //1是int,结果提升为int,输出对应的字符。
char m='中'+"国"; -->报错 //string无法转换为char。
system.out.println('中'+"国"); -->中国 //没有变量附值的过程。string与任何字符用“+”相连,转换为string。
示例2:
char a = 97; -->为char类型变量 a 赋值常量值 97。
char b = 'a'+3; -->d // 97+3=100,ascii对应的字符为 d。
char c = a+3; -->报错 //无法从int类型转换为char类型,接下来让我们了解下为什么会不
能这样运算:
首先,我们先知道在jvm内存机制中,char类型数据运算是将字符在ascii表对应的整数以int类型参与运算(可以认为' a '=97),常量(97)与常量(3)运算得到一个新的常量(100),常量赋值给变量(b),不存在强制转换,只要这个接受变量(b)的类型范围大于这个常量即可。而变量声明时需要定义数据类型(例:char a),内存就为这个变量划分一个char类型大小的空间,其中变量(a)的值是可变的,而常量(3)的值是不变的,两个运算得到的还是一个变量,本例中(a+3)是int类型的变量,而int类型变量(a+3)赋值给char类型变量(c)需要强制转换,因此会报错。
char c=(char)(a+3); -->d
总结:
用单引号' '标识,只能放单个字符。
char+char,char+int——类型均提升为int,附值char变量后,输出字符编码表中对应的字符。
推荐阅读
-
MSSQL报错:参数数据类型 text 对于 replace 函数的参数 1 无效的解决办法
-
SQL Server数据类型char、nchar、varchar、nvarchar的区别浅析
-
C# double和decimal数据类型以截断的方式保留指定的小数位数
-
Javascript ES6中数据类型Symbol的使用详解
-
java定义数组的几种方式(java中数组定义的三种方式)
-
JAVA中的异常-知识整理
-
基于java中stack与heap的区别,java中的垃圾回收机制的相关介绍
-
Java中 shuffle 算法的使用
-
Java中==符号与equals()的使用详解(测试两个变量是否相等)
-
java中的数学计算函数的总结