Java语言的数据类型分为两种,一种是简单数据类型,另外一种是引用数据类型。
① 字节长度和取值范围
简单数据类型都有固定字节长度与取值范围,具体如下表所示:
类型 | 字节 | 最小值 | 最大值 | 默认值 |
---|---|---|---|---|
类型 | 字节 | 最小值 | 最大值 | 默认值 |
boolean | 1bit | false | true | false |
byte | 1 | -128(-2^7) | 127(2^7-1) | 0 |
short | 2 | -32768(-2^15) | 32767(2^15-1) | 0 |
int | 4 | -2,147,483,648(-2^31) | 2,147,483,647(2^31-1) | 0 |
long | 8 | -9,223,372,036,854,775,808(-2^63) | 9,223,372,036,854,775,807(2^63-1) | 0L |
float | 4 | 1.4E-45 | 3.4028235E38 | 0.0f |
double | 8 | 4.9E-324 | 1.7976931348623157E308 | 0.0d |
char | 2 | \u0000(0) | \uffff(65535) | 0 |
除了8种简单数据类型之外的所有数据类型都被称为引用数据类型,引用数据类型变量的内存大小统一为4字节,记录的是其引用对象的地址。
② 基本数据类型转换
也可以理解为数值类型提升:
byte->short ,
char -> int -> long ,
float -> double
int -> float
long -> double
③ 基本数据类型对应的封装类
简单类型和封装类型直接的对应关系如下表所示:
基本类型 | 封装类型 |
---|---|
基本类型 | 封装类型 |
byte | Byte |
short | Short |
int | Integer |
long | Long |
boolean | Boolean |
float | Float |
double | Double |
char | Character |
java中加入了自动装箱拆箱操作,这样就可以使用对应的方法。
④ char使用详解
- char赋值
char a=‘a’; //任意单个字符,加单引号。
char a=‘中’;//任意单个中文字,加单引号。
char a=111;//整数。0~65535。十进制、八进制、十六进制均可。输出字符编码表中对应的字符。
注:只能放单个字符。
- char运算
char类型是可以运算的因为char在ASCII等字符编码表中有对应的数值。
在JAVA中,对char类型字符运行时,直接当做ASCII表对应的整数来对待。
示例:
char m=‘a’; ——a。
char m=‘a’+‘b’; ——Ã。 //char类型相加,提升为int类型,输出对应的字符。
int m=‘a’+‘b’; ——195。//195没有超出int范围,直接输出195。
char m=‘a’+b; ——报错。//因为b是一个赋值的变量。
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。
总结:
- 用单引号’'标识,只能放单个字符。
- char+char,char+int——类型均提升为int,赋值char变量后,输出字符编码表中对应的字符。
参考博文:
中文与Unicode转换;
彻底弄懂Unicode。