Java基础知识-第1章-Java语言概述
1、Java知识图谱
2、Java语言的跨平台性
由于JVM(虚拟机) 的存在,其屏蔽了程序底层运行平台的差别。所以同一个 Java 程序在三个不同的操作系统中都可以执行,这样就实现了 Java 程序的跨平台性。
说明:
- 源程序:Hello.java
- 字节码文件:Hello.class(与平台无关)
- 编译:
javac指令 - 执行:
java指令
3、Java语言核心机制及运行过程
详细内容见
JVM篇章
核心机制——Java 虚拟机 (Java Virtal Machine)
JVM 是一个虚拟的计算机,具有指令集并使用不同的存储区域。负责执行指令,管理数据、内存、寄存器,对于不同的平台,有不同的虚拟机。只有某平台提供了对应的 java 虚拟机, java 程序才可在此平台运行,Java 虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,到处运行”
核心机制——垃圾回收 (Garbage Collection)
不再使用的内存空间应回收——垃圾回收。在 C/C++ 等语言中,由程序员负责回收无用内存。Java 语言消除了程序员回收无用内存空间的责任:它提供一种系统级线程跟踪存储空间的分配情况。并在 JVM 空闲时,检查并释放那些可被释放的存储空间。垃圾回收在 Java 程序运行过程中自动进行,程序员无法精确控制和干预。垃圾回收机制不能保证 Java 程序在运行的过程中一直不会出现内存泄漏和内存溢出的问题。
GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。
4、JDK和JRE
JDK(Java Development Kit)Java开发工具包
- JDK是提供给
Java开发人员使用的,其中包含了java的开发工具,也包括了JRE。所以安装了JDK,就不用在单独安装JRE了。 - 其中的开发工具:编译工具
javac.exe、打包工具jar.exe等
JRE(Java Runtime Environment)Java运行环境)
- 包括
Java虛拟机(JVM Java Virtual Machine)和Java程序所需的核心类库等 - 如果想要运行一个开发好的
Java程序,计算机中只需要安装JRE即可。
简单而言,使用 JDK 的开发工具完成 java 程序的开发,然后交给 JRE 去运行。
JDK = JRE + 开发工具集(例如Javac编译工具等编译、运行开发工具)JRE = JVM + Java SE 系统标准类库
两者关系如图:
5、第一个java程序
public class HelloWorld {
public static void main(String[] args){
System.out.println("Hello World!"); // 先输出数据,然后换行
System.out.print("Hello World!"); // 只输出数据,不换行
}
}
步骤:
- 将 Java 代码编写到扩展名为
.java的文件HelloWorld.java中。源文件的名字必须和public类一样 - 通过
javac命令对该java文件进行编译 。生成的.class字节码文件的名字和java源文件中的类名一样。格式:javac 源文件名.java - 通过
java命令对生成的class文件进行运行。格式:java 类名
归纳总结: 在一个java源文件中可以声明多个class。但是,只能最多有一个类声明为public的。而且要求声明为public的类的类名必须与源文件名相同。 程序的入口是main()方法。格式是固定的。编译以后,会生成一个或多个字节码文件(因为可能有多个class),字节码文件的文件名与java源文件中的类名相同。
6、注释(Comment)
java 规范的三种注释方式:
- 单行注释:
// 注释文字 - 多行注释:
/* 注释文字*/,多行注释不可以嵌套使用 - 文档注释(
java特有)
单行注释和多行注释的作用:
- 对所写的程序进行解释说明,增强可读性。方便自己,方便别人
- 调试所写的代码
特点: 单行注释和多行注释,注释了的内容不参与编译。 换句话说,编译以后生成的.class结尾的字节码文件中不包含注释掉的信息
文档注释的使用:
- 文档注释负责描述类、接口、方法、构造器、成员属性。注释内容可以被
JDK提供的工具javadoc所解析,生成一套以网页文件html形式体现的该程序的说明文档,文档注释 Java 特有 - 注意:文档注释必须写在类、接口、方法、构造器、成员字段前面,写在其他位置无效。
格式如下:
/*
* Copyright (c) , LanMeix 2024. 远离计算机 2025-2025。【程序版权信息<img src="】" alt="" width="50%" />
*/
import java.util.List;
import java.util.ArrayList;
/**
* 这个类演示了文档注释
* @author 指定 java 程序的作者
* @version 指定源文件的版本
* @Since 2025/03/21
*/
public class HelloWorld {
public static void main(String[] args){
System.out.println("Hello World!");
}
/**
* public方法应该要表明入参返回值信息
* @param res 入参
* @return 返回结果
*/
public static String getRes(String res){
List<String> arr = new ArrayList<>();
return res;
}
}
操作方式:对上面的java程序在经过javadoc 处理之后,HelloWorld类的注释将在 HelloWorld.html 中找到。 如下,使用javadoc工具处理 HelloWorld.java 文件:将解析后的内容保存在myhelloworlddoc文件夹
\work>javadoc -d myhelloworlddoc -author -version HelloWorld.java
正在加载源文件HelloWorld.java...
正在构造 Javadoc 信息...
正在创建目标目录: "myhelloworlddoc"
标准 Doclet 版本 1.8.0_131
正在构建所有程序包和类的树...
正在生成myhelloworlddoc\HelloWorld.html...
正在生成myhelloworlddoc\package-frame.html...
正在生成myhelloworlddoc\package-summary.html...
正在生成myhelloworlddoc\package-tree.html...
正在生成myhelloworlddoc\constant-values.html...
正在构建所有程序包和类的索引...
正在生成myhelloworlddoc\overview-tree.html...
正在生成myhelloworlddoc\index-all.html...
正在生成myhelloworlddoc\deprecated-list.html...
正在构建所有类的索引...
正在生成myhelloworlddoc\allclasses-frame.html...
正在生成myhelloworlddoc\allclasses-noframe.html...
正在生成myhelloworlddoc\index.html...
正在生成myhelloworlddoc\help-doc.html...
具体的可以参考:内部含有 idea 的一些 javadoc 操作
7、Java-API 文档
API (Application Programming Interface, 应用程序编程接口)是 Java 提供的基本编程接口。Java 语言提供了大量的基础类,因此 Oracle 也为这些基础类提供了相应的 API 文档,用于告诉开发者如何使用这些类,以及这些类里包含的方法。下载 API
java 8 Documentation:docs.oracle.com/javase/8/do…java 8 中文文档:www.matools.com/api/java8JDK 17 Documentation:docs.oracle.com/en/java/jav…