admin管理员组

文章数量:1608851

本系列文章将整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请到我的仓库里查看

https://github/h2pl/Java-Tutorial

喜欢的话麻烦点下Star、Fork、Watch三连哈,感谢你的支持。

文章首发于我的个人博客:

www.how2playlife

本文是微信公众号【Java技术江湖】的《夯实Java基础系列博文》其中一篇,本文部分内容来源于网络,为了把本文主题讲得清晰透彻,也整合了很多我认为不错的技术博客内容,引用其中了一些比较好的博客文章,如有侵权,请联系作者。

该系列博文会告诉你如何从入门到进阶,一步步地学习Java基础知识,并上手进行实战,接着了解每个Java知识点背后的实现原理,更完整地了解整个Java技术体系,形成自己的知识框架。为了更好地总结和检验你的学习成果,本系列文章也会提供每个知识点对应的面试题以及参考答案。

文章目录

    • Java中的包概念
      • 包的作用
      • package 的目录结构
      • 设置 CLASSPATH 系统变量
    • 常用jar包
      • java软件包的类型
      • dt.jar
      • rt.jar
    • *.java文件的奥秘
      • *.Java文件简介
      • 为什么一个java源文件中只能有一个public类?
      • Main方法
      • 外部类的访问权限
      • Java包的命名规则
    • 参考文章
    • 微信公众号
      • 个人公众号:程序员黄小斜
      • 技术公众号:Java技术江湖

如果对本系列文章有什么建议,或者是有什么疑问的话,也可以关注公众号【Java技术江湖】联系作者,欢迎你参与本系列博文的创作和修订。

Java中的包概念

Java中的包是封装一组类,子包和接口的机制。软件包用于:

防止命名冲突。例如,可以有两个名称分别为Employee的类,college.staff.cse.Employee和college.staff.ee.Employee
更轻松地搜索/定位和使用类,接口,枚举和注释

提供受控访问:受保护和默认有包级别访问控制。受保护的成员可以通过同一个包及其子类中的类访问。默认成员(没有任何访问说明符)只能由同一个包中的类访问。

包可以被视为数据封装(或数据隐藏)。

我们所需要做的就是将相关类放入包中。之后,我们可以简单地从现有的软件包中编写一个导入类,并将其用于我们的程序中。一个包是一组相关类的容器,其中一些类可以访问,并且其他类被保存用于内部目的。
我们可以在程序中尽可能多地重用包中的现有类。

为了更好地组织类,Java 提供了包机制,用于区别类名的命名空间。

包的作用

  • 1、把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。
  • 2、如同文件夹一样,包也采用了树形目录的存储方式。同一个包中的类名字是不同的,不同的包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别。因此,包可以避免名字冲突。
  • 3、包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类。

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

包语句的语法格式为:

package  pkg1[.pkg2[.pkg3…]];

例如,一个Something.java 文件它的内容

package  net.java.util; public  class  Something{ ... }

那么它的路径应该是 net/java/util/Something.java 这样保存的。 package(包) 的作用是把不同的 java 程序分类保存,更方便的被其他 java 程序调用。

一个包(package)可以定义为一组相互联系的类型(类、接口、枚举和注释),为这些类型提供访问保护和命名空间管理的功能。

以下是一些 Java 中的包:

  • java.lang-打包基础的类
  • java.io-包含输入输出功能的函数

开发者可以自己把一组类和接口等打包,并定义自己的包。而且在实际开发中这样做是值得提倡的,当你自己完成类的实现之后,将相关的类分组,可以让其他的编程者更容易地确定哪些类、接口、枚举和注释等是相关的。

由于包创建了新的命名空间(namespace),所以不会跟其他包中的任何名字产生命名冲突。使用包这种机制,更容易实现访问控制,并且让定位相关类更加简单。

package 的目录结构

类放在包中会有两种主要的结果:

  • 包名成为类名的一部分,正如我们前面讨论的一样。
  • 包名必须与相应的字节码所在的目录结构相吻合。

下面是管理你自己 java 中文件的一种简单方式:

将类、接口等类型的源码放在一个文本中,这个文件的名字就是这个类型的名字,并以.java作为扩展名。例如:

// 文件名 : Car.java package vehicle; public class Car { // 类实现 }

接下来,把源文件放在一个目录中,这个目录要对应类所在包的名字。

…\vehicle\Car.java

现在,正确的类名和路径将会是如下样子:

  • 类名 -> vehicle.Car
  • 路径名 -> vehicle\Car.java (在 windows 系统中)

通常,一个公司使用它互联网域名的颠倒形式来作为它的包名.例如:互联网域名是 runoob,所有的包名都以 com.runoob 开头。包名中的每一个部分对应一个子目录。

例如:有一个 com.runoob.test 的包,这个包包含一个叫做 Runoob.java 的源文件,那么相应的,应该有如下面的一连串子目录:

…\com\runoob\test\Runoob.java

编译的时候,编译器为包中定义的每个类、接口等类型各创建一个不同的输出文件,输出文件的名字就是这个类型的名字,并

本文标签: 夯实结构文件基础系列