网上有关“Java强制数据类型转换”话题很是火热,小编也是针对Java强制数据类型转换寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。
规则可不少,挺乱的其实:
强制数据类型转换: int nowC = (int)c;
还可以这样,使用intValue方法,返回一个int值:
Double d = 5 / 9.0 * (f - 32);
int nowC = d.intValue();
Double类是基本数据类型double所对应的包装类。
基本数据类型转换的规则:
Java中基本数据类型共有8种,其中boolean类型不能转换为其它类型,其它类型也不能转换为boolean型
除了boolean类型,还有7种,按照它们的容量(也就是表数范围,就是能表示的数的大小范围,比如char是0——65535)的大小,从小到大,排序依次为:
byte short char int long float double
1.容量小的向容量大的转换,可以自动转换,比如可以直接将一个int类型赋值给double:
double d = 34;
2.容量大的向容量小的转换,必须强制类型转换,就是你上面的那种形式,比如:
double c = 5/9.0 *(f - 32);
int nowC = (int)c;
3.整数类型常量默认为int类型,比如17
4.浮点类型常量默认为double类型,比如3.14
5.在多种数据类型混合运算时,容量小的自动转换为整个表达式中容量最大的,然后再进行计算,比如:
int i = 9; float f = 4f; double d = 3.14; double dd = i+f+d;
此时,i和f都各自先转换成double,在进行+运算。
6.在多种数据类型混合运算时,byte short char 3者不会互相转换,他们各自转换为int再进行计算
7.在有些时候,容量小的会自动提升为容量大的,比如方法重载传参数时候,
但是byte 和 short 不会自动提升为char,其它类型按照我上面所述的顺序提升。
差不多就这些,不明白补充,另外需要注意的是强转虽然编译没问题,但是运行时,有可能会数据溢出,损失精度
byte b ;
b=120; //不会出错.是因为120java中默认是int型,也就是你在赋值的时候java中默认的转换成byte型了而byte型的存储范围是-128-127由int型120到byte型120并没超出byte的存储空间,所以不会报错,而如果你将其换成,128则会报"cannot convert from int to byte" 因为已经超出了存储范围了
b=(byte) 300; //解释同上
b = (byte)(b*3);//这个你除了要明白上面的问题你还要知道明白运算优先级,你原来的出错代码是b = b*3; 你在b*3的时候是运算出int型然后将360赋值给b,而此时你并没强转成byte型.所以会报错.你在强转的时候,(byte)b*3这样写实不行的.因为这涉及到优先级,你要知道这个运算时怎么执行的.先执行的(byte)b --->再执行的*3--->*3的运算结果是一个int型的所以依然要报"cannot convert from int to byte" 需要在运算完才能再强转..
话说的有点罗嗦..希望能给你带来帮助.
关于“Java强制数据类型转换”这个话题的介绍,今天小编就给大家分享完了,如果对你有所帮助请保持对本站的关注!
本文来自作者[修杰超级甜]投稿,不代表拾光号立场,如若转载,请注明出处:https://7k54.com/shiga/13448.html
评论列表(3条)
我是拾光号的签约作者“修杰超级甜”
本文概览:网上有关“Java强制数据类型转换”话题很是火热,小编也是针对Java强制数据类型转换寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。规...
文章不错《Java强制数据类型转换》内容很有帮助