java类型转换-菜鸟学习java第九天笔记
java类型转换
问1:为什么下面两句编译报错?
byte b=3;
b=b+2;
1)b是byte占8位,2是int占32位。
2)不同数据类型不能直接运算,对于整型可以运算,但需"自动类型提升"。
3)3转成int后,3+2是int,赋给b,造成"可能丢失精度"。
- - - - - - - - - - - - - - - - - - - - - - - - - -
问2:整数3为什么可赋给byte型变量b?
答2:因为3是常量,是固定的,且值在b范围内,所以可直接赋值,属于自动转换;而b+2的结果不确定,"可能丢失精度"。
- - - - - - - - - - - - - - - - - - - - - - - - - -
问3:非要赋值给b
答3:b=(byte)(b+2);//强制转换。如果砍掉部分有1的,就将丢失精度。
- - - - - - - - - - - - - - - - - - - - - - - - - -
问4:b=(byte)b+2,这样可以吗?
答4:这样强制转换是对b,而不是b+2。
- - - - - - - - - - - - - - - - - - - - - - - - - -
问5:强制换行什么时候用?
答5:比如运算结果是小数,但只保留整数。
- - - - - - - - - - - - - - - - - - - - - - - - - -
问6:'a'+1为什么返回98?
答6:a是char占16位,1是int占32位。所以运算结果提升为int。
class Test
{
public static void main(String[]args)
{
System.out.println('a');//返回a
System.out.println('a'+1);//返回98
System.out.println((char)('a'+1));//返回b
}
}
- - - - - - - - - - - - - - - - - - - - - - - - - -
所有的byte型、short型和char的值将被提升到int型。
如果一个操作数是long型,计算结果就是long型。
如果一个操作数是float型,计算结果就是float型。
如果一个操作数是double型,计算结果就是doulbe型。
本文来源 我爱IT技术网 http://www.52ij.com/jishu/5537.html 转载请保留链接。
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
