byte a=1,b=1;
a=a*b;
System.out.println(a);
结果编译器说损失精度..奇怪 将 a=a*b换成a*=b就可以了;为什么呢
解决方案 »
- String如何按照一个指定的charset解压出一个byte流
- 1到99的数字,不限制加数的情况下,有多少可能它们的和等于100,如:1+99=100, 1+2+97=100
- 怎么使用arrays的一些方法啊?
- 求非对称加密的源代码,如RSA。
- java.swing的应用问题
- 怎样用swing 实现在读取一个很大的文件的同时弹出一个窗口显示读取进度?
- 如何将一个图象bmp,jpg的文件转换为Base64编码文件
- 在线谈谈:classpath 再讨论(简直是恶梦!!!)
- 哪位大虾有together5.5的key?
- IDEA Spring boot修改代码无法生效
- 一个小的算法题
- 请问一个怎样把数据放进去数据库里面?错在哪里?
后者是由前面的A的类型决定的
a*=b = (byte)(a * b)
a*=b是由前面的a的类型决定的
这是一个很基础的类型转化的问题.
后者是由前面的A的类型决定的
a=(byte)(a * b);
System.out.println(a);
a*b后的类型为int,将它赋值给a(byte型)当然会报错.
但是 a*=b 就不存在类型自动增长的问题了.