刚刚接触Java 谁能给详细的讲解一下强制转换

来源:百度知道 编辑:UC知道 时间:2024/05/14 05:24:13
看书看了半天也没弄明白.....class Promote {
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,从低到高

刚刚开始接触java,遇到了问题,始终想不明白,谁能帮帮我 注塑 本人刚刚接触注塑这块地方,谁能告诉我下面的这个问题啊!详细叙述试模过程 我刚刚接触死神,想看一下tv版的,谁能给个能下的网站啊?? 我想学java语言,谁能给我详细的介绍一下呢 刚刚接触影像行业。 谁能提供<<今日人像>>杂志相关下载资料给我? 刚刚接触VB的问题 JAVA基类和派生类是什么概念???谁能给我个详细的定义?谢谢 Java:谁能详细的解释一下构造函数是怎么回事?谢谢 谁能把电脑的所有应用硬件给我详细的说一边越罗嗦越好!我刚接触电脑不久.想学习它 我是一名做机票销售的,刚刚接触这个行业,不知从何下手,希望大家能给我一些指点.谢谢.