Java import语句语法

use*_*519 8 java import

这是一个简单的问题,但我真的被它搞砸了.我试图找到一个复制品,并用谷歌搜索它,但当我找不到令人满意的答案时,我更加惊讶.

import java.util.Scanner; 
Run Code Online (Sandbox Code Playgroud)

在这个陈述中.Scanner是班级,

.util 是包的名称

什么是javajavax或一般第一期之前任何会站?

更新:

我也发现了这张照片:

http://www.javatpoint.com/package

这是真的吗?

Rad*_*def 8

根据JLS 7.1:

包的成员是其子包和在包的所有编译单元(第7.3节)中声明的所有顶级类类型(第7.6节,第8节)和顶级接口类型(第9节).

例如,在Java SE平台API中:

  • 包java有子包awt,applet,io,lang,net和util,但没有编译单元.

  • java.awt包有一个名为image的子包,以及一些包含类和接口类型声明的编译单元.

如果包的完全限定名称(第6.7节)是P,并且Q是P的子包,则PQ是子包的完全限定名,并且还表示包.

所以你可以从中收集:

  • java 是一个没有类的包,只有子包.
  • util是一个java完全限定名称的子包java.util.
  • util不表示包裹,java.util确实如此.

"我也发现了这张照片:......这是真的吗?"

是的,util是一个子包java.但是,util不是一个包.java.util是一个包.

如果愿意,您可以包视为目录结构,其中每个子包都是其外包中的文件夹.所以会有一个"文件夹"java,在其中,另一个"文件夹"util.包由其完全限定名称("完整路径")表示,因此java是包并且java/util是包./util不是一个包.但是目录结构所代表的包不是规范.这只是一种常见的实施方式.由主机系统决定如何存储包(JLS 7.2).

  • 注意:Java实际上没有包层次结构.它看起来像是因为你将包定义为子目录,所以`util`是"inside"`java`,但是`java`和`java.util`表现得像完全独立的包. (3认同)
  • @Darkhogg是的,确实,规范中没有任何内容表明"子包"与其"包含"包有关.例如,如果`P`是一个包,而'PQ`是一个包并不意味着某个类`PQSomeClass`可以使用另一个类`P.AnotherClass`通过其简单名称而无需导入或访问其包 - 私有/受保护的成员,反之亦然.虽然根据规范`Q`是'P`的成员. (2认同)

Dar*_*ogg 5

Java中的类由完全限定名称标识,该名称包含类的包和类的名称(以及任何外部类,如果有)的串联.通常,在导入语句中,例如:

import foo.bar.baz.MyClass;
Run Code Online (Sandbox Code Playgroud)

除了最后一个以点分隔的字段之外的所有内容都是包名(foo.bar.baz),最后一个字段是类名(MyClass).在您的示例中,java.util是包名称并且Scanner是类名.

这个过程实际上有点复杂,因为可能涉及内部/嵌套类和接口,但是你明白了.

  • @ user3081519它通常作为目录结构实现,但根据JLS它不一定是.它"取决于主机系统". (2认同)