黑马程序员技术交流社区

标题: 基本数据类型的一不解 [打印本页]

作者: 熊永标    时间: 2013-4-10 17:27
标题: 基本数据类型的一不解
short s=3为什么不会出错,java整数默认类型是int,那把一个int类型赋给一个short类型,为什么不会出错呢.请求答案
作者: 黑马-郑玉元    时间: 2013-4-10 17:49
jvm会自动检测等号右边的常量值是否在左边类型范围内,如果在这个范围内,那么是可以直接赋值。
但是float f = 1.23,这个式子是非法的,因为浮点型不能用二进制精度描述。
作者: 王潇男    时间: 2013-4-10 17:51
short类型的数据参与运算时会自动转化成int类型。
把一个int类型的值赋给一个short类型的会出错,需要进行强制类型转换
short a,b,c;
a=1;b=2;
c=a+b;(会报错:不能从int转换为short)
c=(short)(a+b); 则可通过编译
作者: 通行天下    时间: 2013-4-10 17:53
在执行这一条语句时,系统会去先判断3是否在short的范围内,而short在内存是占两个字节,也就是说其范围为:—65536——————65535。所以不会出错的。
作者: 胡滨    时间: 2013-4-10 18:58
这是在声明变量的时候初始化值,这时候有判断的过程,检测值有没有超过范围。

java一种强类型语言,是为了避免变量之间的混乱,能够使变量之间的使用更规范,习惯了就好。
作者: Keith    时间: 2013-4-10 20:50
整型,字符型,浮点型的数据在混合运算的中相互转换时遵循以下的原则:
容量小的类型自动转换为容量大的数据类型;数据类型按容量大小排序为:
byte,short,char->int->float->double
byte,short,char之间不会互相互换,他们三者在计算时首先转换成int类型
容量大的数据类型转换为容量小的数据类型时,要加上强制转换符,但可能造成精度降低或溢出

作者: lcjasas    时间: 2013-4-10 21:32

short x = 1;
这样是不会出错的。


楼上的有一楼说short的范围是-65536~65536是错的,不信自己试一下。
short的范围是-32768~32768(2的(16-1)次幂),32767就可以编译通过了。


short是short int的缩写,所以包含于int。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2