类的基础(二):代码的组织机制

  1. Java 中组织类和接口的方式以及原因?
    答:包,为了避免命名冲突。Java API 中所有的类和接口都位于包 Java 或 javax 下,Java 是标准包,javax 是扩展包。

  2. 怎样声明一个包名?
    答:通过关键字 package 声明一个包名,包声明语句应该位于源代码的最前面,前面不能有注释以外的其他语句

  3. java.lang 包下的类的使用特点是?
    答:java.lang 包下的类可以直接使用,不需要引入,也不需要使用完全限定名,比如 String 类、System 类,其他包内的类则不行

  4. import 语句的使用位置?
    答:import 语句需要放在 package 定义之后,类定义之前。

  5. 能递归导入吗?
    答:不能。

  6. 静态导入的使用特点?
    答:静态导入不应过度使用,否则难以区分访问的是哪个类的代码。

  7. Java 中可见性范围是?
    答:从大到小是: public > protected > 默认(包)> private

  8. 怎样理解程序的编译与链接?
    答:

    • 从 Java 源代码到运行的程序,有编译和链接两个步骤。
    • 编译是将源代码文件变成扩展名是 .class 的一种字节码,这个过程一般是由 javac 命令完成的。
    • 链接是在运行时动态执行的,.class 文件不能直接运行,运行的是 Java 虚拟机。虚拟机是一种特殊的程序,执行的就是 java 命令,这个命令解析 .class 文件,转换为计算机能识别的二进制代码,然后运行。
    • 所谓链接就是根据引用到的类加载相应的字节码并执行。
    • import 是编译时概念,用于确定完全限定名,在运行时,只根据完全限定名寻找并加载类,编译和运行时都依赖类路径(classpath),类路径中的 jar 文件会被解压缩用于寻找和加载类。
  9. Java 9 中的模块的概念了解吗?
    答:

    • 在 Java 9 中,清晰地引入了模块的概念,JDK 和 JRE 都按模块化进行了重构。
    • 传统的代码组织机制依然是支持的,但新的应用可以使用模块。
    • 一个应用可有多个模块组成,一个模块可由多个包组成。
    • 模块之间可以有一定的依赖关系,一个模块可以导出包给其他模块使用,可以提供服务给其他模块使用,也可以使用其他模块提供的包和调用其他模块提供的服务。
    • 对于复杂的应用,模块化有很多好处,比如更强的封装、更为可靠的配置、更为松散的耦合、更动态灵活。