每日一言
Isn’t it lonely when you wake up and you don’t hear any voices? — Nako Oshimizu from Hanasaku Iroha: Blossoms for Tomorrow
环境配置
首先我们到官网下载JDK:Java Downloads | Oracle 中国

选择合适的版本后安装即可,
安装时一定要记住java的安装路径。
安装好java后就是按照惯例的配置环境变量,如果是使用win11的朋友我强烈推荐一款由微软官方开发的拓展工具:Microsoft PowerToys 。

不仅可以方便的配置环境变量,还提供了一系列方便的功能,比如:
- 高级粘贴:将粘贴的内容自动转化为json等计算机常用格式
- 快速查找鼠标
- 文件批量重命名
我们需要先创建一个环境变量:JAVA_HOME

我们在system中的path中添加%jAVA_HOME%\bin路径

经过实测,如果不创建JAVA_HOME这一环境变量,直接在path中添加 C:\Program Files\Java\jdk-23\bin 这一绝对路径,虽然在vscode中可以直接运行java程序,但是当你通过手动编译运行时
javac HelloWorld.java
java HelloWorld
就会报错如下:
错误: 找不到或无法加载主类 HelloWord
原因: java.lang.ClassNotFoundException: HelloWord
接下来想要在vscode中运行java文件,只需要再安装一些扩展即可:
安装完第一个扩展和第二个扩展包后,就可以在vscode中运行java文件了。
可以用下面代码进行测试:
public class HelloWorld {
/* 第一个Java程序
* 它将输出字符串 Hello World
*/
public static void main(String[] args) {
System.out.println("Hello World"); // 输出 Hello World
}
}
classpath
在了解classpath环境变量之前,或许我们需要先了解一下java大致的运行流程:
- 编写java代码,存放在
.java文件中 - 编译java代码为字节码,存放在
.class文件中 - JVM将.
class中的字节码加载到内存中,并且将字节码转化为对应平台的机器码
字节码(Bytecode)
字节码是一种介于机器码于高级语言代码的中间表示形式,它是 Java 源代码(.java 文件)经过编译器(javac)编译后生成的机器无关的代码,存储在 .class 文件中。字节码是为 Java 虚拟机(JVM)设计的,而不是直接为任何具体硬件或操作系统服务。
这一特性使得java编译后的字节码,可以在任何一个装有JVM的机器上运行,无需考虑机器的处理架构,或处理器指令集不同等硬件层面不同,由JVM负责将字节码转化为机器对应的字节码,使得可以在任何平台上运行。
现在回到正题,java中的classpath究竟是什么?
classpath环境变量用于告诉java解释器,应该在硬盘中的哪里加载 .class中的字节码,便于我们将所有编译生成的字节码与源代码分开放置,便于文件管理。
我们以上面给出的HelloWorld程序为例:
我们创建如下的项目目录:

使用代码:
javac HelloWorld\HelloWorld.java
编译java文件,生成字节码HelloWorld.class

此时两个文件都在工作区中的HelloWorld目录中,此时我们直接输入
java HelloWorld
然后我们在终端中输入
cd HelloWorld
java HelloWorld
显示运行成功:

然后我们将class放到ClassPath文件夹下:

再次运行会显示报错:

这时我们就需要添加classpath环境路径:
通过参数 -cp + 绝对路径 来添加classpath参数

