package

  • 语法:package 包名;
  • 包名用点号(.)分隔,实际物理上就是文件夹
  • 同一个项目下,包名要唯一
  • 包名一般用小写(规范)
  • package 写在类的最上面
  • 一个类中,只能有一个package语句
  • package 其实就是 name space 的作用
  • 当我们没有使用package语句时,我们的类都被放到了一个默认缺省包,这也是为什么我们运行Java程序时,在运行目录下面不能有同名的.class文件。
  • 一个完整类名是包名+类名,在没有import导入的情况下,使用一个类需要给出完整的类名
  • Java规定,其他包使用java.lang包中的类时无需给出完整类名;
  • 缺省包中的类之间(或者说同一个包下面)互相使用也不需要给出完整类名。
  • Java的包表面上看(从路径上看)是有等级的,但实际上并没有,比如java.awt,java.awt.color是两个地位相同的包。java.awt.color并不属于java.awt。
  • 在采用类名方式使用一个类的时候, 先在当前包中查找是否有这个类, 如果没有才去导入的包中找。
  • 有包的类和无包的类互相访问有以下规则:
    • 无包的类可以访问有包的类, 直接导入即可;
    • 有包的类无法访问无包的类, 直接访问是找同一个包中的类, 由于不同包需要导入, 而无包的类无法导入;
    • 在定义类的时候, 为了让别人都能使用到, 所以一定要定义一个包。
  • 包的作用
    • (1)将相关联的接口和类集合到一块
    • (2)避免了类型之间命名冲突:包作为一种封装,给类提供多层命名空间。
    • (3)实现了外界对包的访问控制
  • 不同包之间的使用通常有以下3种方法:

    • (1)使用全名访问类;
    • (2)import 该类;
    • (3)import 包含该类的整个包

      import

  • 用于引入需要使用的类或包

  • import xxx.; 只能导入xxx包下的类,*子包中的类不会被导入。
  • Java的包表面上的等级问题。从路径上看,包似乎是分层的,但它们不是。 例如,Java API包括java.awt包,java.awt.color包,java.awt.font包等等。但是,java.awt.color包、java.awt.font包和其他java.awt.xxxx包并不属于java.awt。 前缀java.awt(The Java abstract window toolkit)的作用只是告诉开发者——和窗口有关的包都在这里面。但是包和包之间并不是包含关系。 当你导入java.awt.*时,会导入java.awt包中的所有类型,但它不会导入java.awt.color,java.awt.font或任何其他java.awt.xxxx包的所有类型。 如果你要使用java.awt.color中的类以及java.awt中的类,则必须同时导入导入这两个包


  • 当你导入的两个包中有一个类名字相同时,如果你继续采用缩(只有类名),就会出现一些问题。这时,你就要使用这个类的全名。比如,java.util、java.sql包中都有Date类,程序又同时导入了这两个包中的Date类。

    静态导入

  • 可以导入静态成员(静态成员变量和静态成员方法)

  • 静态导入简化使用静态成员变量和静态方法

    1. import static xxx.yyy.类名.静态变量;
    2. import static xxx.yyy.类名.静态方法;
    3. import static xxx.yyy.类名.*;
  • 当我们需要频繁访问某个类的常量和静态方法,反复写它们的前缀(全名)可能不利于代码阅读。 静态import语句就提供了一种导入要使用的常量和静态方法的方法,这样您就不需要为其名称添加前缀。