开始
https://www.oracle.com/java/technologies/downloads/#jdk21-windows
一些基础知识
编译型语言。
java 将代码编译为一种字节码。
虚拟机负责加载字节码并执行。一次编写,到处运行。
三个版本
- EE spring 框架,数据库,分布式架构(应用)
- SE 学习 java 标准库使用(是基础)
- ME 没用,学 android 即可

jre 是运行 java 字节码的虚拟机。
jdk 是个工具箱。
jsr 是规范,jcp 是个组织。
如何安装

x64 Compressed Archive 是一种压缩档案的文件,推荐用这个,解压即可使用。

解压到某个位置。

添加个环境变量,变量名,变量值就是放的位置。

在 Path 中添加 %JAVA_HOME% \bin 和\jre\bin
%变量名% 的形式表示引用一个环境变量的值。例如,%PATH% 表示系统的 PATH 环境变量。

这个对应了这个,方便之后切换 java 的版本。

在 cmd 中使用 java --version 能够确定什么版本。
第一个程序
public class Hello{
public static void main(String[] args){
System.out.println("Hello World");
}
}
.java 文件其实就是个文本文件,使用 javac 指令把文件变为.class 文件,就是字节码了,然后再使用 java 指令,就可以运行在 jvm 也就是 java 虚拟机上面了。

上面是字节码,下面是文本。

javac 让文本生成字节码。

java 指令直接执行字节码,不过后面不能有 class。
使用 IDE
IDE是集成开发环境:Integrated Development Environment的缩写。
使用 IDEA 即可。
java 基础
java 是面向对象的一门语言,所以基本单位是类。
类的命名规范就是大写字母开头。也就是大驼峰。
idea 格式化文档(也就是让排版更好看)的快捷键是
变量
java 是强类型语言。也就是类型必须明确声明:变量在使用前必须声明其类型。显式类型转换:不兼容类型之间需要显式转换。
强类型语言的好处就是编译阶段就能发现潜在的错误,而不是运行时才发现问题。
- 整数类型
- byte
- short
- int
- long
- 浮点数类型
- float
- double
- 字符类型
- char
- 布尔类型
- boolean
一个字节是八位二进制。

浮点数中不带 f 结尾的默认是 double 类型,不能赋值给 float 类型。
理论上存储布尔类型只需要 1 bit 但是 jvm 内部会把 boolean 表示为 4 字节整数。
字符类型 char 表示一个字符。Java的 char 类型除了可表示标准的ASCII外,还可以表示一个Unicode字符。
注意char类型使用单引号',且仅有一个字符,要和双引号"的字符串类型区分开。
除了基本类型就是引用类型,字符串就是引用类型。
常量
使用 final 修饰符。
作用是避免 magic number
Magic Number(魔法数字)是指在代码中直接使用的、没有明确含义的数字字面量。这些数字缺乏上下文解释,使得代码难以理解和维护。
var 关键字
类型名太长,写起来麻烦可以用 var。
StringBuilder sb = new StringBuilder();
var sb = new StringBuilder(); //你写成这样,编译器会自动变成上面的形式整数运算
整数是精准运算。
普通计算:加减乘除,取模
位运算:左移乘二,右移除二
位运算:与,或,非,异或
类型自动提升与强制
类型不同的无法运算,只有相同类型才能运算。
两种情况:自动提升,强制提升
自动提升:小转大,也就是位数占得小的变位数占得大的,如 short(2 位) 变 int(4 位)。这个补零就行,不会损失精度。
强制提升:大转小,int 变 short,精度或许会变化。