【Java编程思想】Java的类型转换的窄化转换、扩展转换、舍入方式、提升
2021/9/23 12:11:03
本文主要是介绍【Java编程思想】Java的类型转换的窄化转换、扩展转换、舍入方式、提升,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录
- 前言:类型转换的窄化转换、扩展转换
- 截尾和舍入
- 提升
前言:类型转换的窄化转换、扩展转换
- Java中会将一种数据类型自动转换为另一种类型。(假如将 int数值 赋值给 float变量,那么编译器会自动将 int 转换为 float )
- 但是如果反过来,将float值赋值给int变量,那么不会进行自动转换,编译不通过。
Java的类型转换相比起C和C++,是一种比较安全的操作。
然而如果要进行 “窄化转换” 的操作,也就是说将 “ 能容纳更多细节信息的类型 ” 往 “ 不能容纳那么多细节的类型 ” 转换,那么就会面临信息丢失的危险。
此时编译器不会帮助我们自动转换,而是需要我们自己承担风险!必须由我们进行显式地类型转换!(就例如:float类型转int类型)
然而如果我们进行扩展转换,就像int转为float,那么就没必要进行显式地类型转换。
- 另外Java的布尔类型boolean是一个例外,任何基本类型与其不可进行类型转换。
截尾和舍入
- 在进行窄化转换的时候,将要考虑数据细节的丢失方式,是截尾还是舍入?(举个例子:浮点数10.9转为整形后,保存的整形数是截断小数部分的10,还是四舍五入后的11?)
- 我们发现经过(int)的转换,为截尾的方式转换。
- Math.round()的方式可以做到舍入的转换。
提升
- 只要对基本类型进行算数运算 or 位运算,那么只要类型比int小(比如short,char,byte),那么在运行之前,值会自动转换成int类型,因此计算的结果都是int类型的。
- 那么提升的意思就是:参与计算的最大类型,决定了该表达式结果的类型。(比如float与double参与计算,那么结果为double)
这篇关于【Java编程思想】Java的类型转换的窄化转换、扩展转换、舍入方式、提升的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-07-02springboot项目无法注册到nacos-icode9专业技术文章分享
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)