Java教程

【Java编程思想】Java的类型转换的窄化转换、扩展转换、舍入方式、提升

本文主要是介绍【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的类型转换的窄化转换、扩展转换、舍入方式、提升的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!