Java中数值类型之间的转换
来源:互联网 发布:室内设计软件培训 编辑:程序博客网 时间:2024/05/29 14:31
转载来源:http://blog.csdn.net/goskalrie/article/details/50698004
Java中数值类型之间的转换方式有两种:一是自动转换,另一种是强制类型转换。自动转换是程序在执行过程中“悄然”进行的转换,不需要用户提前声明,一般是从位数低的类型向位数高的类型转换;强制类型转换则必须在代码中声明,转换顺序不受限制。
1、自动数据类型转换:
下表中给出了数值类型之间的合法转换
。
在上图中有6个细线建投,表示无信息丢失的转换;有三个粗线箭头,表示可能有精度损失的转换。例如,123456789是一个大整数,它所包含的位数比float类型所能够表达的位数多。当将这个整型数值转换为float类型时,将会得到同样大小的结果,但却失去了一定的精度。
自动转换按从低到高的顺序转换。不同类型数据间的优先关系如下:
低--------------------------------------------->高
byte,short,char-> int -> long -> float -> double
int n = 123456789;
float f = n;//f值为1.234567892E8
当使用上面两个数值进行二元操作时(例如 n+f , n是整数,f是浮点数),先要将两个操作数转换为同一种类型,然后再进行计算。
如果两个操作数中有一个是double类型,另一个操作数就会转换为double类型;
否则,如果其中一个操作数是float类型,另一个操作数将会转换为float类型;
否则,如果其中一个操作数是long类型,另一个操作数将会转换为long类型。
否则,两个操作数都将被转换为int类型。
2.强制类型转换
强制转换的格式是在需要转型的数据前加上“( )”,然后在括号内加入需要转化的数据类型。有的数据经过转型运算后,精度会丢失,而有的会更加精确。例如:
double dx = 9.99;
int ix = (int)dx;
这样,变量ix的值为9。强制类型转换通过截断小数部分将浮点值转换为整型。
如果想对浮点值进行舍入运算,以便得到最接近的整数(在很多情况下,希望使用这种操作方式),那就需要用Math.round方法:
double dx = 9.99;
int ix = (int)Math.round(10);
现在,变量ix的值为10.当调用round方法的时候,仍然需要使用强制类型转换。其原因是round方法返回的结果为long类型,由于存在信息丢失的可能性,所以只有使用显式的强制类型转换才能够将long类型转换成int类型。
警告:如果试图将一个数值从一种类型强制转换为另一种类型,而又超出了目标类型的表示范围,结果就会截断成一个完全不同的值。例如:
不要在boolean类型与任何类型之间进行强制类型转换,这样可以防止发生错误。- Java中数值类型之间的转换
- Java中数值类型之间的转换
- [Java 数值] 数值类型之间的转换
- java-数值类型之间的转换
- java数值类型与二进制byte数组之间的转换
- java数值类型与二进制byte数组之间的转换
- C++标准库中string类型与数值类型之间的转换
- java 数值类型转换
- java中Date类型和String类型之间的转换
- java中基本类型和字符串类型之间的转换
- C语言中字符串与各数值类型之间的转换
- java中,数值计算时的类型转换 ( 两个int类型相加,赋值给double )
- Java中类对象之间的类型转换
- java中类对象之间的类型转换
- java中String与基础类型之间的转换
- JAVA中数字类型与字符串之间的转换
- java中类对象之间的类型转换
- Java 中基本类型和字符串之间的转换
- Java8 中的接口
- C#连接sql数据库两种方法
- 字符串的交错组成
- 基础语言要素
- Android BLE 操作
- Java中数值类型之间的转换
- Mac端 查看QQ下载的视频路径
- 2017_12_15 js获取项目路径,js调用问题,jsp获取js传递url中参数
- SpringCloud(第 052 篇)CentOS7 安装 Docker 以及常用操作命令讲解
- 使用react时的ajax传参问题
- this作用域
- 如何把淘抢购做成JSON接口(二)
- 呵护儿童安全——远离红黄蓝,远离七座伪MPV!
- 听见丨谷歌DeepMind科学家黄士杰:已离开AlphaGo团队AI芯片初创团队ThinkForce完成4.5亿元A轮融资