[100分]为什么在java中如此简单的程序、、、、 byte a=1;byte b=1;short c=a+b; 、、、会报出如下错误!!?
......
byte a=1;
byte b=1;
short c=a+b;
........
"App.java": possible loss of precision;found : int,required: short at line 5, column 18
问题点数:100、回复次数:22Top
1 楼zhangsq(中zhangsq)回复于 2005-11-28 11:37:03 得分 0
upTop
2 楼zhangsq(中zhangsq)回复于 2005-11-28 11:37:11 得分 0
upTop
3 楼skycncomp(闭关修练到年底)回复于 2005-11-28 11:40:28 得分 1
楼主想想byte + byte =什么类型了???Top
4 楼ypdarling(冲动是魔鬼!)回复于 2005-11-28 11:56:13 得分 2
这样就正确了,
byte a=1;
byte b=1;
short c=(short)a+b;
两个byte相加的结果是一个int,不能赋给short,必须进行强制类型转换。Top
5 楼OnlyFor_love(『勾勾手指头 一辈子不分手』)回复于 2005-11-28 12:16:49 得分 1
原因很简单,是因为你对java的基本数据类型了解的不够。
不象是php,定义的变量的类型会随着赋给它的值的变化而变化。Top
6 楼oak_2005(yutianlu2005)回复于 2005-11-28 12:55:00 得分 2
upTop
7 楼yanxiazhiqiu(if the words don't come my way...)回复于 2005-11-28 12:56:17 得分 0
蹭分蹭分!!Top
8 楼treeroot(旗鲁特)回复于 2005-11-28 13:02:19 得分 2
short c=(short)(a+b);
Top
9 楼sxbcsdn(石破)回复于 2005-11-28 13:06:02 得分 2
"App.java": possible loss of precision;found : int,required: short at line 5, column 18
两个数进行操作的时候,得到的结果在JAVA中默认是int型的
如果要赋给一个short的,就必须进行强制转换。Top
10 楼xicheng_my_love()回复于 2005-11-28 13:07:21 得分 10
看一下java编程思想 什么都明白了
其中一条叫promotion
就是两个byte相加,在计算之前会把byte先转化为int,结果为int,左边为short,java中要求显示cast
Top
11 楼zhkchi(火焰神)回复于 2005-11-28 13:08:23 得分 2
强类型语言Top
12 楼ypdarling(冲动是魔鬼!)回复于 2005-11-28 13:09:22 得分 5
呵呵 我少写了一括号
应该是
byte a=1;
byte b=1;
short c=(short)(a+b);Top
13 楼vvpang(NullPointerException)回复于 2005-11-28 13:16:57 得分 2
要显示的类型转换Top
14 楼oak_2005(yutianlu2005)回复于 2005-11-28 13:27:49 得分 50
首先,java是强类型语言,当两种类型彼此不兼容时要进行类型转换,如
byte a=1;
byte b=1;
short c=(short)(a+b);
a+b后的结果将自动提升为int型,要把它赋值给short型 的变量c就要进行类型转换
short c=(short)(a+b);。其中(a+b)前的(short)是要转化为的数据类型
关于类型的自动提升,java定义若干适用于表达式的类型提升规则:
第一,所有的byte型、short型和char型的值将被提升到int型;
第二,如果一个操作数是long型,计算结果就是long型;
第三,如果一个操作数是float型,计算结果就是float型;
第四,如果一个操作数是double型,计算结果就是double型。
Top
15 楼niko7(掠水无痕)回复于 2005-11-28 13:34:47 得分 5
楼上讲的很清楚,不错!支持Top
16 楼nationally(自由鸟)回复于 2005-11-28 13:43:10 得分 2
对,支持。Top
17 楼treeroot(旗鲁特)回复于 2005-11-28 13:54:18 得分 5
第三,如果一个操作数是float型,计算结果就是float型;
这条对吗??Top
18 楼treeroot(旗鲁特)回复于 2005-11-28 14:34:45 得分 5
是对的Top
19 楼shouyenet1(yyhw)回复于 2005-11-28 14:41:32 得分 2
确实应该注意Top
20 楼sunqihui(太阳鸟)回复于 2005-11-28 14:46:16 得分 2
哈哈,SCJP上有这样的题...Top
21 楼laou2008(濯宇)回复于 2005-11-28 14:59:31 得分 0
基本数据类型:两个数相加,至少是INT类型,或许这样说有点语法问题Top
22 楼gaoxueting1984(鸭片儿鱼)回复于 2005-11-29 22:44:18 得分 0
蹭分蹭分!!Top




