JAVA中给变量赋值的问题

在JAVA中,Byte和Short是例外,可以直接把int赋值给其,比如bytea=5且如果写bytea=5*10也是可以编译打印的,结果是50但是如果我先写bytea=... 在JAVA中,Byte和Short是例外,可以直接把int赋值给其,比如 byte a = 5

且如果写 byte a = 5 * 10 也是可以编译打印的,结果是50

但是如果我先写 byte a = 5 ,再写 byte b = a * 10 则损失精度,

我想问,byte b = a * 10中的a是byte型,10 是int型,那么乘起来应该是还是int,既然前面说了byte和short可以用Int赋值,且如果是直接赋值,比如byte a = 5 或者 byte a = 5 * 10 也确实可以,但为什么先写 byte a = 5 ,再写 byte b = a * 10 就不行了???
展开
 我来答
lrw183
2012-08-25 · TA获得超过5150个赞
知道大有可为答主
回答量:5692
采纳率:50%
帮助的人:4606万
展开全部
byte a = 5 或者 byte a = 5 * 10 后面都是一个常量整数,
只要是不超过byte精度的常量 都正确
但是你下面的 byte b = a * 10
a是变量了,变量参与运算,会自动往大类型转换,于是结果就是int型
你把int赋给byte b自然就超过精度了
要想通过必需强转
kouddy
2012-08-25 · TA获得超过217个赞
知道答主
回答量:65
采纳率:0%
帮助的人:61.7万
展开全部
在JAVA里面只能从小的data type转换到大的data type。
所以说你的程序, "byte a = 5; byte b = a * 10; "会有编译错误。
10是int, byte b = a * 10在编译的时候会尝试着让10变成byte,但这是错误的。
正确的程序应该是”byte a = 5; byte b = (byte)(a * 10); "
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fang57203049
2012-08-26
知道答主
回答量:8
采纳率:0%
帮助的人:7.8万
展开全部
这个是类型转换问题,int比byte要高,我们都知道低类型转换为高类型,系统默认转换,而且不会损失精度,而高类型转换低类型,则会出现损失精度,不准确等,要想把高类型转为低类型,只能进行类型强转。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
苍诗蕾魏珺
2020-01-18 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:34%
帮助的人:611万
展开全部
你可能想错了了哦那个方法a.pick()肯定有返回值他的返回值也是double类型,其实
area=a.pick()不是把方法赋给double变量area只是把方法返回的double类型的值赋给了area所以这种是可以的。相当于你直接这样的写法例子:
double
area
=
2.2d;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式