Java导入语句语法
这是一个简单的问题,但我真的被它困扰了。我试图找到一个复制品,并用谷歌搜索了一下,但当我找不到满意的答案时,我更惊讶了Java导入语句语法,java,import,Java,Import,这是一个简单的问题,但我真的被它困扰了。我试图找到一个复制品,并用谷歌搜索了一下,但当我找不到满意的答案时,我更惊讶了 import java.util.Scanner; 在此语句中,.Scanner是类 .util是包的名称 一般来说,什么是java或javax或在第一个句点之前的任何东西 更新: 我还发现了这张照片: 这是真的吗 Java中的类由一个完全限定的名称标识,该名称由类的包和类的名称(以及任何外部类,如果有的话)连接而成。通常,在导入语句中,例如: import foo.ba
import java.util.Scanner;
在此语句中,.Scanner
是类
.util
是包的名称
一般来说,什么是java
或javax
或在第一个句点之前的任何东西
更新:
我还发现了这张照片:
这是真的吗 Java中的类由一个完全限定的名称标识,该名称由类的包和类的名称(以及任何外部类,如果有的话)连接而成。通常,在导入语句中,例如:
import foo.bar.baz.MyClass;
除最后一个点分隔字段外的所有字段都是包名(
foo.bar.baz
),最后一个字段是类名(MyClass
)。在您的示例中,java.util
是包名,Scanner
是类名
这个过程实际上有点复杂,因为可能涉及到内部/嵌套类和接口,但您明白了。1)java是一个包。(还表示文件系统中的文件夹)。它直接位于类路径中,因此程序将其引用为“java”。(java文件夹中的子文件夹)
2) util是java包中的一个包(因此被称为“java.util”)。
3) Scanner是util包中的一个类(因此为“java.util.Scanner”)
您可以有任意数量的嵌套包,如“mypackage1.mypackage2.mypackage3…”依此类推,只要mypackage1在类路径中
希望这对导入java.util.Scanner有所帮助
Scanner s=new Scanner()
),就会使用导入找到的类李>
或者,您无法执行导入并执行java.util.Scanner s=new java.util.Scanner()
,但您可以看到这会很快变得非常笨拙,尤其是在文件中的许多位置使用它时。导入只是一种简便的方法,可以减少重复指定在引用Scanner
时所指的Scanner
类的哪个版本的次数。请注意以下几点:
- 包名是
,而不是java.util
。“java”只是包名的一部分util
- 包名称是由点分隔的任何一系列有效java标识符,
是有效的包名称AbC123.XYZ.foo
- 包装可以省略。如果不存在,则该类位于项目的根目录中(我曾经在生产环境中处理过一个没有包的项目!所有内容都在一个目录中…Yikes!)
- 按照惯例,以
开头的包是JDK(加上扩展)的一部分。语言中没有规定或强制执行这一点java
java
和util
是嵌套包的名称java.util
是最终包的路径
它们是rt.jar
文件中的目录
rt.jar
文件是一个zip
存档文件,您可以使用7-zip
程序查看它
Scanner
是Scanner.class
文件,位于java/util
目录中rt.jar
import java.util.Scanner
指令只允许您在代码中使用Scanner
类名,而无需指定其完整路径
import java.util.*
指令允许您使用java.util
中的所有类名,而无需路径
import static java.util.Scanner.*
指令允许您使用Scanner
中的所有静态成员,而不使用路径。但是没有
JRE中所有软件包的列表如下所示:根据:
包的成员是其子包以及包的所有编译单元(§7.3)中声明的所有顶级类类型(§7.6,§8)和顶级接口类型(§9)
例如,在Java SE平台API中:
- java包有awt、applet、io、lang、net和util子包,但没有编译单元
- 包java.awt有一个名为image的子包,以及许多包含类和接口类型声明的编译单元
是一个没有类的包,只有子包java
是util
的子包,其完全限定名为java
java.util
不表示包,util
表示包java.util
util
是java
的子包。但是,util
不是一个包java.util
是一个包
如果愿意,您可以将包看作一个目录结构,其中每个子包都是其外包中的一个文件夹。所以会有一个“文件夹”java,在里面还有另一个“文件夹”util。包由其完全限定名(“完整路径”)表示,因此
java
是一个包,java/util
是一个包<代码>/util不是包。但由目录结构表示的包不是规范,它只是一个常见的实现。由主机系统决定如何存储包()。import语句表示层次结构
import java.util.Scanner;
就是这个包java
是子包(java内部)util
是类(在Scanner