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有所帮助

  • 查看java包
  • 在包util中的该外观中
  • 在其中可以找到类扫描程序
  • 现在,每当我们在这个java文件中使用类/etc的名称时(例如
    Scanner s=new Scanner()
    ),就会使用导入找到的类 或者,您无法执行导入并执行
    java.util.Scanner s=new java.util.Scanner()
    ,但您可以看到这会很快变得非常笨拙,尤其是在文件中的许多位置使用它时。导入只是一种简便的方法,可以减少重复指定在引用
    Scanner
    时所指的
    Scanner
    类的哪个版本的次数。请注意以下几点:

    • 包名是
      java.util
      ,而不是
      util
      。“java”只是包名的一部分
    • 包名称是由点分隔的任何一系列有效java标识符,
      AbC123.XYZ.foo
      是有效的包名称
    • 包装可以省略。如果不存在,则该类位于项目的根目录中(我曾经在生产环境中处理过一个没有包的项目!所有内容都在一个目录中…Yikes!)
    • 按照惯例,以
      java
      开头的包是JDK(加上扩展)的一部分。语言中没有规定或强制执行这一点

    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的子包,以及许多包含类和接口类型声明的编译单元

    如果包的完全限定名(§6.7)为p,且Q为p的子包,则p.Q为子包的完全限定名,并进一步表示包

    所以你可以从中得到:

    • 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
      就是这个包
    • util
      是子包(java内部)
    • Scanner
      是类(在