一、Java的JDK目录与javac.exe、java.exe。
题目:编译java程序的命令文件是?
答案:B。javac.exe。
优秀评论:

<1>JDK目录。(参考书本)
- bin文件夹。存放一些可执行程序。里面存放着一些可执行程序。如javac.exe(Java编译器)、java.exe(Java运行工具)、jar.exe(打包工具)和javadoc.exe(文档生成工具)等。
- conf文件夹。存放JDK的相关配置文件,可配置Java的访问权限和密码。
- include文件夹。因为JDK是使用C语言和C++开发的。因此在启动的时候需要引入一些C语言和C++的头文件。该文件夹中就存放了这些头文件。
- jmods文件夹。存放调试文件。
- lib文件夹。其中lib是library的缩写。意思就是Java的类库或者库文件,是开发工具使用的归档包文件。
- legal文件夹。存放Java以及各类模块的软件许可。
<2>javac.exe。(Java编译器)
- javac.exe是Java的编译器。它可以将编写好的Java源文件编写成Java字节码文件(可执行的Java程序)。
- Java源文件的扩展名为.java。如helloworld.java。
- 编译后生成对应的Java字节码文件,其中字节码文件的扩展名为.class。如helloworld.class。
<3>java.exe。(java运行工具)
- java.exe是Java的运行工具。
- 它会启动一个Java虚拟机(JVM)进程,Java虚拟机相当于一个虚拟的操作系统,专门负责运行由Java编译器生成的字节码文件(.class)。
<4>Applet。(文心一言回答)
- “Applet”是用Java编程语言编写的小应用程序,该程序可以包含在HTML页中,由支持Java的网络浏览器下载并运行。
- 然而,“applet.exe”并不是一个标准的文件或概念。在Java的世界里,Applet通常是作为字节码(.class文件)被嵌入到HTML页面中,并通过支持Java的浏览器来执行,而不是作为可执行文件(.exe)存在。
二、Java整个集合框架。
题目:
答案:选C。
优秀评论:
总结:
<1>Java集合框架图(1)。
<2>Java集合框架图(2)。
三、Java的内存管理、对象生命周期、垃圾回收机制。
题目:
答案:BC。解析看下方。
优秀评论:
总结:
<1>Java的内存管理。
- Java的内存管理主要依赖于Java虚拟机(JVM)的自动垃圾回收机制。
- JVM将内存划分为不同的区域,包括堆内存、栈内存、方法区、程序计数器和本地方法栈等。
- 其中,堆内存是对象实例和数组的主要分配区域,也是垃圾回收器管理的主要区域。
- 栈内存则用于存储局部变量和方法调用。
- 每个线程都有自己的栈,栈中的数据在方法执行完毕后会自动释放。
- Java的垃圾回收机制主要作用是自动释放不再使用的对象内存,从而避免内存泄漏。垃圾回收算法包括标记-清除、复制算法和标记-压缩等。在垃圾回收过程中,JVM会遍历所有对象,标记活动对象,然后清除未标记的对象。此外,JVM还提供了软引用、弱引用和虚引用等不同的引用类型,以帮助开发者更好地管理内存。
<2>Java的对象生命周期。
Java对象的生命周期大致可以分为以下七个阶段:
- 创建阶段:通过new关键字创建对象,为对象分配存储空间,并开始构造对象。在此过程中,会递归调用其超类的构造方法,进行对象实例初始化和变量初始化,最后执行构造方法体。
- 应用阶段:对象被创建后,就可以使用它来执行各种操作。在这个阶段,系统至少维护着对象的一个强引用,所有对该对象的引用都是强引用(除非显式地使用了软引用、弱引用或虚引用)。
- 不可视阶段:对象在其他区域的代码中已经不可以再被引用,其强引用已经消失。例如,本地变量超出了其可视范围。
- 不可到达阶段:对象从所有的根引用集合中不可达,也就是说,从GC Roots到这个对象没有任何引用链相连。
- 可收集阶段:对象被标记为垃圾对象,等待垃圾回收器的回收。在这个阶段,对象仍然存在于内存中,但已经不再被应用程序使用。
- 终结阶段:在内存回收之前,对象的finalize()方法会被调用(注意:在Java 9及以上版本中,finalize()方法已被弃用)。这个方法可以在对象被销毁之前进行一些必要的清理操作,比如关闭文件、释放资源等。然后,对象将被标记为可回收状态,等待下一次垃圾回收的执行。
- 释放阶段:对象被垃圾回收器回收,所占用的内存空间被释放回堆中,供其他对象使用。
注意:对象的生命周期不是固定的,它可能被提前销毁(即进行垃圾回收),也可能被持久化存储(比如序列化到磁盘)。