基本数据类型
- 整数类型
- byte:占一个字节,-128~127
- short:占2个字节,-32768~32767
- int:占4个字节范围,-2147483648~2147483647
- long:占8个字节范围,-9223372036854775808~9223372036854775807
- 浮点类型
- float:占4个字节
- double:占8个字节
- 字符类型:char,占2个字节
- 布尔类型:占1位,true或者false
引用数据类型
- 类
- 接口
- 数组
类型转换
由低级到高级:byte,short,char—>int—>long—>float—>double
-
强制类型转换:高级—>低级,(类型)变量名
public class Demo01{ public static void main(String[] args){ int i = 128; //定义一个int类型的整数 short a = (short)i; //转换为更低级的short类型 System.out.println(i); System.out.println(a); } }
-
自动类型转换(非强制):低级—>高级,不需额外加括号前缀
public class Demo01{ public static void main(String[] args){ int i = 128; //定义一个int类型的整数 double b = i; //转换为更高级级的double类型,无需加前缀 System.out.println(i); System.out.println(b); } }
-
注意
-
不能对布尔值进行转换
-
不能把对象类型转换为不相干的类型
-
int可与char相互转换,有一个编码表对应
//只有核心代码 char c = 'a'; int d = c+1;//包含类型转换,是由高级char到低级int,所以自动转换 System.out.println(d) System.out.println((char)d)
见以上代码,输出结果分别为98、b
-
转换的时候可能存在内存溢出,或者精度问题
-
内存溢出
public class Demo01{ public static void main(String[] args){ int i = 128; //定义一个int类型的整数 byte c = (byte)i; //转换为更低级的byte类型 System.out.println(i); System.out.println(e); } }
见以上代码,i为int类型,值为128,现强制转换为byte类型,由于byte类型值最大为127,因此内存溢出,输出结果e为byte类型,值为1
-
精度问题
浮点数转换为整数不会四舍五入取整,也不是向上取整或向下取整,而是直接去掉小数点后面:- (int)23.7输出结果为23
- (int)-45.89f输出结果为-45
-
-