Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么在使用Runtime时不需要导入java.lang?_Java - Fatal编程技术网

为什么在使用Runtime时不需要导入java.lang?

为什么在使用Runtime时不需要导入java.lang?,java,Java,在下面的代码段中,为什么我需要导入java.awt.Robot,但我可以使用Runtime而不导入java.lang.Runtime package classes; import java.awt.Robot; public class RuntimeExecution { public static void main(String[] args) { try { Runtime.getRuntime().exec("notepad");

在下面的代码段中,为什么我需要导入
java.awt.Robot
,但我可以使用
Runtime
而不导入
java.lang.Runtime

package classes;

import java.awt.Robot;

public class RuntimeExecution {
    public static void main(String[] args) {
        try {
            Runtime.getRuntime().exec("notepad");
            Robot robot = new Robot();
            robot.keyPress(65);
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }
}

每个编译单元隐式导入每个公共类型名 在预定义的包
java.lang
中声明,就像声明
import java.lang.*出现在每个编译单元的开头
在任何包声明之后立即因此,所有
这些类型在每个编译单元中都有简单的名称。


编译单元基本上是您的
.java
源文件。

为了方便起见,java编译器会自动为每个源文件导入两个完整的包:

  • java.lang包和
  • 当前程序包(该程序包) 对于当前文件)

  • 下面的答案是正确的,但为什么java.lang会自动为您导入?这是因为该包中的类对于任何JVM都是必不可少的,或者对于语言本身也是必不可少的。即使是最简单的Java类文件也引用了几个Java.lang类(例如,
    对象
    字符串
    ),其中大约一半是实现基本语言功能所必需的(例如,
    可丢弃
    可替换
    ,以及所有装箱类型),任何实际的JVM在加载和运行任何程序(
    线程
    类加载器
    系统
    运行时
    ,…)时,都会使用java.lang的大部分剩余部分