请各位帮忙解决一个数据类型的小问题,如果问题太简单请大家不要喷我,我是新手。public static void main(String[] args)
{
byte b1=3,b2=4,b;
b=b1+b2;
b=3+4;
System.out.println("b="+b);
}在上面的的小程序中b=3+4;是正确的
而b=b1+b2;是错误的。 这个令我很不解,请指点在b=b1+b2;中b是byte类型的,b1,b2也是byte类型的,怎么能出现损失精度呢?
在b=3+4;中 b是byte类型的,3,4都是int类型的,也没看到有类型提升啊,怎么可以通过呢?
{
byte b1=3,b2=4,b;
b=b1+b2;
b=3+4;
System.out.println("b="+b);
}在上面的的小程序中b=3+4;是正确的
而b=b1+b2;是错误的。 这个令我很不解,请指点在b=b1+b2;中b是byte类型的,b1,b2也是byte类型的,怎么能出现损失精度呢?
在b=3+4;中 b是byte类型的,3,4都是int类型的,也没看到有类型提升啊,怎么可以通过呢?
解决方案 »
- java 开发----如何把一个SQl result 结果集 输出成.csv 文件??
- 关于nio,急啊,高手帮帮忙
- JAVA的Timer方面超难的问题!!!!望大家能帮忙!!谢谢
- 窗体在屏幕中的位置怎么定位阿
- java中有没有类似C++中到拷贝构造函数,我想实现对象拷贝?
- 怎么样判断一个数组中的元素是否重复呢?
- editplis的问题
- 关于解释命令java
- 如何在Java rcp程启动时自动启动一个线程
- 请问工厂方法是怎么一回事,怎么编写?
- [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]用户 'ppc' 登录失败。
- JTable中如何添加控件
byte b;
b = 128 + 0; //Type mismatch: cannot convert from int to byte
b = 128 - 1; //不报错
b=b1+b2;
byte类型的值和任何类型的值相加都会自动提升类型,本例中会自动提升为int型。
需要强制类型转换 b=(byte)(b1+b2);
给你举个例子:byte a=-2;
byte b=-a;
这个也会报错,对byte型取负会自动提升为int,所以要强制转换。