社区
Java SE
帖子详情
我真笨,这个问题都想不通,请大家进来帮忙看一下.
longyuxinxinxin
2007-07-18 08:15:19
class A
{
public static void main(String args[])
{
byte a=3*3;//不提示精度丢失,难道在运算的时候没有自动转换为int型?
byte b=3;
byte b=b*3;//提示精度丢失,此时运算的时候怎么会自动转换成int型?
}
}
...全文
565
18
打赏
收藏
我真笨,这个问题都想不通,请大家进来帮忙看一下.
class A { public static void main(String args[]) { byte a=3*3;//不提示精度丢失,难道在运算的时候没有自动转换为int型? byte b=3; byte b=b*3;//提示精度丢失,此时运算的时候怎么会自动转换成int型? } }
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lang9527
2007-07-19
打赏
举报
回复
根据你定义类型时的数据如果不参加运算会自动兼容,但你第7行进行运算后面的数值会成为标准的int型,所以会出现这种情况(定义属性名重复,下次注意).
asdfasdf123
2007-07-19
打赏
举报
回复
确实是一个问题。不错,学习!
Don_Juan
2007-07-19
打赏
举报
回复
byte a=3*3;//这一句自动计算出了3*3值 ,如果你写成128*1他也是报错的
byte b=3;
byte b=b*3//这一句因为用了变量,所以没有算出值,3是int,所以b*3的值是int敷给b时会报错
qnprograme
2007-07-19
打赏
举报
回复
b*3, 高精度的数据无法隐式的转成高精度的
longyuxinxinxin
2007-07-19
打赏
举报
回复
结帐
longyuxinxinxin
2007-07-19
打赏
举报
回复
有道理,
zapdos
2007-07-19
打赏
举报
回复
有问题用javap
C:\java>javap -c test
Compiled from "test.java"
class test extends java.lang.Object{
test();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: bipush 9
2: istore_1
3: iconst_3
4: istore_2
5: iload_2
6: iconst_3
7: imul
8: istore_3
9: return
}
正如Don_Juan同学说的byte a=3*3;这一句在编译器眼里就是byte a=9;
可能是编译器优化的结果
火龙果被占用了
2007-07-19
打赏
举报
回复
与 Don_Juan 说的一致,由于 3 是 int 类型的,与 b 相乘后也就转型成了 int 类型,只要改成
b = (byte) (b*3); 或 b *= 3; 就可以了。
longyuxinxinxin
2007-07-19
打赏
举报
回复
楼上的真的意思?你说:"你不要想其他,就是从数学的角度这样表达安全吗?所以在运行a*3的时候就要把结果保存为int.再赋值的时候就会错"
谁规定的保存为Int哪本书有写?为什么不保存为double.
算了,我不是给孙鑫老师打电话问一吧,有结果我再发出来,
Don_Juan
2007-07-19
打赏
举报
回复
这个问题要怎么说呢?你要知道byte a=3*3;这一句在编译器眼里就是byte a=9;你只要后面的计算值在-128~127之间,就不会报错。你写成byte a=127*1 和byte a=128*1就应该懂 了。
byte b=a*3;这一句错的原因其实是编译器从安全的角度来看,是不会通过的。你不要想其他,就是从数学的角度这样表达安全吗?所以在运行a*3的时候就要把结果保存为int.再赋值的时候就会错
s74110s
2007-07-19
打赏
举报
回复
学习
Alaylm
2007-07-19
打赏
举报
回复
对不起,错字一打堆,呵呵。
Alaylm
2007-07-19
打赏
举报
回复
首先3只是一个字面值,如果说按照你的想法的话,那么就是3为int类型了?呵呵,谁规定的啊?
Alaylm
2007-07-19
打赏
举报
回复
byte 站用一个字节空间,表示范围:0-255
byte a = 3*3;
这个时候a 站用一个字节空间。值为就,并没有出现越界的现象;
byte b = 3;
a = b*3; b多站用的空间为int类型,让int 类型的字节空间缩减为byte类型示为不安全,会导致时局丢失;
longyuxinxinxin
2007-07-19
打赏
举报
回复
class A
{
public static void main(String args[])
{
byte a=3*3;//不提示精度丢失,难道在运算的时候没有自动转换为int型?
byte b=3;
byte c=b*3;//提示精度丢失,此时运算的时候怎么会自动转换成int型?
}
}
realcbb
2007-07-19
打赏
举报
回复
1、Duplicate local variable b
2、Cannot convert from int to byte
feihua317
2007-07-18
打赏
举报
回复
估计有一个模糊精度的概念,当3*3的时候,两个3的精度都是比较模糊的概念,当其结果赋值给byte时,就是byte的精度了。而用byte类型的值*3时,就会认为是用byte*int,最后向高精度转换为int值。最后导致提示精度丢失!
以上是我的估计。。
joejoe1991
2007-07-18
打赏
举报
回复
学习
大一c语言考试考什么潍坊学院,重庆邮电大学师哥师姐们
请
进来
一下
~~~~~!...
重庆邮电大学师哥师姐们
请
进来
一下
~~~~~!以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看
一下
吧!重庆邮电大学师哥师姐们
请
进来
一下
~~~~~!通讯学院是最好的,里面包括通讯工程 电子资讯工程 电子资讯科学与技术 和资讯工程 我就是通讯学院的 学这个对数学和物理的要求是相当的高 如果不太好的话最好别考虑学这个 会学的很痛苦的 有...
关于主动画中load动画和动态文本的共同运用
问题
我在主动画中,想要loadmovie一个swf
进来
,这个swf里有一个动态文本框,此文本框要用来显示文本文件中的内容,试了几次,还是不行,最后还是找斜线兄,
帮忙
才解决,从中我也悟出一些东西,老鸟看了不要笑我笨,菜鸟也好学习
一下
。 开始我在主动画里这样写: movie.loadmovie("texts.swf"); loadVariablesNum("texts.txt...
本版1年以内的所有 面经题目
不敢保证全部涵盖,大部分的都在。 我自己找了一遍,大家一起用着都方便。 不过只是含有题目的帖子 我才包含
进来
了,只分享经验没贴题目的 我都没有包含
进来
。 大家复习着方便。 1. 一个sorted interger Array[1...N], 已知范围 1...N+1. 已知一个数字missing。 找该数字。 把原题改为unsorted,找mi...
PyQt5 导入失败;pycharm无法识别pyqt5的
问题
(安装成功后在pycharm运行出现 No module named ‘PyQt5‘)
首先我们先看报错: 这里说明
一下
,我用的是Windows7系统,我在出来你这个
问题
之前,是成功安装好了PyQt5,包括sip、PyQt5、PyQt5-tools都已经配置好(PyQt5安装的都是最新的);python版本是python3.6.5。 在这种情况下出现的上述
问题
(解决这个
问题
浪费了很长时间) 如果你也是遇到这种
问题
,接下来讲
一下
解决方案: ...
题解 | #F. 一个经典概率
问题
(提供一个好想好实现不用积分的方法)#
小米公司校招内推码: N36TTHA 投递链接: https://xiaomi.jobs.f.mioffice.cn/referral/campus/posit。小米公司校招内推码: N36TTHA 投递链接: https://xiaomi.jobs.f.mioffice.cn/referral/campus/posit。越早投递,越offer!#浅聊
一下
我实习的辛苦费#之前拿了浙江省北大信息研究院的嵌入式实习offer,实习工资按天算的,200一天,其他的话没有任何多的餐补了,
请
假就没当天工资,待遇一。
Java SE
62,623
社区成员
307,257
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章