问题描述
- JAVA类型转换的问题……。
-
byte b = 20; //20是为默认类型int类型。大类型赋小类型却不用转型。 float f = 3.25F; //3.25是为默认类型double类型。大类型赋小类型要转型。 //为什么第一个不需要转型? //************************************************* byte b1=20; byte b2= 30; byte b3= b+b1; //编译报错,因为b+b1的默认类型是int,所以需要强转; float a = 30.0f; float a1 = 40.0f; float a2= a+a1; //这里为什么编译能通过,难道a+a2不是为默认类型double吗
?
解决方案
你刚刚定义了一个byte 类型的20,为什么要转型?
3.25F,F只是标记前面的3.25是个float类型。难道你要这样定义吗float f =(double)3.25F ?这是个什么语法呢...
在刚刚定义数据类型的时候,不涉及转换,因为你定义的就是该类型。在之后的赋值或调用的时候才涉及类型转换。
比如:
byte a =20
short b=30
int c = a+b
在计算c = a+b 的时候才有类型转换,float同理
解决方案二:
因为20还在byte的取值范围内,所以不需要强转,换成200就需要了
时间: 2024-12-29 17:47:17