JAVA 类型转换的问题 short s1 =1;s1+=1;是正确的。实际上是如何做的? 而s1 = s1 + 1;是错误的。因为s1 + 1是int型。不能自动转换为short。多谢各位。在线等 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 s1 += 1; // 包含了一个隐藏的转型!自动产生的转型悄悄地把int数值的高两位给截掉了s1 = s1 + 1; //编译错误,它试图将int数值赋值给short变量,它需要一个显式的转型: 貌似,java是在运算的过程中,才默认转换为int类型进行运算的吧,s1+=1,可能类似s1++吧,不属于运算过程吧~不清楚啊,等达人~ 1,short s1 =1;这是JAVA编译器的特别规定。因为1是一个int,但若常量值在skort能表达的范围内,则编译器自动做一个(short)1的强制转换。2,s1 += 1 等价于:s1=(short)(s1+1);3,s1 = s1 + 1;将s1+1中的s1类型提升为int,结果为int,结果就是你看到的错误了 容量小的类型自动转换成容量大的类型在计算。byte,short,char -->int-->long-->float-->doublebyte,short,char之间不转换。可以直接用int类型(仅限数字)数字赋给 byte、short、char类型,只要不超过它们的范围。例如:byte a = 1; byte b = 2; 正确byte c = a+b; 错误 s1 += 1我认为 += 右边的1是数字,所以没问题而s1 = s1 + 1 右边是表达式,所以不行。 s1 += 1 等价于:s1=(short)(s1+1); si += 1; 是隐式转换,首先把si转化成int类型,最后得到的si是int类型si = si + 1; si是short类型,需要1转换成short类型,需要显式转换,从高到低,不会自动转换,所以会出现错误。Java中的基础,好好掌握。 int的精度比short的精度高,short和int做运算结果为高精度的int类型;s1+=1是做自加运算,结果还是short。ps:数据类型的精度从低到高为 byte short int long float double;另外char和整形数据做运算结果是int的 怎么我的理解和以上有点不同,如有错误望指导o(∩_∩)o...short s1 = 1; 编译正确是因为 int 类型的1 没有超出short的范围,所以不会提示出错s1 = s1 + 1; s1是一个short类型的数,而1是一个int类型的数,int类型不能和short类型进行运算 s1 += 1 等价于:s1=(short)(s1+1); 关于接口的一些疑问??? 回复都给分!! java程序题 用Runtime.getRuntime().exec(*.bat)启动进程后不能关闭(jdk1.4.2) 请问大侠们,如何计算程序的执行时间(毫秒级的)!!谢谢了 你能编出什么样的程序 哪位大哥能帮小弟分一下java的种类? java.beans.Beans.instantiate的问题 从表单中提交出去,如果控件值中带有空格, linux下的jdk是不是跟windows下的不一样? 痛心疾首!!!!!我的Windows XP上怎么无法安装Jbuilder 6.0 关于java gui 编程问题 java 对象序列化怎么保存对象呀。
1,short s1 =1;
这是JAVA编译器的特别规定。因为1是一个int,但若常量值在skort能表达的范围内,则编译器自动做一个(short)1的强制转换。
2,s1 += 1 等价于:s1=(short)(s1+1);
3,s1 = s1 + 1;将s1+1中的s1类型提升为int,结果为int,结果就是你看到的错误了
byte,short,char -->int-->long-->float-->double
byte,short,char之间不转换。可以直接用int类型(仅限数字)数字赋给 byte、short、char类型,只要不超过它们的范围。例如:
byte a = 1; byte b = 2; 正确
byte c = a+b; 错误
si = si + 1; si是short类型,需要1转换成short类型,需要显式转换,从高到低,不会自动转换,所以会出现错误。
Java中的基础,好好掌握。
ps:数据类型的精度从低到高为 byte short int long float double;另外char和整形数据做运算结果是int的
s1 = s1 + 1; s1是一个short类型的数,而1是一个int类型的数,int类型不能和short类型进行运算