<Java>1 基础知识

本文最后更新于:2023年6月27日 上午

1 Java 概述

程序:一系列有序指令的集合

1.1 Java 历史

  • 目前 Java 版权属于甲骨文公司。

  • 长期支持的版本只有 Java8 与 Java11。这两个版本也是最多使用的版本。

  • Java SE:标准版

    Java EE:企业版(重要)

    Java ME:小型版(少)

1.2 Java 重要特点

  1. Java 语言是面向对象的(oop)

    简单来说,面向对象是一种程序设计技术。其重点放在数据(对象)和对象的接口上。

    ——何为面向对象?详见 [ 6 面向对象编程 ]

  2. Java 语言是健壮的。其强类型机制、异常处理、垃圾自动收集是健壮性的保证。

    Java 强调早期问题检测、后期动态检测,及消除易出错的情况。其编译器能检测很多其他语言仅在运行时才会发现的问题。

    ——异常见 [ 11 异常 ]

  3. Java 语言是跨平台性的:一个编译好的 .class 文件可以在多个不同系统下直接运行。

    Java 中没有 “依赖具体实现” 的地方。其基本数据类型大小、有关运算的行为等都有明确说明。其绝大多数库都能很好地支持平台独立性,而不用担心操作系统。

  4. 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 编译

javac [选项] 源文件名.java			//[] 中是可选项
  • 通过编译器将 Java 源文件编译成 JVM 可识别的字节码文件。字节码文件是二进制格式的,其格式是统一的。在源文件目录下使用 Javac 编译工具对 Java 文件进行编译。
  • 如果没有错误将没有提示,当前目录会对应其中每一个类生成对应名称的 .class 文件,即字节码文件,也是可执行的 Java 程序。

1.5.2 运行

java [选项] 程序名 [参数列表]			//[] 中是可选项
  • 有了可执行的 Java 程序(字节码文件)
  • 通过运行工具 Java.exe 对字节码文件进行执行,本质是将 .class 文件装载到 JVM 运行。

注意,修改后的 .Java 源文件需要重新编译

1.6 Java 开发注意事项和细节说明

  1. 源文件以 .java 为扩展名,源文件的基本组成部分是类(class)

  2. Java 应用程序的执行入口是 main() 方法。其有固定的书写格式:

    public static void main(string[]args){…}

  3. Java 语言严格区分大小写

  4. Java 方法由一条条语句构成,每个语句都以 ; 结束

  5. 大括号 { } 是成对出现的,缺一不可。习惯先写 {} 再写代码

  6. 一个源文件中最多只有一个 public 类,其余类不限。

  7. 如果文件中包含 public 类,则文件名必须按该类命名。

  8. 也可以把 main 方法写在非 public 类中,然后运行指定非 public 类,这样入口方法是非 public 类的主方法。

  9. 在控制台按 tab 可以实现代码补齐。按方向键 ↑ 或 ↓ 可以调用历史代码。

1.7 代码规范

  1. 类、方法的注释要以 Javadoc 的方式来写

  2. 非 Javadoc 的注释,往往是给维护者看的,着重告诉读者为什么这样写,如何修改,注意什么问题等。

  3. 不要用 a b,这种名称命名变量,尽量写得清楚 int age = 10;

    另外,Java 源代码使用的是 Unicode 码,因此汉语也能作为标识符。但不推荐使用汉语做标识符。

  4. 使用 tab 键操作,使代码右移。使用 shift+tab 键,使代码左移。

  5. 运算符两边各加入空格。注意排版规范。

  6. 源文件使用 UTF-8 编码。

  7. 代码行宽度不要超过 80 个字符。超过时通过换行保持简洁。

  8. 代码编写次行风格行尾风格

    次行风格:换行输入{ },使其总在行头

    行尾风格:在一行的末尾输入 {,换行输入 }

  9. 一段代码完成一个小功能,尽量不要混合。这样更加灵活。

