Java 概述
Java 概述
sinarcsinx程序:一系列有序指令的集合
Java 历史
目前 Java 版权属于甲骨文公司。
长期支持的版本只有 Java8 与 Java11。这两个版本也是最多使用的版本。
Java SE:标准版
Java EE:企业版(重要)
Java ME:小型版(少)
Java 重要特点
面向对象(oop)
简单来说,面向对象是一种程序设计技术。其重点放在数据(对象)和对象的接口上。
健壮性
其强类型机制、异常处理、垃圾自动收集是健壮性的保证。
Java 强调早期问题检测、后期动态检测,及消除易出错的情况。其编译器能检测很多其他语言仅在运行时才会发现的问题。
可移植性
一个编译好的
.class
文件可以在多个不同系统下直接运行。Java 中没有 “依赖具体实现” 的地方。其基本数据类型大小固定,有关运算的行为等都有明确说明。其绝大多数库都能很好地支持平台独立性,而不用担心操作系统。
解释型
解释型语言编译后需要解释器才能运行。相对的,编译型语言可以被直接执行。
Java 解释器能在任何移植了解释器的机器上直接执行 Java 字节码。
简单性
Java语法是C++语法的一个“纯净”版本。
占用内存小。
分布式
Java有一个丰富的例程库,用于处理像HTTP和FTP之类的TCP/IP协议。
Java应用程序能够通过URL打开和访问网络上的对象。
安全性
体系结构中立
高性能
多线程
动态性
库中可以自由地添加新方法和实例变量,而对客户端没有任何影响。
Java 的开发工具
- javac:Java 编译器。将 Java 程序编译成字节码
- java:Java 解释器。执行已经转换为字节码的文件
- jdb:Java 调试器。调试 Java 程序
- javap:反编译。将类文件还原回方法和变量
- javadoc:文档生成器。创建 HTML 文件
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 程序的基本条件
Java 执行流程分析
.Java
文件(源文件) — javac(编译)—.class
文件(字节码文件) — java(运行)— 结果
编译
1 | javac [选项] 源文件名.java //[] 中是可选项 |
- 通过编译器将 Java 源文件编译成 JVM 可识别的字节码文件。字节码文件是二进制格式的,其格式是统一的。在源文件目录下使用 Javac 编译工具对 Java 文件进行编译。
- 如果没有错误将没有提示,当前目录会对应其中每一个类生成对应名称的
.class
文件,即字节码文件,也是可执行的 Java 程序。
运行
1 | java [选项] 程序名 [参数列表] //[] 中是可选项 |
- 有了可执行的 Java 程序(字节码文件)
- 通过运行工具
Java.exe
对字节码文件进行执行,本质是将.class
文件装载到 JVM 运行。
注意,修改后的 .Java 源文件需要重新编译
Java 开发注意事项和细节说明
源文件以
.java
为扩展名,源文件的基本组成部分是类(class)Java 应用程序的执行入口是
main()
方法。其有固定的书写格式:public static void main(string[]args){…}
Java 语言严格区分大小写。
Java 方法由一条条语句构成,每个语句都以
;
结束。大括号
{
}
是成对出现的,缺一不可。习惯先写{}
再写代码一个源文件中最多只有一个 public 类,其余类不限。
如果文件中包含 public 类,则文件名必须按该类命名。
也可以把 main 方法写在非 public 类中,然后运行指定非 public 类,这样入口方法是非 public 类的主方法。
在控制台按 tab 可以实现代码补齐。按方向键 ↑ 或 ↓ 可以调用历史代码。
代码规范
类、方法的注释要以 Javadoc 的方式来写
非 Javadoc 的注释,往往是给维护者看的,着重告诉读者为什么这样写,如何修改,注意什么问题等。
不要用
a
b
,这种名称命名变量,尽量写得清楚int age = 10;
另外,Java 源代码使用的是 Unicode 码,因此汉语也能作为标识符。但不推荐使用汉语做标识符。
使用 tab 键操作,使代码右移。使用 shift+tab 键,使代码左移。
运算符两边各加入空格。注意排版规范。
源文件使用 UTF-8 编码。
代码行宽度不要超过 80 个字符。超过时通过换行保持简洁。
代码编写次行风格及行尾风格
次行风格:换行输入
{
}
,使其总在行头行尾风格:在一行的末尾输入
{
,换行输入}
一段代码完成一个小功能,尽量不要混合。这样更加灵活。
Java 转义字符
\t
:一个制表位,实现对齐功能\n
:换行符\\
:一个\
\"
:一个"
\'
:一个'
\r
:一个回车(不是换行)\.
:一个小圆点.
\b
:退格键\u????
:一个具体的 Unicode 字符。其中 ???? 是 4 位 16 进制数\???
:一个具体的 Unicode 字符。其中 ??? 是 3 位 8 进制数\f
:换页\0
:空字符
注释
注释:用于注解说明程序的文字。其提高了代码的可读性,是一个程序员必须要具有的良好编程习惯。将自己的思想通过注释先整理出来,再用代码去体现。
被注释的文字不会被 JVM 解释执行。
注释类型
单行注释:
1
//这是一条单行注释
选中文字按
ctrl
+/
将选中文字变为单行注释多行注释:
1
2
3
4/* 这
是一段
多行注释
*/多行注释中不允许多行注释嵌套。
文档注释:
1
2
3
4/**
*@auther sinx
*@version 3.2.0
*/以下写法也同样合法:
1
2
3/**
可以每行开头不加星号
*/
文档注释
文档注释的注释内容可被 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="../../../../../../">sinarcsinx'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 异常描述
:该标记能给当前方法的可能抛出的 异常 添加一个条目。
JShell
Java 9 中引入了一种使用 Java 的方法,即 JShell。
JShell 程序提供了一个 “读取 - 计算 - 打印循环”。键入一个 Java 表达式,JShell 会评估你的输入,打印结果,并等待下一个输入。
在命令提示符中输入
jshell
以启动 JShell
1 | C:\Users\sinarcxinx>jshell |
在 cmd 中输入 jshell 以启动 JShell
1 | | 欢迎使用 JShell -- 版本 11.0.12 |
JShell 会显示一个问候语,之后出现提示符
1 | int n1 = 10; |
输入一条语句,JShell 会自动打印每条输入语句的值
其中的 $2 表示该值可以用于将来的计算。上面的 n1 是自己定义的标识符
1 | Math. |
输入不完整的语句后,按 tab 键实现方法补全。上面的场合,提示了所有方法的列表
1 | Math.pow( |
自动补全后的代码。可以手动填入剩余部分。
可以按 ↑ 键自动填充运行过的代码,以实现重复运行
附录
DOS
DOS:Disk Operating System(磁盘操作系统)
DOS 的基本原理
在 cmd(控制台)输入指令 — DOS系统 接受指令 — 解析指令 — 执行指令
相对路径和绝对路径(举例从 JDK8访问到 JDK8)
相对路径:从当前目录开始定位,形成的路径
..\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 文件名 目录
…
[[Dos]]