-
Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。
类型 位数 范围 默认值 包装类型 byte 8bit -128(-2^7)-- 127(2^7-1) 0 Byte short 16bit -32768(-2^15)-- 32767(2^15 - 1) 0 Short int 32bit -2,147,483,648(-2^31)-- 2,147,483,647(2^31 - 1) 0 Integer long 64bit -2^63-- 2^63 -1 0L Long float(IEEE 754) 32bit 单精度浮点数有效数字8位 0.0f Float double(IEEE 754) 32bit 双精度浮点数有效数字16位 0.0d Double boolean 1bit true false false Boolean char 16bit 单一的 16 位 Unicode 字符 \u0000(空格) Character 补充:
1)float:1bit(符号位) 8bits(指数位) 23bits(尾数位)
2)float的取值范围:-2^128 ~ +2^128,也即-3.40E+38 ~ +3.40E+38;123.45e+3是单精度数,123.45是尾数部分,E3是指 数部分,相当于123.45乘以10的3次幂
3) double:1bit(符号位) 11bits(指数位) 52bits(尾数位)
4)double的指数范围为-1023~+1024,并且指数位是按补码的形式来划分的。-2^1024 ~ +2^1024,也即-1.79E+308 ~ +1.79E+308。 -
数据类型
1)自动类型转换:
低 ------------------------------------> 高
byte,short,char—> int —> long—> float —> double
2)数值溢出int a= (int) (Math.pow(2,31)-1); System.out.println(a); a=a+1; System.out.println(a);
-
包装类型
1)集合类泛型只能是包装类;
2)定义类时,成员变量不能有默认值;基本数据类型的成员变量都有默认值,如果在进行数据插入操作时,则可能会造成错误。
3)方法参数允许定义空值; -
自动装箱:自动将基本数据类型转换为包装类型。
1) 示例:
Integer i1 = new Integer(8);
Integer i2 = Integer.valueOf(8);
Integer i3 = 8;//java5之前不能使用
2)执行i1时会新创建一个对象(i1== i2, i1==i3全为false)
执行i2和i3时会执行Integer的valueof方法,如果值的范围是low和high之间的,则是同一个对象。
-
自动拆箱:自动将包装类型转换成基本数据类型。
1)示例:
int i4=i3;
int i5=i3.intValue();
2)在执行i4时,会对i3进行拆箱操作
-
拆箱和装箱数值的比较
1 Integer num1 = 100; 2 int num2 = 100; 3 Long num3 = 200l; 4 System.out.println(num1 + num2); //200 5 System.out.println(num3 == (num1 + num2)); //true 6 System.out.println(num3.equals(num1 + num2)); //false
1)当一个数据类型与封装类进行==、+、-、*、/、运算时,会将封装类进行拆箱,对基本数据类型进行运算
2)num3.equals(num1 + num2)为false是因为先判断num1 + num2的包装类是否为Long,如果是在进行数值的比较。
java常见数据类型和自动装箱拆箱
最新推荐文章于 2024-06-04 12:48:27 发布