1.8 Java 转义字符

  1. \t:一个制表位,实现对齐功能

  2. \n:换行符

  3. \\:一个 \

  4. \":一个 "

  5. \':一个 '

  6. \r:一个回车(不是换行)

  7. \.:一个小圆点 .

  8. \b:退格键

  9. \u????:一个具体的 Unicode 字符。其中 ??? 是 4 位 16 进制数

    \???:一个具体的 Unicode 字符。其中 ??? 是 3 位 8 进制数

1.9 注释

注释:用于注解说明程序的文字。其提高了代码的可读性,是一个程序员必须要具有的良好编程习惯。将自己的思想通过注释先整理出来,再用代码去体现。

被注释的文字不会被 JVM 解释执行。

1.9.1 注释类型

  • 单行注释:

    //这是一条单行注释

    选中文字按 ctrl + / 将选中文字变为单行注释

  • 多行注释:

    /*	这
    	是一段
    	多行注释
    	*/

    多行注释中不允许多行注释嵌套。

  • 文档注释:

    /**
    *@auther Melody
    *@version 3.2.0
    */

    以下写法也同样合法:

    /**
    	就是说咱可以每行开头不加星号的
    */

1.9.2 文档注释

文档注释的注释内容可被 JDK 中的 Javadoc 工具解析,生成一套以 HTML 形式体现的说明文档。

抽取注释:javadoc -d 生成目录 -author -.. 文档名.java

文档注释包含 标记 和紧随其后的 自由格式文本

  • 标记:

    @ 开始,如 @since

    下面列出了一些 通用注释

    • @since 始于:创建一个 始于 条目。其后文本可以是引入该特性的版本的任何描述

    • @author 作者:产生一个 作者 条目。可以使用多个 @author 标记

    • @version 版本:产生一个 版本 条目。这里的文本可以是对当前版本的任意描述

    • @link 超链接:产生一个 超链接,链接到 javadoc 相关部分或外部文档

      @see 引用:在 see also 部分增加一个超链接。可以添加多个 @see 标记,但必须放在一起。

      这里的 引用 有以下选择:

      /**
      *@see com.test.Example#act()
      *@see <a herf="../../../../../../">Melody's Box</a>
      *@see "一段文本"
      */
      1. 只提供类、方法或变量的名字。那个场合,使用 # 来分隔类名和方法名
      2. @see 后有一个 < 字符的场合,需要指定超链接。可以指向任何 URL
      3. @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

C:\Users\Melody>jshell

在 cmd 中输入 jshell 以启动 JShell

|  欢迎使用 JShell -- 版本 11.0.12
|  要大致了解该版本, 请键入: /help intro

jshell>

JShell 会显示一个问候语,之后出现提示符

jshell> int n1 = 10;
n1 ==> 10

jshell> n1++;
$2 ==> 10

输入一条语句,JShell 会自动打印每条输入语句的值

其中的 $2 表示该值可以用于将来的计算。上面的 n1 是自己定义的标识符

jshell> Math.
E                 IEEEremainder(    PI                abs(              acos(             addExact(
asin(             atan(             atan2(            cbrt(             ceil(             class
copySign(         cos(              cosh(             decrementExact(   exp(              expm1(
floor(            floorDiv(         floorMod(         fma(              getExponent(      hypot(
incrementExact(   log(              log10(            log1p(            max(              min(
multiplyExact(    multiplyFull(     multiplyHigh(     negateExact(      nextAfter(        nextDown(
nextUp(           pow(              random()          rint(             round(            scalb(
signum(           sin(              sinh(             sqrt(             subtractExact(    tan(
tanh(             toDegrees(        toIntExact(       toRadians(        ulp(

输入不完整的语句后,按 tab 键实现方法补全。上面的场合,提示了所有方法的列表

jshell> Math.pow(

自动补全后的代码。可以手动填入剩余部分。

可以按 ↑ 键自动填充运行过的代码,以实现重复运行

附录

如何快速学习技术和知识点

#1 查看需求

  1. 工作需要跳槽
  2. 对方要求
  3. 技术控

#2 能否使用传统技术解决

  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 命令

查看帮助:helphelp 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 文件名 目录

更多


<Java>1 基础知识
https://i-melody.github.io/2021/11/21/Java/入门阶段/1 基础知识/
作者
Melody
发布于
2021年11月21日
许可协议