Java 语言学习笔记:从基础到实战的系统梳理
一、Java 语言基础入门
1.1 Java 的特点与应用场景
特点:面向对象编程语言,具有跨平台性(依托 JVM,一次编写多处运行)、安全性(无指针操作、自动垃圾回收)、可移植性强、多线程支持等特性,语法简洁且易于维护。
应用场景:企业级应用开发(如 ERP 系统、CRM 系统)、移动应用开发(Android 应用)、大数据开发(Hadoop、Spark 等框架基于 Java)、Web
开发(Spring、Spring Boot 等主流框架)、桌面应用开发(如 Eclipse、NetBeans)。
1.2 第一个 Java 程序(Hello World)
// 定义 HelloWorld 类,类名需与文件名一致(若为公共类)
public class HelloWorld {
// 程序入口,main 方法是 Java 程序的必选入口
public static void main(String[] args) {
// 输出函数,[Link] 会自动换行
[Link]("Hello World!");
}
}
编译与运行流程:
编写代码(.java 文件,如 [Link]);
使用 javac 命令编译源代码,生成字节码文件(.class 文件,如 [Link]);
使用 java 命令启动 JVM,加载字节码文件并执行,得到程序结果。
注意事项:若类被 public 修饰,类名必须与文件名完全一致(包括大小写);一个.java 文件中可包含多个类,但最多只能有一个公共类。
二、数据类型与变量
2.1 数据类型分类
Java 数据类型分为基本数据类型和引用数据类型,基本数据类型是 Java 语言内置,直接存储数据值;引用数据类型存储对象的引用(内存地址)。
2.1.1 基本数据类型
数据类型
说明
占用字节数
取值范围
默认值
byte
字节型
1
-128 ~ 127
0
short
短整型
2
-32768 ~ 32767
0
int
整型
4
-2147483648 ~ 2147483647
0
long
长整型
8
-9223372036854775808 ~ 9223372036854775807
0L
float
单精度浮点型
4
约 ±3.4×10^38(精度 6-7 位小数)
0.0F
double
双精度浮点型
8
约 ±1.7×10^308(精度 15-16 位小数)
0.0D
char
字符型
2
'\u0000'(空字符)~ '\uffff'(65535)
'\u0000'
boolean
布尔型
1(理论上 1 位,实际按 1 字节存储)
true(真)、false(假)
false
2.1.2 引用数据类型
包括类(如 String、自定义类)、接口、数组、枚举等,默认值为 null(表示不指向任何对象)。例如:
String str; // 字符串类型(类),默认值 null
int[] arr; // 数组类型,默认值 null
2.2 变量的定义与使用
定义格式:数据类型 变量名;,可同时定义多个同类型变量,用逗号分隔。
初始化:变量必须初始化后才能使用(局部变量无默认值,成员变量有默认值),示例:
int age = 20; // 整型变量初始化
char gender = '男'; // 字符变量初始化(单引号包裹单个字符)
double salary = 5000.5; // 浮点型变量初始化(默认 double,float 需加 F/f)
float pi = 3.14159F; // 单精度浮点型初始化,必须加 F/f
boolean isStudent = true; // 布尔型变量初始化
String name = "张三"; // 字符串变量初始化(双引号包裹)
变量命名规则:遵循 “小驼峰命名法”,由字母、数字、下划线、$ 组成,不能以数字开头,区分大小写,不能使用关键字(如 int、class、if 等)。例如:
userName、studentAge。
三、运算符与表达式
3.1 常用运算符分类
3.1.1 算术运算符
包括+(加)、-(减)、*(乘)、/(除,整数除法取商,浮点除法取精确值)、%(取余,结果符号与被除数一致)、++(自增)、--(自减)。
示例:
[Link](5 / 2); // 输出 2(整数除法)
[Link](5.0 / 2); // 输出 2.5(浮点除法)
[Link](5 % 2); // 输出 1
[Link](-5 % 2); // 输出-1(符号与被除数一致)
int a = 3;
[Link](a++); // 输出 3(先使用,后自增,执行后 a=4)
[Link](++a); // 输出 5(先自增,后使用,执行后 a=5)
3.1.2 关系运算符
包括==(等于)、!=(不等于)、>(大于)、<(小于)、>=(大于等于)、<=(小于等于),结果为 boolean 类型(true/false)。
注意:比较字符串内容需用 equals()方法,==比较字符串引用(地址),示例:
String s1 = "abc";
String s2 = new String("abc");
[Link](s1 == s2); // 输出 false(引用不同)
[Link]([Link](s2)); // 输出 true(内容相同)
3.1.3 逻辑运算符
包括&&(短路与,两边都为 true 则为 true,左边为 false 时右边不执行)、||(短路或,一边为 true 则为 true,左边为 true 时右边不执
行)、!(逻辑非,取反),操作数和结果均为 boolean 类型。
示例:
int num = 5;
[Link](num > 3 && num < 10); // 输出 true
[Link](num > 10 || num++ < 8); // 输出 true,num++不执行(num 仍为 5)
[Link](!(num == 5)); // 输出 false
3.1.4 赋值运算符
包括=(简单赋值)、+=(加后赋值)、-=(减后赋值)、*=(乘后赋值)、/=(除后赋值)、%=(取余后赋值),示例:
int b = 10;
b += 5; // 等价于 b = b + 5,执行后 b=15
b *= 2; // 等价于 b = b * 2,执行后 b=30
3.1.5 其他常用运算符
三元运算符:条件表达式 ? 表达式 1 : 表达式 2,条件为 true 时执行表达式 1,否则执行表达式 2,示例:
int max = (3 > 5) ? 3 : 5; // 3>5 为 false,max=5
** instanceof 运算符 **:判断对象是否为某个类(或其子类、接口实现类)的实例,返回 boolean 类型,示例:
String str = "test";
[Link](str instanceof String); // 输出 true
3.2 表达式与优先级
表达式:由运算符和变量 / 常量组成的式子,如(a + b) * c、score >= 60。
优先级:算术运算符 > 关系运算符 > 逻辑运算符 > 三元运算符 > 赋值运算符,可通过括号()改变优先级(括号内优先级最高)。
四、流程控制语句
4.1 分支语句
4.1.1 if-else 语句
格式 1(单分支):
if (条件表达式) {
// 条件为 true 时执行的代码块
}
格式 2(双分支):
if (条件表达式) {
// 条件为 true 时执行的代码块
} else {
// 条件为 false 时执行的代码块
}
格式 3(多分支):
if (条件表达式 1) {
// 条件 1 为 true 时执行
} else if (条件表达式 2) {
// 条件 2 为 true 时执行
} else if (条件表达式 n) {
// 条件 n 为 true 时执行
} else {
// 所有条件都为 false 时执行(可选)
}
示例(判断成绩等级):
int score = 78;
if (score >= 90) {
[Link]("优秀");
} else if (score >= 80) {
[Link]("良好");
} else if (score >= 60) {
[Link]("及格");
} else {
[Link]("不及格");
}
4.1.2 switch 语句
适用场景:多条件判断(条件表达式结果为 byte、short、int、char、String、枚举类型),格式:
switch (表达式) {
case 常量 1:
// 表达式等于常量 1 时执行的代码
break; // 跳出 switch,避免穿透(不写 break 会继续执行下一个 case)
case 常量 2:
// 表达式等于常量 2 时执行的代码
break;
...
default:
// 表达式不匹配任何 case 时执行的代码(可选)
break;
}
示例(根据月份判断季节):
int month = 4;
switch (month) {
case 3:
case 4:
case 5:
[Link]("春季");
break;
case 6:
case 7:
case 8:
[Link]("夏季");
break;
case 9:
case 10:
case 11:
[Link]("秋季");
break;
case 12:
case 1:
case 2:
[Link]("冬季");
break;
default:
[Link]("无效月份");
break;
}
4.2 循环语句
4.2.1 for 循环
格式:for (初始化表达式; 条件表达式; 更新表达式) { 循环体 },初始化表达式仅执行一次,条件表达式为 true 时执行循环体,之后执行更新表达式,重复此过
程直到条件为 false。
示例(打印 1-10 的整数,求其和):
int sum = 0;
for (int i = 1; i <= 10; i++) {
[Link](i + " "); // 输出:1 2 3 ... 10
sum += i;
}
[Link]("\n1-10 的和:" + sum); // 输出:55
增强 for 循环(foreach):用于遍历数组或集合,格式:for (元素类型 变量名 : 数组/集合) { 循环体 },示例:
int[] arr = {1, 2, 3, 4, 5};
for (int num : arr) { // 遍历数组,num 依次取数组中的每个元素
[Link](num + " "); // 输出:1 2 3 4 5
}
4.2.2 while 循环
格式:while (条件表达式) { 循环体 },先判断条件表达式,为 true 时执行循环体,重复此过程直到条件为 false(若条件初始为 false,循环体一次
不执行)。
示例(打印 1-5 的整数):
int j = 1;
while (j <= 5) {
[Link](j + " "); // 输出:1 2 3 4 5
j++;
}
4.2.3 do-while 循环
格式:do { 循环体 } while (条件表达式);,先执行一次循环体,再判断条件表达式,为 true 时继续执行循环体,直到条件为 false(循环体至少执行一
次)。
示例(输入密码,直到输入正确为止):
import [Link]; // 导入 Scanner 类用于输入
public class PasswordCheck {
public static void main(String[] args) {
Scanner scanner = new Scanner([Link]);
String correctPwd = "123456";
String inputPwd;
do {
[Link]("请输入密码:");
inputPwd = [Link](); // 获取用户输入
} while (); // 密码不正确则继续输入
[Link]("密码正确,欢迎进入!");
[Link](); // 关闭 Scanner
}
}
4.3 跳转语句
包括 break、continue、return,用于控制循环或方法的执行流程。
break:跳出当前循环(或 switch 语句),示例:
for (int i = 1; i <= 10; i++) {
if (i == 5) {
break; // 当 i=5 时跳出循环,循环不再执行
}
[Link](i + " "); // 输出:1 2 3 4
}
continue:跳过当前循环的剩余部分,直接进入下一次循环,示例:
for (int i = 1; i <= 10; i++) {
if (i % 2 == 0) {
continue; // 跳过偶数,直接进入下一次循环
}
[Link](i + " "); // 输出:1 3 5 7 9
}
return:结束当前方法的执行,若方法有返回值,需带返回值,示例:
public static int add(int a, int b) {
return a + b; // 结束方法,返回 a+b 的结果
}
五、面向对象基础(核心特性)
Java 是纯面向对象编程语言,核心特性包括封装、继承、多态。
5.1 类与对象
类:是对事物的抽象描述,包含属性(成员变量)和行为(成员方法),是创建对象的模板。
对象:是类的具体实例,具有类定义的属性和行为。
类的定义格式:
[修饰符] class 类名 {
// 成员变量(属性)
[修饰符] 数据类型 变量名;
// 构造方法(用于创建对象,方法名与类名一致,无返回值)
[修饰符] 类名([参数列表]) {
// 构造方法体
}
// 成员方法(行为)
[修饰符] 返回值类型 方法名([参数列表]) {
// 方法体
[return 返回值;]
}
}
示例(定义 Person 类,创建并使用对象):
// 定义 Person 类
class Person {
// 成员变量(属性)
String name;
int age;
// 无参构造方法(默认存在,若定义了有参构造,</doubaocanvas>