我已经在文件夹 Java\jdk1.8.0_152 中安装了我自己的 JDK 8。Eclipse 允许我们从 Window/Preferences/Java/Compiler 中指定 Java 编译器。如果我指定编译器版本 1.8(见下文),Eclipse 实际使用哪个编译器,我自己安装的 JDK 位于 Java\jdk1.8.0_152 还是 Eclipse 自己捆绑的 JDK?这两个编译器有什么区别?
如果我错了,请纠正我。我的第二个问题是,当我们为 Eclipse 指定已安装的 JRE(Window/Preferences/Java/已安装的 JRE)时,我们必须指定我们自己安装的 JRE,因为 Eclipse 不包含任何 JRE。我对吗?
请注意,这个问题不是题外话,因为它不要求推荐或查找书籍、工具、软件库、教程或其他场外资源,而是要求特定编译器设置的含义。它是切换编译器,是将设置委托给 JDK 编译器(以便可以在那里找到含义)还是其他含义?要在两台不同的计算机上生成相同的字节码,您需要知道这一点。
我正在使用Anaconda(Python 3.6).
在交互模式下,我对正整数> 256进行了对象标识测试:
# Interactive test 1
>>> x = 1000
>>> y = 1000
>>> x is y
False
Run Code Online (Sandbox Code Playgroud)
显然,在单独的行中写入的大整数(> 256)不会在交互模式下重复使用.
但是如果我们在一行中编写赋值,则重用大的正整数对象:
# Interactive test 2
>>> x, y = 1000, 1000
>>> x is y
True
Run Code Online (Sandbox Code Playgroud)
也就是说,在交互模式下,在一行或单独的行中写入整数赋值会对重用整数对象(> 256)产生影响.对于[-5,256]中的整数(如https://docs.python.org/2/c-api/int.html所述),缓存机制确保只创建一个对象,无论赋值是否相同或不同的线条.
现在让我们考虑小于-5的小负整数(任何超出范围[-5,256]的负整数都可以达到目的),出现了令人惊讶的结果:
# Interactive test 3
>>> x, y = -6, -6
>>> x is y
False # inconsistent with the large positive integer 1000
>>> -6 is -6
False
>>> id(-6), id(-6), id(-6)
(2280334806256, 2280334806128, 2280334806448)
>>> …Run Code Online (Sandbox Code Playgroud)