java f是什么单位_关于java:F和D在数字文字的末尾是什么意思?

我看过其中一些符号,但找不到任何奇怪的符号,

double d = 5D;

float f = 3.0F;

5后的D和F分别是什么意思?

对于来自C的用户:1)d后缀在ANSI C中不存在,仅作为GNU扩展。 2)在C语言中不可能使用1f,必须使用1.0f。 3)对于十六进制整数,d和f不起作用,因为它们会与数字本身产生歧义,例如 0x1f是31,不是1.0f

请注意,在具有GCC的C中,即使5D作为整数常量也是无效的。 5.D可以。 ICC 15静默地将此类数字视为0。使用tcc 0.9.27时,会出现编译时错误。

表示这些数字分别是双精度数和浮点数。假设你有

void foo(int x);

void foo(float x);

void foo(double x);

然后你打电话

foo(5)

编译器可能被卡住了。这就是为什么您可以说5,5f或5.0来指定类型的原因。

这样,是5.0 == 5d?

D代表双倍

F为浮点数

您可以在这里阅读Java的基本原始类型

http://download.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

我想指出的是

5.1D或5.1:如果未为逗号数字指定类型字母,则默认情况下为double

5:不带句点,默认为int

+1的链接

它们是浮点数和双精度文字的格式说明符。当您编写1.0时,对于要使文字为浮点型还是双精度型,模棱两可。通过编写1.0f,您将告诉Java您希望文字为浮点数,而使用1.0d则指定其应为双精度。还有L,它代表长号(例如,1L是long 1,而不是int 1)

需要说明的是:对于javac而言,它并不是模棱两可的,对于经验不足的程序员而言,这可能是潜在的。 JLS表示没有后缀的1.0是双精度型。

D代表double,F代表float。有时您需要添加这些修饰符,因为在这种情况下5被视为整数,而3.0是双精度。

正如其他人提到的那样,它们是类型定义,但是您不太可能看到i或d,因为它们是默认值。

float myfloat = 0.5;

将会出错,因为默认情况下0.5是double,并且您不能自动将double从boxbox降为float(64-> 32位),

double mydouble = 0.5;

不会有问题

" autobox"是您所描述的错误术语。 您的意思是提升的对立面,即降级,但是没有(自动)规则。

我刚刚完成了Oracle java SE8 Java Programmer课程,该课程就在注释,默认值和不降低精度的情况下发生自动装箱/拆箱的事实,因此需要类型定义或强制转换以降低精度。 作为类型定义

当一个(或编译器)将原始类型"转换"为原始类型的包装类型int-> Integer时,就会发生自动装箱/拆箱。 您谈论的是晋升的对立面,是的,由于精度下降,没有自动转换。

它定义常数5和3.0的数据类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值