Java初学之数据类型
Java初学之数据类型
Java 是一种强类型语言:必须为每一个变量声明一种类型,在Java 中, 一共有8种基本类型(primitive type), 其中有4种整型、2种浮点类型、1 种用于表示Unicode编码的字符单元的字符类型char (和1 种用于表示真值的boolean 类型。
整型
Java提供四种整型,具体如下:
类型 | 存储需求 | 取值范围 |
---|---|---|
int | 4字节 | -2147483648 ~ 2147483647(正好超过20亿) |
short | 2字节 | -32768 ~ 32767 |
long | 8字节 | -9223372036854775808 ~ 9223372036854775807 |
byte | 1字节 | -128 ~ 127 |
int
最常用byte
和short
类型主要用于特定的应用场合- 整型的范围与运行Java 代码的机器无关
- 长整型数值有一个后缀L或者l(例如40000000L)
- 十六进制数值有一个前缀0x或0X(例如0xCAFE)
- 八进制有一个前缀0,例如010对应八进制的8,八进制表示法比较容易混淆,建议最好不用
- 二进制有一个前缀0b或者0B(例如0b1001 就是十进制的9)
- 从Java7开始,可以为数字字面量加下划线,如1_000_000或者0b1111_0100_0010_0100_0000
浮点型
Java提供两种浮点型
类型 | 存储需求 | 取值范围 |
---|---|---|
float | 4字节 | 大约 ±3.40282347E+38F (有效位数为6 ~ 7 位) |
double | 8字节 | 大约 ±1.79769313486231570E+308 (有效位数为15 位) |
-
绝大部分程序采用
double
类型 -
float
类型的数值有一个后缀F或者f(例如,3.14F),没有后缀F的浮点数值(如3.14)默认为double类型,当然也可以在浮点数值后面添加D或者d(例如3.14D) -
可以使用十六进制表示浮点数,例如0.125=2-3可以表示为0x1.0p-3,具体原因见这里,浮点数如何转二进制?
-
用于表示溢出和出错情况的三个特殊的浮点数值
-
正无穷大,可用
Double.POSITIVE_INFINITY
表示 -
负无穷大,可用
Double.NEGATIVEJNFINITY
表示 -
NaN(不是一个数字),可用
Double.NaN
表示 -
例如一个正整数除以0的结果是正无穷大,计算0/0或者负数的平方根结果为NaN
-
【注】:检测一个特定的值是否等于
Double.NaN
// 不能使用等于,所有“ 非数值” 的值都认为是不相同的。 if (x = Double.NaN) // is never true // 可以采用以下方法 if (Double.isNaN(x))
-
char类型
占2个字节的字符型变量,智只能存放单个字符
Java采用的是Unicode编码方式,char是16位的,因此char在Java中占两个字节
char类型赋值
-
字符
// 使用单引号 // 英文字母 char a = 'k'; // 汉字 char a = '哈';
输出结果为
k
哈
-
整数
可以是十进制,二进制,十六进制等
// 十进制 char a = 5; char a = 0b011111111; char a = 0x123
输出结果为字符编码表中对应的字符
5
ÿ
ģ
-
字符的Unicode编码值
char a = '\u0061' // 结果为a,Unicode编码值0061对应的字符为a
char运算
-
char类型是可以运算的因为char在ASCII等字符编码表中有对应的数值。
-
对char类型字符运行时,直接当做ASCII表对应的整数来对待。
-
运算方式可以分为
char + char
-
char + int
```java int 'a' + 'b'; // 结果为195, a的ASCII值为97, b的ASCII值为98 char 'a' + 1; // 结果为b // 首先获取a的ASCII值,然后加1,最后输出ASCII第98个位置对应字符 ```
boolean类型
boolean类型有两个值:false和true。整型值和布尔值之间不能进行相互转换