Java语言的基本数据类型共八种,也可称为内置类型,分别具有对应的包装类。字符型char,布尔型boolean以及数值型byte、short、int、long、float、double。数值型又可以分为整形(byte、short、int(默认类型)、long)与浮点型(float、double(默认类型))。它们的取值范围是固定的,不会随着机器硬件环境或软件环境的改变而改变。固定的存储空间正是Java可移植性、跨平台的原因之一。以上八种数据类型不存在“引用”的概念,其都是直接存储在内存中的内存栈上的,数据本身的值就是存储在栈空间中,而复杂数据类型,其“引用”是存储在有序的内存栈上的,而对象本身的值存储在内存堆上。
整数类型
byte 包装类 java.lang.Byte 其占1个字节 8位 默认初始值 0 取值范围 -2^(8-1)~2^(8-1)-1
short 包装类 java.lang.Short 其占2个字节 16位 默认初始值 0 取值范围 -2^(16-1)~2^(16-1)-1
int 包装类 java.lang.Integer 其占4个字节 32位 默认初始值 0 取值范围 -2^(32-1)~2^(32-1)-1 默认类型
long 包装类 java.lang.Long 其占8个字节 64位 默认初始值 0 取值范围 -2^(64-1)~2^(64-1)-1
实数类型
float 包装类 java.lang.Float 其占4个字节 32位 默认初始值 0.0
double 包装类 java.lang.Double 其占8个字节 64位 默认初始值 0.0 默认类型
字符型
char 包装类 java.lang.Character 其占2个字节 16位 默认初始值空格字符 取值范围 0 ~ 2^(16-1)-1
布尔类型
boolean 包装类 java.lang.Boolean 其占一位0或1 默认初始值false 取值 true false
当变量在方法中得初始化,在类中当属性时可以不用。
基本类型数据转型分为两种:自动转型和强制转型
自动转型:当一个数据类型较“小”的数据和一个数据类型较”大“的数据一起运行时,系统会自动将较”小“的转换为较“大”的类型。
在方法的调用中,如果实际参数类型较“小“,而函数的形参比较”大“时,除非有匹配的方法,否则会直接使用较”大”的形参函数进行使用。因为实参类型可自动的转为函数形参类型。
强制装换:恰恰相反,将数据类型”大“的转换为“小”的时候,用强制转换不过这时有可能会出现精度损失。转换方法例如int num = (nt)3.14 ; 后num为3;不四舍五入
byte short (char) int (默认类型) long float double 自动转换类型顺序 强制则反过来 。
常见问题:
各种基本数据类型进行混合运算,结果会是表达能力最强的那种。如:int和long运算,结果是long,整型和浮点型运算结果是浮点型。特殊的一点是:只要类型比int小(如char、byte、short),那么在运算之前,这些值会自动地转换成int。
例子:
byte b1 = 12;
byte b2 = b1 + 1; //在编译时出错了!因为b1+1已经是int型了!切记! 系统自动转型了! (byte) (b + 1)
float f = 1.3 ; //错的 因为 默认是 double类型 而且double类型高于float类型 解决的办法就是 float f = 1.3f; 或者是强转成float型。
long l = 1L ; long l1 = 2l;