1. Java 语言概述
1.1 Java 简史
Java是一种高级程序设计语言,由SUN
(Stanford University Network,斯坦福大学网络公司)公司于1995年推出,James Gosling
设计Java语言,并开发了Java编译器和Java虚拟机,因此也被人尊称为“Java 之父”。SUN
公司在2009年被Oracle
(甲骨文)收购,此后持续更新,目前最新版为Java 23。其中,Java 8、Java 11、Java 17以及Java 21为LST(Long-Term Support)版本,之后blog的程序也以Java 17为主。
1.2 Java 特点
- Java是一种面向对象、基于类编程的语言
- Java是一种半编译半解释型语言
- Java是基于JVM(Java Virtual Machine) 的跨平台语言,“Write once , Run Anywhere”
- Java是一个开源的编程语言,有广泛开源社区支持
- Java和C++的语法很接近,但是丢弃了pointer(指针)的概念,并且提供了内存的自动分配和回收,程序猿无需为内存管理而烦扰
2. Java 程序
让我们看看Java第一个程序,按照传统,打印Hello World,以下:
// A simple Java program
public class HelloWorld{public static void main(String[] args){System.out.println("Hello World!"); // 输出Hello World!}
}
结果如下:
2.1 Hello World 程序分析
我们用的集成开发环境(Integrated Development Environment)是IntelliJ IDEA。当我们创建一个新的项目后,程序的目录如下, src是源文件(.java)
,out是字节码文件(.class)
。
打开程序的物理磁盘位置,同样可以看到,src是保存.java
文件,out保存.class
文件
Java程序执行有三个步骤:编写 --> 编译 --> 运行。
- 在开发环境中编写Java 代码,生成后缀名为 .java 的源文件
- 源文件通过javac.exe命令编译(compile)为字节码文件
- 字节码文件通过java.exe命令解释运行得到程序结果
2.1.1 源文件名与类名
程序中的源文件名和类名是一样的,都是HelloWorld,那两者是否应该保持一致呢?
答:如果这个类是public,那么要求源文件名必须与类名一致。否则编译报错。如果这个类不是public,那么源文件名可以和类名不一致。但是不便于代码维护。所以无论是否是public,建议都与源文件名保持一致,而且一个源文件尽量只写一个类,方便后期维护。
一个源文件中是否可以有多个类?public呢?
答:一个源文件中可以有多个类,编译后会生成多个.class字节码文件。但是一个源文件只能有一个public的类。
2.1.2 注释(Comment)
注释是编程不可或缺的一部分,起到解释说明代码的作用,提高代码的可阅读性和可维护性
-
Java的注释有三种类型:
- 单行注释:
// 这是注释内容
- 多行注释
/* 这是注释内容 这是注释内容 这是注释内容 */
- 文档注释
/**@author 指定Java程序的作者@version 指定源文件的版本 */
3. Java虚拟机(JVM)、JDK、JRE
- JVM (Java Virtual Machine):是一个虚拟的计算机,是Java程序的运行环境。JVM具有指令集并使用不同的存储区域,负责执行指令,管理数据、内存、寄存器。
我们编写的Java代码,都运行在JVM之上。正因为有JVM,才使得Java程序具备了跨平台性。
- JDK (Java Development Kit):是Java程序开发工具包,包含
JRE
和开发人员使用的工具。 - JRE (Java Runtime Environment) :是Java程序的运行时环境,包含
JVM
和运行时所需要的核心类库
。
三者关系图如下:
小结:
JDK = JRE + 开发工具集(Javac编译工具等)
JRE = JVM + Java SE标准类库
只有输入没有输出那是貔貅。所以计划“输出”Java的基础学习,旨在总结温习。主要参考资料如下(Reference),之后将不在单独列出。日拱一卒则功不唐捐,我们一起加油,努力!
Reference:
[1] 尚硅谷Java从入门到精通(https://www.bilibili.com/video/BV1PY411e7J6?spm_id_from=333.788.videopod.episodes&vd_source=1a269b49bc015abcf41af87718dc4f1c)
[2] 菜鸟教程(https://www.runoob.com/java/java-tutorial.html)
[3] Core Java Volume I Fundamentals, 11th Edition