用 javac 编译并将 double 转换为 float
Compile with javac and convert double to float
是否可以设置一个编译选项来直接编译:
float f = 1.0;
我不喜欢在“1.0”之后添加 'f' 或 'F'。那么,我可以告诉编译器将double直接转换成float吗?
感谢您的每一个回答。
不,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++ 形成对比,其中无法访问的代码检测是编译器为帮助程序员而提供的可选诊断;它不是必需的行为。)
可以自定义编译器选项吗?是的,只是为了向后兼容。
你的情况是向后兼容的例子吗? 没有.
示例:在 Java 1.4 之前,assert
不是关键字,可以用作变量。在编译一个assert
关键字的时候,可以把它作为一个低级编译的class.
不,您不能更改编译器设置。如果您不想在末尾使用 f ,则可以根据需要强制转换为 float 。您可以在此处阅读有关 [原始数据类型][1] 的更多信息
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
是否可以设置一个编译选项来直接编译:
float f = 1.0;
我不喜欢在“1.0”之后添加 'f' 或 'F'。那么,我可以告诉编译器将double直接转换成float吗?
感谢您的每一个回答。
不,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++ 形成对比,其中无法访问的代码检测是编译器为帮助程序员而提供的可选诊断;它不是必需的行为。)
可以自定义编译器选项吗?是的,只是为了向后兼容。
你的情况是向后兼容的例子吗? 没有.
示例:在 Java 1.4 之前,assert
不是关键字,可以用作变量。在编译一个assert
关键字的时候,可以把它作为一个低级编译的class.
不,您不能更改编译器设置。如果您不想在末尾使用 f ,则可以根据需要强制转换为 float 。您可以在此处阅读有关 [原始数据类型][1] 的更多信息 http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html