float to double和int to long conversion

时间:2014-07-07 08:14:53

标签: java

当float自动被视为double时,int应被认为是长的?但是int被认为是int。任何人都可以解释这种行为。

public class Test
{
void met (int x){
System.out.println("int called");

}

void met (long x){
System.out.println("long called");

}
public static void main(String[] args){
    Test t= new Test();
    t.met(10);
}

}
Output : int is called.
******************************************************************************************
public class Test
{
void met (float x){
System.out.println("float called");

}

void met (double x){
System.out.println("double called");

}
public static void main(String[] args){
    Test t= new Test();
    t.met(10.0);
}

}

output : double called.

2 个答案:

答案 0 :(得分:1)

http://docs.oracle.com/javase/specs/jls/se7/html/jls-3.html#jls-3.10.2

  

浮点文字的类型为float,如果后缀为   ASCII字母F或f;否则它的类型是双倍的,它可以   可选地以ASCII字母D或d(§4.2.3)为后缀。

  

如果整数文字以ASCII为后缀,则其长度为long   字母L或l(ell);否则它的类型为int(§4.2.1)。

要更改类型,您可以分别使用10.0F10L来调用方法

要进一步添加内容,默认类型是最常用的类型(?)

答案 1 :(得分:0)

在Java中,数值的默认类型是int。如果您希望将其视为长,则应以l或L为后缀:

long l = 10l;

对于浮动值,默认类型为double。如果你想要一个浮点数,它应该以f或F为后缀:

float f = 10.0f;

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