02-数据类型
数据类型
Java数据类型分为两大类,基本数据类型和引用类型。
每一种数据都定义了明确的数据类型,在内存中分配了不同大小的内存空间(字节)。
基本数据类型:byte[1]、short[2]、int[4]、long[8]、float[4]、double[8]、char[2]、boolean[1]。
引用类型:类(class)、接口(interface)、数组([])。
这里需要注意,String不属于八种基本数据类型,String是一个对象,实际上是通过使用字符数组来存储数据的。

1.基本数据类型
整数类型(byte、short、int、long)
Java的整数类型就是用于存放整数值的,比如5,10,15,20
a) Java各整数类型有固定的范围和字段长度,不受具体操作系统的影响,以保证Java程序的可移植性。
b) Java的整型常量默认为int型,声明long型常量,须后加“l”或"L"
c) Java程序中变量常声明为int型,除非不足以表示大数,才使用long型
d) bit:计算机中最小的存储单位。byte:计算机中基本存储单元。1byte = 8bit。

public class IntDetail{ public static void main(String[] args){ //Java的整型常量(具体值)默认为int型,声明long型常量,须后加“l”或"L" int n1 = 1; //4个字节 System.out.println("数据类型:"+getType(n1)); //int n2 = 1L; (错误: 不兼容的类型: 从long转换到int可能会有损失) long n3 = 1L; //8个字节 System.out.println("数据类型:"+getType(n3)); } //获取变量类型方法 public static String getType(Object o){ //使用int类型的getClass()方法 return o.getClass().toString(); } }
浮点类型(float、double)
Java的浮点类型可以表示一个小数,比如3.14,12.56
a) 与整数类型类似,Java浮点类型也有固定的范围和字段长度,不受操作系统的影响,,以保证Java程序的可移植性。
b) Java的浮点型常量默认为double型,声明float型常量,须后加"f"或"F"
c) 浮点数在机器中的存放形式,浮点数 = 符号位 + 指数位 + 尾数位
符号位:判断当前数字是正数还是负数,0表示正数,1表示负数
指数位:float和double的范围是由指数的位数来决定的
尾数位:float和double的精度是由尾数的位数来决定的
d) 尾数部分可能丢失,造成精度损失(小数都是近似值)
单精度float:1bit符号位、8bit指数位、23bit尾数位
双精度double:1bit符号位、11bit指数位、52bit尾数位

public class FloatDetail{ public static void main(String[] args){ //Java的浮点型常量(具体值)默认为double型,声明float型常量,须后加"f"或"F" //float num1 = 1.1; (错误: 不兼容的类型: 从double转换到float可能会有损失) float num2 = 1.1F; //4个字节 System.out.println("数据类型:"+getType(num2)); double num3 = 1.1; //8个字节 System.out.println("数据类型:"+getType(num3)); double num4 = 1.1F; //这个可以编译通过,8个字节的变量可以存放四个字节的数据 System.out.println("数据类型:"+getType(num4)); //科学计数法 System.out.println(5.12e2); //5.12*10^2 = 512.0 System.out.println(5.12E-2); //5.12*10^(-2) = 0.0512 } //获取变量类型方法 public static String getType(Object o){ //使用int类型的getClass()方法 return o.getClass().toString(); } }