本文为Java零基础入门系列Day06核心笔记,全覆盖课堂知识点:方法重载、IDEA Debug调试实战、方法参数传递、循环嵌套、API文档使用、String字符串底层原理+全套API+综合案例,保姆级讲解,适合Java初学者学习、复习、面试!
今日学习目标(零基础必看)
- 掌握方法重载的定义、规则、易错点,能独立编写重载方法
- 熟练使用IDEA Debug调试工具排查程序问题
- 彻底理解Java方法的值传递机制
- 掌握循环嵌套的执行流程与经典案例
- 学会使用官方API帮助文档查询方法
- 掌握String字符串两种创建方式、常量池原理
- 熟练使用String全套常用API
- 独立完成用户登录、字符统计综合实战
第一章 方法重载(Overload)
1.1 核心定义
方法重载 :在同一个类 中,允许定义方法名相同 ,但参数列表不同的多个方法,是Java多态性的一种体现。
1.2 重载核心规则
✅ 三要素(构成重载)
- 同一个类中
- 方法名完全相同
- 参数列表不同 (满足其一即可)
- 参数个数不同
- 参数类型不同
- 参数顺序不同(不同类型参数交换顺序)
❌ 两无关(不影响重载)
- 与返回值类型无关
- 与访问权限修饰符(public/private/protected)无关
1.3 记忆口诀
同类同名不同参,返回权限不相关
1.4 代码实战(正确+错误示例)
java
public class MethodOverload {
// 1. 无参方法
public void print() {
System.out.println("无参方法");
}
// 2. 参数个数不同 → 重载
public void print(int a) {
System.out.println("int参数:" + a);
}
// 3. 参数类型不同 → 重载
public void print(String s) {
System.out.println("String参数:" + s);
}
// 4. 参数顺序不同 → 重载
public void print(int a, String s) {}
public void print(String s, int a) {}
// ❌ 错误演示:仅返回值不同,不构成重载!编译报错
// public int print() { return 0; }
// ❌ 错误演示:仅权限修饰符不同,不构成重载!
// private void print() {}
}
1.5 方法重载的作用
方便调用者使用,同一个方法名可以实现不同的功能,简化代码调用。
第二章 IDEA Debug调试 实战教程(重点)
Debug是程序员排查bug、查看程序执行流程的核心工具,零基础必须熟练掌握!
2.1 什么是Debug
在代码中设置断点 ,让程序暂停执行,逐行运行代码,实时查看变量值、执行流程。
2.2 Debug使用步骤(IDEA版)
- 加断点 :点击代码行号右侧空白处,出现蓝色小圆点即为断点
- 启动调试 :右键代码 →
Debug '类名'或点击右上角Debug按钮 - 调试控制:使用调试按钮控制程序执行
- 查看数据:在Debug面板查看变量、参数、返回值
- 结束调试:点击红色停止按钮
2.3 调试按钮详解(零基础必记)

