在Java中有八种数据类型见下表
类型 | 长度 | 默认值 | 取值范围 |
---|---|---|---|
boolean | 1 | false | true/false |
byte | 1 | 0 | -128~127 |
short | 2 | 0 | -32768~32767 |
char | 2 | '' | |
int | 4 | 0 | -2147483648~2147483647 |
long | 8 | 0 | (-2的63次方到2的63次方-1) |
float | 4 | 0 | |
double | 8 | 0 | 最高位即63位为符号位,62-52位为指数位,51-0位为尾数,或者称有效数字位 |
char在设计之初的时候被用来存储字符,可是世界上有那么多字符,如果有1个字节,那么就意味着只能存储256中,显然不合适,而如果有两个字节,那么就可以存储65536种。这个数量符合大多数国家的语言字符的个数。于是Java团队默认使用unicode作为编码,一个char作为2个字节来存储。
这里就有两个问题了?
1. java的char一定会有两个字节吗?
2. 中文字符可以存储在char里面吗?
先来回答第一个问题。char一定是两个字节吗?不是的,这个跟我们选用的字符编码有关,如果采用”ISO-8859-1”编码,那么一个char只会有一个字节。如果采用”UTF-8”或者“GB2312”、“GBK”等编码格式呢?这几种编码格式采用的是动态长度的,如果是英文字符,大家都是一个字节。如果是中文,”UTF-8”是三个字节,而”GBK”和”GB2312”是两个字节。而对于”unicode”而言,无论如何都是两个字节。
然后再回答第二个问题,对于一个char如果用”ISO-8859-1”来存储的话,肯定无法存储一个中文,而对于”UTF-8”、“GB2312”、“GBK”而言大多数中文字符是可以存储的。
数据类型的装箱和拆箱
装箱就是自动将基本数据类型转换为包装器类型;拆箱就是自动将包装器类型转换为基本数据类型
类型 | 封装类 |
---|---|
boolean | Boolean |
byte | Byte |
short | Short |
char | Char |
int | Integer |
long | Long |
float | Float |
double | Double |
网友评论