java 基本的数据类型包括:1.数值型:整数类型byte,short,int,long 浮点类型:float,double 2.字符型:char 3.布尔型:boolean
按存储空间的小到大:byte(1字节)<short(2字节)<int(4字节)<long(8字节) float(4字节) <double(8字节)
隐式类型转换:也称自动类型转换是指不需要书写代码,由系统自动完成的类型转换。由于实际开发中这样的类型转换很多,所以java语言在设计时,没有为该操作设计语法,而
是由JVM自动完成。转换规则:从存储范围小的类型到存储范围大的类型。
强制类型转换,也称显式类型转换,是指必须书写代码才能完成的类型转换。该类类型转换很可能存在精度的损失,所以必须书写相应的代码,并且能够忍受该种损失时才进行该
类型的转换。转换规则:从存储范围大的类型到存储范围小的类型。
例: float f=3.4 这是错误的写法,3.4默认为double型的数据,将它赋给float是强类型转换,需要写代码:float f=3.4f
问题:short s=1 为什么是正确的?1默认为int类型,将它赋值给short是强类型转换。但此处却不用强制转换。
在JVM的指令集中可以看到,将char,short,byte保存到本地的指令和将int保存到本地的指令都是istore,也就是说char,short,byte没有专门的保存变量的指令,在JVM中保存类型和int是一样的,区别在于数据的范围。如果把一个不确定范围的int赋值给short就需要强制类型转换。
例: int i=1;short s=i;这么写就是错误的,i为不确定范围的变量。
新闻热点
疑难解答