8
对于下面的代码:Java的日期 - 长VS INT
import java.text.SimpleDateFormat;
import java.util.Date;
public class TestMain {
public static void main(String[] args) {
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
System.out.println(sdf.format(new Date(1386633600000L)));
System.out.println(sdf.format(new Date(1386633600 * 1000)));
}
}
我得到以下的输出:
10-12-2013
24-12-1969
为什么它们有什么不同?
@Vlad:那'L'在第一个参数是显著,你看。尝试'System.out.println(1386633600 * 1000)'看看你得到了什么...... –
@Vlad java编译器不会进行类型推断,类型检查的方式与你想象的不同:它首先修复类型的表达式,然后为其选择适当的方法。在那种情况下,它有一个'int',因此'Date(long)'构造函数是最合适的。 (没有关系,如果方法根本没有超载。) – Ingo