手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

为什么JAVA 用float定义时要在后面加F或f

时间:2024-10-12 11:10:26

为什么JAVA编程语言用float定义单精度变量时要在数值后面加F或f呢?原来是在JAVA中,当遇到有包含不同类型的数值在进行运算时都会自动默认向运算中最高级的数值转换,基本数据恽贴淑溪类型的等级划分如下:byte--short--char--int--long--float--double,由左到右等级升高,double为最高级;值得一提的是,仅包含前三种类型byte,short和char任意两种类型的运算在参与运算时会自动转换为int后再进行运算,此时最终数值会变成int类型,如果不止仅前三种数值参与运算,最开始说的向最高级转换的规则依然成立,我把它们概括为“下三滥”,弱者是没有权利的,只能向int看齐,如果有出现比int更高级则转换成更高级的,趋炎附势。其中,float类型虽然只有4个字节却要比long更高级,因为它能容纳小数。那么为什么要加F呢,那是因为跟上面说的下三滥参与运算要向int以及更高的看齐而不认同自己三个中的任何一个一样,因为他们谁也看不起谁,float也是一样的道理,他就是一个没权利的渣,每次都要自动默认转换成double类型,为了以示区分,在赋值的后面加F/f以示区分,例如float a=123.123f;为什么?因为定义变量还有一种方法float a;a=123.345;先定义再赋值,如果赋值行数离定义行太远,那么a=123.345这种写法就会被误以为是double值了,所以携程a=123.345F或者小写的f,我们可以一眼看出它是float值了。至于为什么要自动转换,如图1所示,一个格子代表一个字节,分别代表1个自己的Byte和4个字节的int类型,运算时把Byte转换成int类型运算,结果还是int类型,有人说可以前面四个格子截取因为都是0没意义,但是有些情况前面任何一个格子有一个1那么截取数据是不是出问题了?这就是精度丢失。再看下三滥级别自动转换的例子,黑色板子相当于你们的控制台,明明没有int参与却无法赋值给char和byte,并且提示了int不能转低级,现在你们知道了吧?

© 手抄报圈