| 按钮 | 快捷键 | 名称 | 作用 |
|---|---|---|---|
| 🟢 | F8 |
Step Over(步进) | 逐行执行代码,跳过方法内部 |
| 📥 | F7 |
Step Into(步入) | 进入自定义方法/源码内部 |
| 📤 | Shift+F8 |
Step Out(步出) | 跳出方法,返回方法调用处 |
| ▶️ | F9 |
Resume(恢复) | 直接执行到下一个断点 |
| ⏹️ | - | Stop(停止) | 结束调试 |
2.4 Debug实战案例
java
public class DebugTest {
public static void main(String[] args) {
int a = 10;
int b = 20;
int sum = a + b; // 在此处加断点
System.out.println(sum);
}
}
调试效果:可以清晰看到
a、b、sum的数值变化,直观理解程序执行流程。
第三章 方法的参数传递
3.1 核心结论
Java中只有一种参数传递方式:值传递!
- 基本数据类型:传递数据的副本
- 引用数据类型:传递地址值的副本
3.2 基本类型参数传递
- 传递:变量的数值副本
- 结果:方法内修改副本,不会影响方法外的原变量
3.3 引用类型参数传递
- 传递:对象的内存地址值
- 结果:方法内通过地址修改对象内容,会影响方法外的原对象
3.4 代码验证
java
public class ParamTransfer {
// 基本类型:值传递
public static void change(int num) {
num = 100;
}
// 引用类型:地址值传递
public static void change(int[] arr) {
arr[0] = 100;
}
public static void main(String[] args) {
// 基本类型测试
int a = 10;
change(a);
System.out.println(a); // 输出10,原变量不变
// 引用类型测试
int[] array = {1,2,3};
change(array);
System.out.println(array[0]); // 输出100,原数组被修改
}
}
第四章 循环嵌套
4.1 核心概念
循环嵌套:一个循环内部包含另一个完整的循环
- 外层循环:控制行数
- 内层循环:控制列数
- 执行规则:外层执行1次,内层执行完整一轮
4.2 经典案例1:打印矩形
java
for (int i = 0; i < 3; i++) { // 3行
for (int j = 0; j < 5; j++) { // 5列
System.out.print("*");
}
System.out.println();
}
4.3 经典案例2:九九乘法表(必考)
java
public class LoopDemo {
public static void main(String[] args) {
// 外层:控制行数 1~9
for (int i = 1; i <= 9; i++) {
// 内层:控制列数 1~i
for (int j = 1; j <= i; j++) {
System.out.print(j + "*" + i + "=" + (i*j) + "\t");
}
System.out.println(); // 换行
}
}
}
第五章 API帮助文档使用教程
5.1 什么是API
API(应用程序编程接口):Java官方提供的类、方法说明书,帮助我们快速使用Java内置功能。
5.2 API文档使用步骤
- 打开JDK官方API文档
- 左上角搜索框输入类名 (如
String) - 查看类的所属包、构造方法、成员方法
- 重点看:方法功能、参数、返回值
5.3 IDEA快捷键
Ctrl + Q:鼠标悬停在方法上,快速查看方法注释/功能
第六章 String字符串 核心详解(重点+面试高频)
6.1 String基础概述
- 全类名:
java.lang.String→ 无需导包,直接使用 - 底层存储:JDK8+ 采用
byte[]字节数组,早期为char[]字符数组 - 不可变性:String对象一旦创建,内容永远无法修改
6.2 字符串常量池
JVM在堆内存 中划分的一块特殊内存区域 ,专门存储直接赋值的字符串 ,目的:节约内存,复用对象。
6.3 String对象两种创建方式(核心区别)
方式1:直接赋值(推荐)
java
String s1 = "abc";
- 先去字符串常量池 查找
"abc" - 存在:直接复用常量池中的地址
- 不存在:在常量池创建新对象,再复用
- 优点:节约内存,多个相同字符串共用一个对象
方式2:new 构造方法创建
java
String s2 = new String("abc");
- 每
new一次,在堆内存开辟新空间 - 即使内容相同,地址值一定不同
- 缺点:浪费内存,创建2个对象(堆+常量池)
6.4 == 和 equals() 区别(必考)
| 符号 | 作用 |
|---|---|
== |
基本类型:比较值;引用类型:比较内存地址 |
equals() |
String类重写后,比较字符串内容是否完全相同 |
代码验证
java
String s1 = "abc";
String s2 = "abc";
String s3 = new String("abc");
System.out.println(s1 == s2); // true(地址相同)
System.out.println(s1 == s3); // false(地址不同)
System.out.println(s1.equals(s3)); // true(内容相同)
第七章 String 全套常用API(背会!开发/考试必用)
7.1 判断功能API
| 方法 | 作用 |
|---|---|
boolean equals(String s) |
比较内容,区分大小写 |
boolean equalsIgnoreCase(String s) |
比较内容,不区分大小写 |
boolean contains(String s) |
判断是否包含指定子串 |
boolean isEmpty() |
判断字符串是否为空(长度=0) |
boolean startsWith(String s) |
判断是否以指定字符串开头 |
boolean endsWith(String s) |
判断是否以指定字符串结尾 |
7.2 获取功能API
| 方法 | 作用 |
|---|---|
int length() |
获取字符串长度(字符个数) |
char charAt(int index) |
获取指定索引处的字符 |
int indexOf(String s) |
获取子串第一次出现的索引,无则返回-1 |
String substring(int begin) |
从begin索引截取到末尾 |
String substring(int begin, int end) |
截取[begin, end),含头不含尾 |
7.3 转换功能API
| 方法 | 作用 |
|---|---|
char[] toCharArray() |
字符串 → 字符数组 |
byte[] getBytes() |
字符串 → 字节数组(编码) |
String replace(old, new) |
替换所有指定子串 |
String toUpperCase() |
转大写 |
String toLowerCase() |
转小写 |
7.4 分割功能API
| 方法 | 作用 |
|---|---|
String[] split(String regex) |
按指定规则分割字符串,返回字符串数组 |
⚠️ 注意:特殊字符分割(
.|*)需要加转义符\\
7.5 API综合代码示例
java
public class StringAPIDemo {
public static void main(String[] args) {
String s = "Hello-Java-123";
// 1. 获取长度
System.out.println(s.length()); // 13
// 2. 截取字符串 [0,5)
System.out.println(s.substring(0,5)); // Hello
// 3. 分割字符串
String[] arr = s.split("-");
for (String str : arr) {
System.out.print(str + " "); // Hello Java 123
}
// 4. 替换
System.out.println(s.replace("Java", "World"));
}
}
第八章 字符串编码与解码
8.1 核心概念
- 编码 :字符串 → 字节数组(
getBytes()) - 解码 :字节数组 → 字符串(
new String(byte[])) - 作用:解决数据传输、文件读写中的乱码问题
8.2 代码示例
java
String s = "你好";
// 编码
byte[] bytes = s.getBytes();
// 解码
String newStr = new String(bytes);
第九章 综合实战案例(零基础必练)
案例1:用户登录验证(优化版:3次机会)
需求:输入用户名密码,验证是否正确,最多尝试3次
java
import java.util.Scanner;
public class LoginDemo {
public static void main(String[] args) {
String rightUser = "admin";
String rightPwd = "123456";
Scanner sc = new Scanner(System.in);
// 3次登录机会
for (int i = 0; i < 3; i++) {
System.out.print("请输入用户名:");
String username = sc.next();
System.out.print("请输入密码:");
String password = sc.next();
if (rightUser.equals(username) && rightPwd.equals(password)) {
System.out.println("登录成功!");
break;
} else {
System.out.println("用户名或密码错误,剩余" + (2-i) + "次机会");
}
}
}
}
案例2:字符统计
需求:统计字符串中大写字母、小写字母、数字、其他字符的数量
java
import java.util.Scanner;
public class CharCount {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入字符串:");
String s = sc.next();
int upper = 0, lower = 0, num = 0, other = 0;
// 遍历字符串
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c >= 'A' && c <= 'Z') upper++;
else if (c >= 'a' && c <= 'z') lower++;
else if (c >= '0' && c <= '9') num++;
else other++;
}
System.out.println("大写字母:" + upper);
System.out.println("小写字母:" + lower);
System.out.println("数字:" + num);
System.out.println("其他字符:" + other);
}
}
第十章 高频易错点+面试题总结
- 方法重载:仅方法名+参数决定,返回值、权限无关
- Debug:F8逐行执行,F7进入方法,F9跳到下断点
- 参数传递:Java只有值传递,基本类型传值,引用类型传地址
- String创建:直接赋值用常量池,new创建新对象
- == vs equals:==比地址,equals比字符串内容
- substring :截取范围
[begin, end),含头不含尾 - split :特殊字符需要转义
\\
第十一章 本章总结
- 方法重载:同类同名不同参,返回权限不相关
- Debug调试:程序员必备工具,逐行排查bug
- 值传递:Java唯一参数传递方式
- String核心:常量池复用、不可变性、两种创建方式
- String API:判断、获取、转换、分割四大类方法,开发高频使用
- 实战案例:登录验证、字符统计,巩固字符串API用法
