名+类名,在没有import导入的情况下,使用一个类需要给出完整的类名,如java.util.date。为了方便,java自动导入两个包:java.lang包和默认包。无包的类可以访问有包的类, 直接导入即可;有包的类无法访问无包的类, 直接访问是访问同一个包中的, 而有包的类与无包的类不在一个包里。由于使用不同包中的类需要导入, 而无包的类因无包名无法导入;java的包表面上看(从路径上看)是有等级的,但实际上并没有,比如java.awt,java.awt.color是两个地位相同的包。java.awt.color并不属于java.awt。
时间: 2023-04-24 19:05:54 浏览: 259
在Java中,如果没有使用import导入类,需要使用完整的类名来使用该类,例如java.util.Date。为了方便,Java会自动导入java.lang包和默认包。无包的类可以访问有包的类,直接导入即可;有包的类无法访问无包的类,直接访问只能访问同一个包中的类,而有包的类与无包的类不在同一个包中。虽然Java的包表面上看起来是有等级的,但实际上并没有,例如java.awt和java.awt.color是两个地位相同的包,java.awt.color并不属于java.awt。
相关问题
java.util.Date is in module java.base of loader 'bootstrap'; java.sql.Date is in module java.sql of loader 'platform'怎么改
这个错误是因为在同一个项目中同时使用了 `java.util.Date` 和 `java.sql.Date` 类,而它们位于不同的模块中,因此会导致冲突。
解决这个问题的方法有两种:
1. 使用完整的类名。即在使用 `java.util.Date` 或 `java.sql.Date` 时,使用完整的类名来指定具体使用哪一个类。例如:
```
java.util.Date utilDate = new java.util.Date();
java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
```
2. 使用 import 语句分别导入需要使用的类。例如:
```
import java.util.Date;
import java.sql.Date;
Date utilDate = new Date();
Date sqlDate = new Date(utilDate.getTime());
```
这两种方法都可以解决该问题,具体选择哪种方法取决于个人喜好和项目需求。
优化这段代码import java.text.SimpleDateFormat; import java.Date.*; class Time implements Runnable throws InterruptedExpection { void run(); { while(ture) { SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println(sdf.sdf(new Date())); Tread.sleep(1000); } } } class Watch { public static void main(String[] args) { Thead tread=new Thead(new Timer()); tread.start(); } }
有几个错误需要修正:
1. `java.util.Date` 应该是 `import java.util.Date;` 而不是 `import java.Date.*;`
2. `void run();` 应该是 `public void run() { ... }`,缺少 `public` 和方法体的大括号。
3. `while(ture)` 应该是 `while(true)`,单词拼写错误。
4. `Tread.sleep(1000);` 应该是 `Thread.sleep(1000);`,单词拼写错误,`Thread` 是正确的类名。
修改后的代码如下:
```
import java.text.SimpleDateFormat;
import java.util.Date;
class Timer implements Runnable {
public void run() {
while (true) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(sdf.format(new Date()));
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
class Watch {
public static void main(String[] args) {
Thread thread = new Thread(new Timer());
thread.start();
}
}
```
这个代码实现了一个计时器,每秒钟输出当前时间。其中 `Timer` 类实现了 `Runnable` 接口,用于在新线程中运行计时器逻辑;`Watch` 类则在主线程中创建并启动了一个新线程来运行计时器。修改后的代码可以正常运行,输出如下:
```
2021-06-22 13:03:31
2021-06-22 13:03:32
2021-06-22 13:03:33
2021-06-22 13:03:34
2021-06-22 13:03:35
...
```
阅读全文