0%

java之package

Java使用包(package)这种机制是为了防止命名冲突,同时可以进行访问控制,提供搜索和定位类、接口、枚举和注释等。

一、概念

      在编写Java程序时,随着程序架构越来越大,类的个数也越来越多,这时就会发现管理程序中维护类名称也是一件很麻烦的事,尤其是一些同名问题的发生。另一方面,有时开发人员还可能需要将处理同一方面的问题的类放在同一个目录下,以便于管理。基于以上原因,Java引入了包(package)机制,提供了类的多层命名空间,用于解决类的命名冲突、类文件管理等问题。

  1. 语法package {package_name}

    • 包声明应该在源文件的第一行(无import关键字的情况)且每个源文件只能有一个包声明
      • 如果一个源文件中没有使用包声明,那么其中的类、函数、枚举、注释等将被放在一个无名的包(unnamed package)中。
  2. 包的3个作用如下:

    • 区分相同名称的类从而避免命名冲去。
    • 能够较好地管理大量的类,方便维护和查找。
    • 控制访问范围,拥有包访问权限的类才能访问某个包中的类。
  3. 特性

    • 如果Java文件中使用了package,那么该Java文件必须放在命名与package名称相同的目录下。
    • 包名全部由小写字母,多个单词也全部小写,如mypack1.mypack2.mypack3
    • 如果包名包含多个层次,每个层次用“.”分割,java解释器会将package中的.解释为目录分隔符/,如上面的例子:mypack1/mypack2/mypack3
    • 包名一般由倒置的域名开头,比如com.baidu(不要有www)。
    • 自定义包不能java开头。
    • 在同一package中的类是可以互相访问的,即不需要import即可使用

Java中的importC/C++中的#include是不同的,import并不会在当前java文件中嵌入另一个package中的类的代码,只是告诉java文件不属于该包的类能够到哪里去寻找而已,classpath是java在编译程序时查找类文件的路径,java编译器会在classpath中包含有的路径中查找java的类文件。

  1. import关键字
    • import语句并不是必需的,如果在类里使用其它类的全名可以不使用import语句
    • 导入包中的全部类:import 包名.*;
      • 使用星号*会增加编译时间,特别是引入多个大包时,所以一般使用时会指定某个具体的类
    • 导入包中的某个具体类:import 包名.类名;

Java默认为所有源文件导入java.lang包下的所有类,因此前面在Java程序中使用StringSystem类时都无须使用import语句来导入这些类。

二、使用

TODO

三、参考

  1. 参考一
  2. 参考二
  3. 参考三