Java “浮动”和“浮动”之间有什么区别;1“;和浮动;1f“;在爪哇?
在Java中,定义浮点变量(例如:this:Java “浮动”和“浮动”之间有什么区别;1“;和浮动;1f“;在爪哇?,java,variables,floating-point,Java,Variables,Floating Point,在Java中,定义浮点变量(例如:this:1和this:1f)之间有什么区别吗?当我编写1时,JVM是否在运行时执行任何强制转换,或者执行可能会减慢我的应用程序速度的操作 考虑1隐式地被视为int文字,其中1f被视为float文字 见 基本上1将默认为int。如果您写入1f,它将被视为浮点。如果您编写1.0(无f),它将默认为double 如果浮点文本的后缀为 ASCII字母F或F;否则它的类型是double,可以 可以选择使用ASCII字母D或D作为后缀 如果出现这种情况,JVM将通过它
1
和this:1f
)之间有什么区别吗?当我编写1
时,JVM是否在运行时执行任何强制转换,或者执行可能会减慢我的应用程序速度的操作
考虑1隐式地被视为
int
文字,其中1f
被视为float
文字
见
基本上
1
将默认为int
。如果您写入1f
,它将被视为浮点
。如果您编写1.0
(无f),它将默认为double
如果浮点文本的后缀为
ASCII字母F或F;否则它的类型是double,可以
可以选择使用ASCII字母D或D作为后缀
如果出现这种情况,JVM将通过它
public class Test {
public static void main(String[] args) {
float f = 1;
System.out.println(f);
}
}
但如果您执行以下操作,则会发生异常:
public class Test {
public static void main(String[] args) {
float f = 1.5;
}
}
例外情况:
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - possible loss of precision
required: float
found: double
at package.Test.main(Test.java:17)
对于这两个示例,我们可以分析的是,对于第一个示例,它会自动转换为float
,但是对于第二个示例,如果您添加一些没有f
或f
后缀的小数点,那么它会自动转换为double
Java代码
float f1 = 1;
float f2 = 1f;
编译为以下字节码:
0: fconst_1
1: fstore_1
2: fconst_1
3: fstore_2
正如您所看到的,在运行时没有差异。是的,
1
和1f
之间有很大的差异。由于不能在java中声明变量而不给出其类型,因此它的clear1
是一个int
,1f
表示编译时本身的float
。这与运行时间或减慢应用程序速度无关
float a = 1;
float b = 1f;
这是一样的,但如果你做了以下事情:
int a = 1f
将抛出“类型不匹配:无法从float转换为int”
将抛出“类型不匹配:无法从double转换为int”
将抛出“类型不匹配:无法从double转换为float”
请注意:
double a = 2.0;
double b = 2d;
double c = 2.0f;
if (a == b) {
if (c == a) {
if (c == b) {
return 1;
}
}
}
将返回1;
问候。是的,还有我的第二个问题:“当我写1时,JVM会在运行时进行任何类型转换吗,或者会减慢我的应用程序的速度吗?”不,不应该有任何事情会降低你的性能
float c = 1d or 1.0
double a = 2.0;
double b = 2d;
double c = 2.0f;
if (a == b) {
if (c == a) {
if (c == b) {
return 1;
}
}
}