刚刚接触Java 谁能给详细的讲解一下强制转换
来源:百度知道 编辑:UC知道 时间:2024/05/14 05:24:13
public static void main(String args[]) {
byte b = 42;
char c = 'a';
short s =1024;
int i = 50000;
float f = 5.67f;
double d = .1234;
double result = (f * b)+(i/c)-(d * s);
System.out.println((f * b)+ "+" + (i/c) + "-" + (d * s));
System.out.println("result = "+ result);
}
}
你这里没有用到强制转型啊
强制类型转换也称作显式类型转换;
如果被转换的值的数据类型大于其目标类型,将会丢失部分信息;
如:
int x = 65;
char ch = x;
这样的语句将报错,因为char类型小于int类型,编译器无法将其自动转换,只能进行强制转换:
int x = 65;
char ch = (char)x;
不难看出,在有类型提升的情况下,编译器将自动进行类型转换,否则就要进行强制类型转换;
类型提升应遵循如下规则:
两种类型必须兼容,且目标类型大于源类型,例如:
byte、char和short类型都可以提升为int型。
对于表达式而言,其最终结果将会与表达式中最高的数据类型相同。
如float转成int必须要强转
float f=1.1;
int i=(int)f;
所谓的强制类型转换就是不同的类型之间,不满足自动转换的条件就需要我们强制类型转换。
先说一下自动类型转换规则
1.精度小的向精度大的转换
2.字节短的向字节长的转换
3.char和int可以互换.char是用ASCII码表示
类型从小到大牌排列:byte-int=char-long-float-double
不满足这些条件就要强制转换
在变量前面加上类型就可以了
byte,short,char三种数据类型是平级的,因此不能相互自动转换,可以使用强制类型转换:short i=44;char c=(char)i;
另高级向低级转换也需要强制转换:float i=0.2f; int num=(float)i;
这种转换肯定可能会导致溢出或精度的下降.
而低级向高级数据类型可以自动转换
byte,short,char<short<int<float<double,从低到高