Java 是一种强类型的语言,声明变量时必须指明数据类型。
变量(variable)用来存储值,变量的值占据一定的内存空间。不同类型的变量占据不同的大小。
Java 有两大数据类型:内置数据类型,引用数据类型(这里有几个概念需要分清:变量,引用,对象)
1.Java中的8种基本数据类型
包括4 种整型、2 种浮点型、1 种字符型、1 种布尔型,请见下表。
数据类型 | 说明 | 所占内存 | 举例 | 备注 |
---|---|---|---|---|
byte | 字节型 | 1 byte | 3, 127 | |
short | 短整型 | 2 bytes | 3, 32767 | |
int | 整型 | 4 bytes | 3, 21474836 | |
long | 长整型 | 8 bytes | 3L, 92233720368L | long最后要有一个L字母(大小写无所谓)。 |
float | 单精度浮点型 | 4 bytes | 1.2F, 223.56F | float最后要有一个F字母(大小写无所谓)。 |
double | 双精度浮点型 | 8 bytes | 1.2, 1.2D, 223.56, 223.56D | double最后最好有一个D字母(大小写无所谓)。 |
char | 字符型 | 2 bytes | 'a', ‘A’ | 字符型数据只能是一个字符,由单引号包围。 |
boolean | 布尔型 | 1 bit | true, false |
*1B(byte,字节)= 8 bit(位,比特)
*实际上,Java中还存在另外一种基本类型 void(无返回值),它也有对应的包装类 java.lang.void,不过我们无法直接对它们进行操作。
2.整型
对于整型数据,通常情况下使用 int 类型,它的范围是-2^31—2^31-1,即-2147483648—2147483647。但如果表示投放广岛长崎的原子弹释放出的能量,就需要使用 long 类型了。byte 和 short 类型主要用于特定的应用场合,例如,底层的文件处理或者需要控制占用存储空间量的大数组。
在Java中,整型数据的长度与平台无关,这就解决了软件从一个平台移植到另一个平台时给程序员带来的诸多问题。与此相反,C/C++ 整型数据的长度是与平台相关的,程序员需要针对不同平台选择合适的整型,这就可能导致在64位系统上稳定运行的程序在32位系统上发生整型溢出。
另外,不像 C/C++,Java 不支持无符号类型(unsigned)。
3.浮点型
float 类型有效数字最长为 7 位,有效数字长度包括了整数部分和小数部分。例如:
- float x = 223.56F;
- float y = 100.00f;
注意:每个float类型后面都有一个标志“F”或“f”,有这个标志就代表是float类型。
double 类型有效数字最长为 15 位。与 float 类型一样,double 后面也带有标志“D”或“d”。例如:
- double x = 23.45D;
- double y = 422.22d;
- double z = 562.234;
注意:不带任何标志的浮点型数据,系统默认是 double 类型。
大多数情况下都是用 double 类型,float 的精度很难满足需求。
4.基本数据类型间的转换
基础数据类型的转换,分为自动转换和强制转换。
自动转换按从低到高的顺序转换;强制转换的格式是在需要转型的数据前加上“( )”
低 ------------------------------------> 高
byte,short,char—> int —> long—> float —> double
强制转换的格式是在需要转型的数据前加上“( )”,然后在括号内加入需要转化的数据类型。有的数据经过转型运算后,精度会丢失,而有的会更加精确。