JAVA概述
1.1 Java 历史
目前 Java 版权属于甲骨文公司。
长期支持的版本只有 Java8 与 Java11。这两个版本也是最多使用的版本。
Java SE:标准版
Java EE:企业版(重要)
Java ME:小型版(少)
1.2 Java 重要特点
Java 语言是面向对象的(oop)
简单来说,面向对象是一种程序设计技术。其重点放在数据(对象)和对象的接口上。
——何为面向对象?详见 [[ 6 面向对象编程 ]](https://i-melody.github.io/2021/11/29/Java/入门阶段/6 面向对象编程(基础)/)
Java 语言是健壮的。其强类型机制、异常处理、垃圾自动收集是健壮性的保证。
Java 强调早期问题检测、后期动态检测,及消除易出错的情况。其编译器能检测很多其他语言仅在运行时才会发现的问题。
——异常见 [[ 11 异常 ]](https://i-melody.github.io/2021/12/18/Java/入门阶段/11 异常/)
Java 语言是跨平台性的:一个编译好的
.class文件可以在多个不同系统下直接运行。Java 中没有 “依赖具体实现” 的地方。其基本数据类型大小、有关运算的行为等都有明确说明。其绝大多数库都能很好地支持平台独立性,而不用担心操作系统。
Java 语言是解释型的:解释型语言编译后需要解释器才能运行。相对的,编译型语言可以被直接执行。
Java 解释器能在任何移植了解释器的机器上直接执行 Java 字节码。
1.3 Java 的开发工具
- javac:Java 编译器。将 Java 程序编译成字节码
- java:Java 解释器。执行已经转换为字节码的文件
- jdb:Java 调试器。调试 Java 程序
- javap:反编译。将类文件还原回方法和变量
- javadoc:文档生成器。创建 HTML 文件
1.4 Java 运行基础
JVM:Java 虚拟机
- JVM 是–跨平台性的基础。被包含在 JDK 中。
- 不同平台有各自对应的不同 JVM
- JVM 屏蔽了底层平台的区别。能做到 ”一次编译,到处运行”
JDK 全称:Java Development Kit(Java 开发工具包)
- JDK = JRE + Java 的开发工具(Java,Javac,Javadoc 等等)
- 给开发人员使用的,包含 JRE
JRE:Java Runtime Enviroment(Java 运行环境)
- JRE = JVM + Java SE 标准类库(Java 的核心类库)
- 运行一个 Java 程序的基本条件
1.5 Java 执行流程分析
.Java文件(源文件) — javac(编译)—.class文件(字节码文件) — java(运行)— 结果
1.5.1 编译
1 | javac [选项] 源文件名.java //[] 中是可选项 |
- 通过编译器将 Java 源文件编译成 JVM 可识别的字节码文件。字节码文件是二进制格式的,其格式是统一的。在源文件目录下使用 Javac 编译工具对 Java 文件进行编译。
- 如果没有错误将没有提示,当前目录会对应其中每一个类生成对应名称的
.class文件,即字节码文件,也是可执行的 Java 程序。
1.5.2 运行
1 | java [选项] 程序名 [参数列表] //[] 中是可选项 |
- 有了可执行的 Java 程序(字节码文件)
- 通过运行工具
Java.exe对字节码文件进行执行,本质是将.class文件装载到 JVM 运行。
注意,修改后的 .Java 源文件需要重新编译
1.6 Java 开发注意事项和细节说明
源文件以
.java为扩展名,源文件的基本组成部分是类(class)Java 应用程序的执行入口是
main()方法。其有固定的书写格式:public static void main(string[]args){…}Java 语言严格区分大小写。
Java 方法由一条条语句构成,每个语句都以
;结束。大括号
{}是成对出现的,缺一不可。习惯先写{}再写代码一个源文件中最多只有一个 public 类,其余类不限。
如果文件中包含 public 类,则文件名必须按该类命名。
也可以把 main 方法写在非 public 类中,然后运行指定非 public 类,这样入口方法是非 public 类的主方法。
在控制台按 tab 可以实现代码补齐。按方向键 ↑ 或 ↓ 可以调用历史代码。
1.7 代码规范
类、方法的注释要以 Javadoc 的方式来写
非 Javadoc 的注释,往往是给维护者看的,着重告诉读者为什么这样写,如何修改,注意什么问题等。
不要用
ab,这种名称命名变量,尽量写得清楚int age = 10;另外,Java 源代码使用的是 Unicode 码,因此汉语也能作为标识符。但不推荐使用汉语做标识符。
使用 tab 键操作,使代码右移。使用 shift+tab 键,使代码左移。
运算符两边各加入空格。注意排版规范。
源文件使用 UTF-8 编码。
代码行宽度不要超过 80 个字符。超过时通过换行保持简洁。
代码编写次行风格及行尾风格
次行风格:换行输入
{},使其总在行头行尾风格:在一行的末尾输入
{,换行输入}一段代码完成一个小功能,尽量不要混合。这样更加灵活。
1.8 Java 转义字符
\t:一个制表位,实现对齐功能\n:换行符\\:一个\\":一个"\':一个'\r:一个回车(不是换行)\.:一个小圆点.\b:退格键\u????:一个具体的 Unicode 字符。其中 ??? 是 4 位 16 进制数\???:一个具体的 Unicode 字符。其中 ??? 是 3 位 8 进制数
1.9 注释
注释:用于注解说明程序的文字。其提高了代码的可读性,是一个程序员必须要具有的良好编程习惯。将自己的思想通过注释先整理出来,再用代码去体现。
被注释的文字不会被 JVM 解释执行。
1.9.1 注释类型
单行注释:
1
2//这是一条单行注释
JAVA选中文字按
ctrl+/将选中文字变为单行注释多行注释:
1
2
3
4/* 这
是一段
多行注释
*/多行注释中不允许多行注释嵌套。
文档注释:
1
2
3
4/**
*@auther Melody
*@version 3.2.0
*/以下写法也同样合法:
1
2
3/**
就是说咱可以每行开头不加星号的
*/
1.9.2 文档注释
文档注释的注释内容可被 JDK 中的 Javadoc 工具解析,生成一套以 HTML 形式体现的说明文档。
抽取注释:
javadoc -d 生成目录 -author -.. 文档名.java
文档注释包含 标记 和紧随其后的 自由格式文本:
标记:
以
@开始,如@since下面列出了一些 通用注释:
@since 始于:创建一个 始于 条目。其后文本可以是引入该特性的版本的任何描述@author 作者:产生一个 作者 条目。可以使用多个@author标记@version 版本:产生一个 版本 条目。这里的文本可以是对当前版本的任意描述@link 超链接:产生一个 超链接,链接到 javadoc 相关部分或外部文档@see 引用:在 see also 部分增加一个超链接。可以添加多个@see标记,但必须放在一起。这里的 引用 有以下选择:
1
2
3
4
5/**
*@see com.test.Example#act()
*@see <a herf="../../../../../../">Melody's Box</a>
*@see "一段文本"
*/- 只提供类、方法或变量的名字。那个场合,使用 # 来分隔类名和方法名
@see后有一个 < 字符的场合,需要指定超链接。可以指向任何 URL@see后有一个 “ 字符的场合,文本会显示在 see alse 部分
自由格式文本:
第一句应该是一个概要性的句子。javadoc 会自动抽取这些语句生成概要页
自由格式文本中,可以使用 HTML 修饰符
#注释的插入
javadoc 工具抽取文档注释时,会从以下位置抽取:
模块
包(包注释)
要想产生包注释,必须在每个包目录中添加一个单独的文件
有 2 种方法:
- 提供一个名为 package-info.java 的文件。其中 只能 包含文档注释,以及后面的一个 package 语句。不能包含更多的代码或注释。
- 提供一个名为 package.html 的 HTML 文件。此时会抽取
<body>...</body>间的所有文本
公共类和接口(类注释)
类注释必须放在 import 语句后,类定义之前
公共的和受保护的字段
只需要对公共字段(通常是静态常量)建立文档
公共的和受保护的构造器和方法
方法注释必须放在所描述的方法之前。除了通用标记外,还能使用如下标记:
@param 变量描述:该标记能给当前方法的 参数 部分添加一个条目。该描述可以占据多行。一个方法的所有
@param标记必须放在一起@return 返回值描述:该标记能给当前方法的 返回值 部分添加一个条目。该描述可以占据多行。@throws 异常描述:该标记能给当前方法的可能抛出的 异常 添加一个条目。
1.10 JShell
Java 9 中引入了一种使用 Java 的方法,即 JShell。
JShell 程序提供了一个 “读取 - 计算 - 打印循环”。键入一个 Java 表达式,JShell 会评估你的输入,打印结果,并等待下一个输入。
在命令提示符中输入
jshell以启动 JShell
在 cmd 中输入 jshell 以启动 JShell
1 | | 欢迎使用 JShell -- 版本 11.0.12 |
JShell 会显示一个问候语,之后出现提示符
1 | jshell> int n1 = 10; |
输入一条语句,JShell 会自动打印每条输入语句的值
其中的 $2 表示该值可以用于将来的计算。上面的 n1 是自己定义的标识符
1 | jshell> Math. |
输入不完整的语句后,按 tab 键实现方法补全。上面的场合,提示了所有方法的列表
1 | jshell> Math.pow( |
自动补全后的代码。可以手动填入剩余部分。
可以按 ↑ 键自动填充运行过的代码,以实现重复运行
附录
如何快速学习技术和知识点
#1 查看需求
- 工作需要跳槽
- 对方要求
- 技术控
#2 能否使用传统技术解决
- 能解决,但不完美
- 解决不了
#3 引出学习的新技术和知识点
#4 学习新技术或知识点的基本原理和基本语法(不要考虑细节)
#5 快速入门(完成一个基本程序,crud)(能跑起来给老板看)
#6 开始研究技术的注意事项,使用细节,使用规范,如何优化(无穷无尽)
DOS(只要了解)
DOS:Disk Operating System(磁盘操作系统)
#DOS 的基本原理
在 cmd(控制台)输入指令 — DOS系统 接受指令 — 解析指令 — 执行指令
相对路径和绝对路径(举例从 JDK8\bin 访问到 JDK8\jre\bin\LICENSE)
相对路径:从当前目录开始定位,形成的路径
..\jre\bin\LICENSE返回上一级:
..\绝对路径:从顶级目录开始定位,形成的路径
d:\Program\JDK8\jre\bin
#常用的 DOS 命令
查看帮助:
help或help cd等查看目录内容:
dir查看当前目录或
dir d:\Program\JDK8\bin查看指定目录切换到其他盘:
cd /D d:从 C盘 切换至 D盘切换到当前盘的其他目录:
cd d:\Program\JDK8\jre\bin返回上级目录:
cd ..切换至根目录:
cd \查看子集目录:
tree当前目录或
tree d:/Program指定目录清屏:
cls退出:
exit创建/删除目录:
md 目录名rd 目录名拷贝/删除文件:
copy 文件名 目录del 文件名移动文件:
move 文件名 目录
