Java import语句语法

时间:2013-12-25 22:26:54

标签: java import

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

import java.util.Scanner; 

在此声明中.Scanner是类,

.util是包的名称

javajavax或一般情况下第一期之前的内容是什么?

更新:

我也发现了这张照片:

http://www.javatpoint.com/package

这是真的吗?

7 个答案:

答案 0 :(得分:8)

根据JLS 7.1

  

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

     

例如,在Java SE平台API中:

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

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

  •   
     

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

所以你可以从那里收集:

  • java是一个没有类的包,只有子包。
  • utiljava的子包,其完全限定名称为java.util
  • util不表示包,java.util表示。

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

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

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

答案 1 :(得分:5)

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

import foo.bar.baz.MyClass;

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

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

答案 2 :(得分:1)

import java.util.Scanner说。

  1. 查看包java。
  2. 在包中使用..
  3. 在其中找到类Scanner。
  4. 现在每当我们在这个java文件中使用类/ etc的名称(例如Scanner s = new Scanner())时,就会使用import找到的类。
  5. 或者你无法进行导入并执行java.util.Scanner s = new java.util.Scanner(),但你可以看到它会很快变得难以处理,特别是如果你在文件中的很多地方使用它。导入只是一种方便的方法,可以在您引用Scanner时重复指定您所指的Scanner类的哪个版本。

答案 3 :(得分:1)

几点:

  • 包名称为java.util,而不是util。 “java”只是包名的一部分。
  • 包名称是由点分隔的任何有效java标识符系列,AbC123.XYZ.foo是有效的包名称
  • 包可以省略。如果没有,那么该类位于项目的根目录中(我曾经在一个没有包的生产项目中工作过!一切都在一个目录中......哎呀!)
  • 按照惯例,以java开头的包是JDK的一部分(加上扩展名)。语言中没有任何内容可以指定或强制执行

答案 4 :(得分:1)

javautil是嵌套包的名称。 java.util是最终包的路径。

它们是rt.jar文件中的目录。

rt.jar文件是zip存档,您可以使用7-zip程序进行查看。

ScannerScanner.class

java/util目录内的rt.jar个文件

import java.util.Scanner指令只允许您在代码中使用Scanner类名而不指定它的完整路径。

import java.util.*指令允许您在没有路径的java.util中使用所有类名。

import static java.util.Scanner.*指令允许您在Scanner内使用所有静态成员,而不使用路径。但没有。

JRE中所有包的列表如下:http://docs.oracle.com/javase/7/docs/api/overview-summary.html

答案 5 :(得分:0)

1)java是一个包。 (也代表文件系统中的文件夹) 它直接在类路径中,因此程序将其引用为“java”。 (java文件夹中的子文件夹)

2)util是java包中的一个包(因此被称为'java.util')。

3)Scanner是util包内的类(因此是'java.util.Scanner')


您可以拥有任意数量的嵌套包,例如'mypackage1.mypackage2.mypackage3。 ......等等,只要mypackage1在类路径中。

希望这有帮助

答案 6 :(得分:-2)

import语句表示层次结构

import java.util.Scanner;
  • java是包
  • util是子包(在java中)
  • Scanner是类(在util中)

    import java.util。*;

班级名称可以用星号进行整理,
这意味着在提到的子包中导入所有类