Java SE的`import`语句是程序中必不可少的一部分,它允许我们引用其他包中的类或接口,以便在当前代码中使用。在Java编程中,所有类都属于某个包(package),包是组织类的一种方式,提供了命名空间和访问控制。
**import的要点:**
1. **import含义**:`import`关键字用于引入外部类或接口,使得当前类可以无须完全限定名(fully qualified name)就能直接引用这些类或接口。例如,`java.util.Scanner`是一个在`java.util`包下的类,如果我们要使用它,需要先`import`。
2. **import语法**:
- `import <包名.类名>;`:导入特定的类。
- `import <包名.*>;`:导入包中的所有类。星号(*)代表通配符,表示导入该包下的所有公开类。
3. **import区别**:
- `import java.*;`:导入`java`包下的所有公开类,但不包括子包中的类。
- `import java.util.*;`:导入`java.util`包下的所有公开类。注意,这两个`import`语句并不互斥,它们分别作用于不同的范围。
**示例分析**:
假设我们有以下包结构:
```
com
|-- x
| |-- Alpha.class
| |-- y
| |-- Beta.class
| |-- Gamma.class
```
以及类`Test`:
```java
class Test {
Alpha a;
Beta b;
Gamma c;
}
```
为了使`Test`类能通过编译,我们需要导入相应的类。正确的`import`语句应该是:
```java
import com.x.*;
import com.x.y.Beta;
import com.x.y.Gamma;
```
选项B、C和D是正确答案,因为它们涵盖了`Alpha`、`Beta`和`Gamma`类。选项A是不必要的,因为它只是声明了包,但并未导入任何类。
**编译和运行带有package的类**:
1. **编译**:在命令行环境下,如果`Test.java`的头部有`package`声明(例如`package com.day6;`),我们需要使用`javac`命令指定目标目录。编译命令如下:
```
javac -d . Test.java
```
`-d .`参数表示将生成的`.class`文件放在当前目录,并根据包结构创建子目录。这样,`Test.class`会被放在`day6`子目录中。
2. **运行**:运行时,需要确保在包含`day6`子目录的目录下执行,因为`.class`文件包含了包信息。运行命令如下:
```
java day6.Test
```
如果进入`day6`目录直接运行`java Test`,会出错,因为Java会在这个目录下查找对应的`Test.class`,而不是上一级目录。
总结,理解和熟练运用`import`语句以及在命令行环境中编译和运行带有包的Java类,是Java开发的基础技能。在编写代码时,合理地使用`import`可以提高代码的可读性和维护性。同时,正确地编译和运行程序,对于调试和测试也至关重要。