为什么我们在从java中的包导入类时使用*呢?

为什么我们在从java中的包导入类时使用*呢?,java,Java,例如,在java中从IO包导入类时,我们使用import java.IO.*,而不是使用import java.IO作为导入语句?使用import java.io时,出现一个错误,说明位置:package java。为什么会引发此错误?您只能导入类而不能导入包import java.io.*将导入java.io包中的所有类 要导入特定包中包含的所有类型,请使用带有星号(*)通配符的导入语句 现在,您可以通过其简单名称引用包中的任何类或接口 注意:另一种不太常见的导入形式允许您导入封闭类的公共嵌套

例如,在java中从IO包导入类时,我们使用
import java.IO.*
,而不是使用
import java.IO
作为导入语句?使用
import java.io
时,出现一个错误,说明位置:
package java
。为什么会引发此错误?

您只能导入类而不能导入包
import java.io.*
将导入
java.io
包中的所有类

要导入特定包中包含的所有类型,请使用带有星号(
*
)通配符的导入语句

现在,您可以通过其简单名称引用包中的任何类或接口

注意:另一种不太常见的导入形式允许您导入封闭类的公共嵌套类。例如,如果graphics.Rectangle类包含有用的嵌套类,例如Rectangle.DoubleWide和Rectangle.Square,则可以使用以下两条语句导入Rectangle及其嵌套类

import graphics.Rectangle;
import graphics.Rectangle.*;
请注意,第二条import语句不会导入矩形


有关它的详细信息,请参见本页

导入java.io.*
将从io包导入所有类
io
是包的名称,您只需要导入类

您也可以只导入所需的类。例如:
import java.io.BufferedInputStream

查看文档,找到
java.io
包中定义的所有类

还可以查看,以了解java中的所有包。

使用*on

import java.io.*

将导入io目录中的每个类,您将无法导入目录。

第二条语句将
io
视为类,而不是包。这就是错误的原因。您应该仔细阅读并使用Java命名约定来正确命名类

如果要使用
java.io
包类,请正确使用import语句

import java.io.*; 

这只是语法问题。如果查看如何导入特定类:

import java.util.List;
通过使用星号
*
来表示从某个包导入所有内容,就像在许多其他环境中一样:
模式匹配
Ant
,等等

import java.util.*;
星号有一个与“一切”匹配的历史记录


由于惯例而不是任何Java限制,您将无法区分子包
io
和名为
io
的类。如果命名的类不是以大写字母开头,则不会出现编译错误。

在Java中,可以导入类和包。要导入类,可以使用类的完全限定名,如

import com.pkg.spkg.ClassName

spkg
可能包含很多类,您的应用程序中需要所有这些类。在这种情况下,最好导入所有类或包本身。因此,要导入整个包,我们可以使用通配符
*

import com.pkg.spkg.*;

希望这能说明问题。

代码>导入java.io表示从包
java
导入
类io
。但是
io
类不存在。java.io是一个包,而不是一个类。

区别在于第一条语句在java中有效,第二条语句无效。@ErwinBolwidt您不正确,为什么第二条语句无效?@romac否您不正确。我希望拥有15k rep的人至少尝试编译
import java.ioimport java.io
编译时,我会得到一个错误:|你只是在我发表评论后才这么做的。。。在宽限期内,因此它不会显示在日志中。无论如何,我的评论仍然有效——问什么是有效的东西和无效的东西之间的区别是没有用的,因为你不能使用无效的东西。哦。。我不知道。谢谢package比directory:)@Elysium更合适,请参考答案中给出的链接。哇,它变了。。!!谢谢你的提醒。。