用javac编译并将double转换为float

时间:2015-10-05 15:03:50

标签: java compilation javac

是否可以设置编译选项直接编译:

float f = 1.0;

我不想在'1.0'之后添加'f'或'F'。那么,我可以告诉编译器将double直接转换为float吗?

感谢您的回答。

3 个答案:

答案 0 :(得分:2)

不,Java编译器中没有这样的选项。它会创建一种与Java编程语言略有不同,不兼容的方言 - 到目前为止一直避免使用。

一般来说,Java编译器和JVM在处理语言方面非常严格。很少有选项可以在编译时影响源代码的行为或在运行时影响逻辑。

例如,这些是Java中不存在的选项(但可能存在于其他语言中):

  • 使编译不区分大小写。
  • 在Java源代码上运行C预处理器(对于宏,包括等)。
  • 在运行时跳过所有数组索引检查。
  • int溢出时抛出异常。

确实存在的选项相当普通:

  • Java编译器:源代码的语言版本。
  • Java编译器:源文件的字符集。
  • JVM内存限制。
  • JVM垃圾收集算法调优。

作为旁注,Java语言规范甚至要求一些编译时行为。例如,某些类型的unreachable code是编译时错误,兼容的Java编译器必须将其标记为错误(不作为警告或忽略):

while (true) { ... }
foo();  // Compile-time error

第二个例子:

return;
bar();  // Compile-time error

(这与C / C ++形成对比,其中无法访问的代码检测是编译器为程序员提供的可选诊断;它不是必需的行为。)

答案 1 :(得分:1)

可以自定义编译器选项吗?是的,仅用于向后兼容。

您的案例是向后兼容的一个例子吗?

示例:在Java 1.4之前,assert不是关键字,可以用作变量。编译assert关键字时,可以将其用作较低的编译类。

答案 2 :(得分:0)

不,您无法更改编译器设置。如果你不希望在最后使用f,你可以根据需要进行类型转换。您可以在此处阅读[原始数据类型] [1]的更多信息 http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html