如果不显式指定 CLASSPATH,JVM 会默认将当前目录(.)作为类路径。
基础语法
基本数据类型(Primitive Data Types)
- 整数类型:
byte: 8 位有符号整数 (-128 到 127)short: 16 位有符号整数 (-32768 到 32767)int: 32 位有符号整数 (-2147483648 到 2147483647)long: 64 位有符号整数 (-9223372036854775808 到 9223372036854775807)
- 浮点数类型:
float: 32 位单精度浮点数double: 64 位双精度浮点数
- 字符类型:
char: 16 位 Unicode 字符 (用单引号括起来,如 ‘a’, ‘1’, ‘中’)
- 布尔类型:
boolean: 表示 true 或 false
java中并没有直接提供无符号数的表示
变量(Variables)
变量的声明方式与c或c++相似:
- 声明变量:
数据类型 变量名;例如:int age; - 初始化变量:
数据类型 变量名 = 值;例如:int age = 30;
变量命名规则:
- 必须以字母、下划线(_)、美元符号($),开头
- 后面可以跟字母、数字、下划线或美元符号
- 区分大小写 (age 和 Age 是不同的变量)
- 不能使用 Java 的关键字 (如
int,class,public)
命名方法:
- 小驼峰命名法:首字母小写,后续单词首字母大写(userName)
- 大驼峰命名法:包括第一个单词在内,每个单词的首字母都大写。(UserName)
运算符(Operators)
java的运算符表示与c或c++完全相同:
- 算术运算符:
+,-,*,/,%(取模) - 赋值运算符:
=(例如:age = 30;),+=,-=,*=,/=,%=(例如:age += 5;等价于age = age + 5;) - 比较运算符:
==(等于),!=(不等于),>,<,>=,<= - 逻辑运算符:
&&(逻辑与),||(逻辑或),!(逻辑非) - 位运算符:
&(按位与),|(按位或),^(按位异或),~(按位取反),<<(左移),>>(右移),>>>(无符号右移) - 三元运算符:
条件 ? 表达式1 : 表达式2(例如:int max = (a > b) ? a : b;) - 自增运算符:++(自增1),—(自减1),例如:age++,++age,其使用区别与c相同
但是java中没有c或c++中的逗号表达式
控制流程(Control Flow)
- 条件语句:
if语句:if (条件) { 代码块; }if-else语句:if (条件) { 代码块1; } else { 代码块2; }if-else if-else语句:if (条件1) { 代码块1; } else if (条件2) { 代码块2; } else { 代码块3; }switch语句:switch (表达式) { case 值1: 代码块1; break; case 值2: 代码块2; break; ... default: 代码块n; }
- 循环语句:
for循环:for (初始化; 条件; 更新) { 代码块; }while循环:while (条件) { 代码块; }do-while循环:do { 代码块; } while (条件);
- 跳转语句:
break: 跳出循环或switch语句continue: 跳过当前循环的剩余部分,进入下一次循环return: 从方法中返回
文档注释(Comments)
-
单行注释:
// 这是 Java 中的单行注释 -
多行注释:
/* 这是 Java 中的 多行注释 */ -
文档注释:
/** * 这是 Java 中的文档注释。 * 它可以用于生成 API 文档。 * @param args 命令行参数 */文档注释可以使用特定的标签 (tag) 来提供结构化的信息,例如:
@author:作者@version:版本号@param:参数描述@return:返回值描述@throws:抛出的异常@see:相关链接@deprecated:标记为已过时
数组(Arrays)
-
声明数组:
int[] numbers; -
创建数组:
numbers = new int[5]; //创建数组 numbers = new int[] {1, 2, 3, 4, 5}; //创建并初始化数组
通过索引访问数组元素,下标从0开始。
类(Classes)和对象(Objects)
类:类是一种蓝图或者模板,用于创建对象。它定义了对象所具有的属性(数据)和行为(方法)。
public class 类名 {
// 属性 (成员变量)
数据类型 属性名;
// 方法 (成员函数)
public 返回值类型 方法名(参数列表) {
// 方法体
}
}
对象:对象是类的实例。是根据类这个模板创建出来的具体实例。
类名 name = new 类名(参数1,参数2)
ClassName name = new ClassName(parameter1, parameter2);
方法
定义方法:
public 返回值类型 方法名(参数列表) {
// 方法体
return 返回值;
}
调用方法: 方法名(参数列表);
方法重载: 同一个类中可以有多个方法名相同,但参数列表不同的方法 (方法签名不同)。

