方法也被称作函数,是实现独立功能的代码块。合理使用方法可以拆分臃肿代码、提升代码复用性与可维护性。本文结合案例,依次讲解方法介绍、定义调用、执行流程、有参 / 有返回值方法、通用格式、使用注意事项以及方法重载,最后补充 IDEA AI 插件相关内容,零基础也能全面掌握,适合学习、练习与面试复习。
一、方法的介绍
1.1 什么是方法
方法是一段具备独立功能的代码块,核心特点:不调用,不执行。
1.2 使用方法的好处
在实际开发中,如果将所有业务代码都写在main方法中,代码会极度臃肿、难以阅读和维护。使用方法可以按照功能对代码进行拆分管理:
- 代码解耦:将不同功能拆分为独立方法,结构清晰;
- 提高复用性:同一功能只需编写一次,多处直接调用,不用重复编码;
- 便于维护:后期修改、排查问题时,可快速定位对应功能代码。
1.3 示例对比
未使用方法(代码堆砌,可读性差):
public class Shop { public static void main(String[] args) { // 查看全部商品(50行代码) // 上架商品(50行代码) // 下架商品(50行代码) // 修改商品(50行代码) } }使用方法(按功能拆分,结构清晰):
public class Shop { public static void main(String[] args) { // 直接调用对应方法即可执行功能 showGoodsInfo(); addGoods(); deleteGoods(); updateGoods(); } /** 查看全部商品 */ public static void showGoodsInfo(){ } /** 上架商品 */ public static void addGoods(){ } /** 下架商品 */ public static void deleteGoods(){ } /** 修改商品 */ public static void updateGoods(){ } }1.4 小结
方法是独立功能代码块,只有被调用才会执行;使用方法能简化代码结构、提升复用性与后期维护效率。
二、方法的基本定义和调用
2.1 无参无返回方法格式
定义格式
public static void 方法名() { // 方法体:实现具体功能的代码 }- 方法名:遵循小驼峰命名法,做到见名知意;
void:表示该方法没有返回值。
调用格式
方法名();
2.2 实战案例
需求:定义方法,内部声明两个整数,通过三元运算符求出最大值并打印。
public class MethodDemo { public static void main(String[] args) { // 调用方法 getMax(); } // 定义求两个整数最大值的方法 public static void getMax() { int num1 = 10; int num2 = 20; int max = num1 > num2 ? num1 : num2; System.out.println("最大值为:" + max); } }运行结果:
最大值为:20三、方法的执行流程
3.1 内存分布说明
- 方法区:
.class字节码文件加载时,所有方法的代码都会存入方法区,常驻内存; - 栈内存:方法被调用时,会进入栈内存运行;方法执行完毕,立即从栈中弹出释放空间。
3.2 普通方法调用流程
public class MethodRunDemo1 { public static void main(String[] args) { System.out.println("开始"); getMax(); System.out.println("结束"); } public static void getMax() { int num1 = 10; int num2 = 20; int max = num1 > num2 ? num1 : num2; System.out.println(max); } }执行顺序:
main方法优先入栈,执行System.out.println("开始");- 遇到
getMax()调用,getMax方法入栈,执行内部所有代码; getMax执行完毕,弹出栈,回到main方法继续执行后续代码;main方法全部执行完成,程序结束。
3.3 方法嵌套调用流程
一个方法内部可以调用其他方法,形成嵌套调用:
public class MethodRunDemo2 { public static void main(String[] args) { study(); } public static void study(){ eat(); System.out.println("学习"); sleep(); } public static void eat(){ System.out.println("吃饭"); } public static void sleep(){ System.out.println("睡觉"); } }运行结果:
吃饭 学习 睡觉执行逻辑:main→study→eat(执行完出栈)→ 回到study→sleep(执行完出栈)→study出栈 →main出栈。
3.4 小结
方法代码存放在方法区,调用时进入栈内存执行;执行完毕自动出栈,多个方法嵌套调用遵循「后进先出」规则。
四、带参数的方法
4.1 为什么需要参数
无参方法内部数据固定,功能死板。添加参数可以在调用时传入不同数据,让方法具备通用性、灵活性。
4.2 格式说明
定义格式
public static void 方法名(数据类型 变量名1, 数据类型 变量名2...) { // 方法体 }括号内的变量称为形式参数(形参),仅用于定义方法,接收外部传入的数据。
调用格式
方法名(实际参数1, 实际参数2...);调用时传入的数据称为实际参数(实参),实参会赋值给对应的形参。
4.3 代码示例
改写求最大值方法,支持传入任意两个整数:
public class ParamMethodDemo { public static void main(String[] args) { // 传入实参 10、20 getMax(10, 20); // 传入实参 30、40,复用同一个方法 getMax(30, 40); } // 定义带两个形参的方法 public static void getMax(int num1, int num2) { int max = num1 > num2 ? num1 : num2; System.out.println("最大值为:" + max); } }运行结果:
最大值为:20 最大值为:404.4 小结
形参:方法定义时声明的变量;实参:方法调用时传入的真实数据。带参方法大幅提升代码灵活性。
五、带返回值的方法
5.1 为什么需要返回值
如果一个方法的计算结果,需要被其他方法继续使用,就必须使用带返回值方法,通过return关键字将结果返回至方法调用处。
5.2 格式说明
定义格式
public static 返回值类型 方法名(参数列表) { // 方法体 return 结果数据; }- 返回值类型:必须和
return后的数据类型保持一致; return:终止方法,并将数据返回。
调用方式
- 直接调用(不接收返回值,结果直接丢弃):
方法名(实参); - 变量接收(推荐,可后续复用结果):
数据类型 变量 = 方法名(实参);
5.3 代码示例
定义求和方法,将计算结果返回给调用处使用:
public class ReturnMethodDemo { public static void main(String[] args) { // 接收方法返回的结果 int sum = add(10, 20); // 对返回结果做二次判断 System.out.println("两数之和是否为偶数:" + (sum % 2 == 0)); } // 带返回值的求和方法 public static int add(int a, int b) { int res = a + b; // 将结果返回 return res; } }运行结果:
两数之和是否为偶数:true5.4 小结
return负责把方法内部数据返回到调用位置;需要复用方法执行结果时,必须使用带返回值方法。
六、方法通用定义格式
6.1 完整通用格式
public static 返回值类型 方法名(参数列表) { 方法体; return 数据; }6.2 定义方法两大核心原则
- 明确参数:分析方法运行需要哪些外部数据,确定参数的类型与个数;
- 明确返回值:分析方法执行完毕后,是否需要向外返回结果。有结果就写对应数据类型,无结果使用
void。
6.3 调用规则
void无返回值方法:直接调用即可;- 有返回值方法:推荐使用变量接收返回结果,方便后续使用。
6.4 综合案例
- 需求 1:定义方法,计算两个小数的和并返回;
- 需求 2:定义方法,计算三个整数的最小值并返回;
- 需求 3:定义方法,打印用户个人信息(无返回值)。
public class GeneralMethodDemo { public static void main(String[] args) { // 调用小数求和方法 double dSum = addDouble(2.5, 3.5); System.out.println("小数和:" + dSum); // 调用三数取最小值方法 int min = getMin(12, 8, 20); System.out.println("最小值:" + min); // 调用打印信息方法 printInfo("张三", 22, 175.5, '男'); } // 1. 计算两个小数的和 public static double addDouble(double a, double b) { return a + b; } // 2. 计算三个整数的最小值 public static int get(int a, int b, int c) { int temp = a < b ? a : b; return temp < c ? temp : c; } // 3. 打印个人信息(无返回值) public static void printInfo(String name, int age, double height, char gender) { System.out.println("姓名:" + name); System.out.println("年龄:" + age); System.out.println("身高:" + height); System.out.println("性别:" + gender); } }七、方法注意事项
- 方法不调用就不执行:方法定义后必须主动调用,内部代码才会运行;
- 方法平级,不能嵌套定义:方法与方法之间是并列关系,不允许在一个方法内部定义另一个方法;
- 编写顺序与执行顺序无关:类中方法的先后位置,不会影响程序执行;
- void 方法的 return 规则
void表示无返回值,可以省略return;- 若手动写
return,后面不能跟具体数据,仅用于终止方法;
- return 后代码无效:
return语句下方编写的代码永远不会执行,编译器会报错。
错误示例:
// 错误1:void方法return后带数据 public static void test1(){ return 100; } // 错误2:return后编写有效代码 public static void test2(){ return; System.out.println("无效代码"); }八、方法重载(Overload)
8.1 为什么需要方法重载
如果实现相似功能却定义多个不同方法名,会增加记忆成本。方法重载可以在同一个类中,定义多个同名方法,依靠参数区分不同逻辑。
8.2 重载判定规则
同一个类中,方法名相同,参数列表不同,即为方法重载。参数不同包含三种情况:
- 参数个数不同;
- 参数类型不同;
- 参数顺序不同(不同类型参数调换顺序)。
重点:判断重载和返回值无关,仅看方法名与参数列表。
8.3 代码示例
以加法为例,实现多个重载方法:
public class OverloadDemo { public static void main(String[] args) { add(10,20); // 调用两个整数相加 add(10.5,20.5); // 调用两个小数相加 add(1,2,3); // 调用三个整数相加 } // 两个整数相加 public static int add(int a, int b) { return a + b; } // 两个小数相加(参数类型不同,构成重载) public static double add(double a, double b) { return a + b; } // 三个整数相加(参数个数不同,构成重载) public static int add(int a, int b, int c) { return a + b + c; } // 参数顺序不同,构成重载 public static void add(int a, double b){} public static void add(double a, int b){} }8.4 常见错误(不构成重载)
- 仅返回值不同:方法名、参数完全一致,仅修改返回值,不是重载;
- 仅参数变量名不同:参数类型、个数、顺序全部一致,只是变量名不同,不是重载;
- 不同类中的同名方法:不在同一个类,不满足重载条件。
8.5 重载的好处
无需记忆大量不同的方法名,同类功能统一使用一个方法名,调用简单、可读性强。日常System.out.println()就是典型的方法重载。
8.6 小结
方法重载:同类、同名、参数不同;和返回值无关;核心作用是统一方法名,降低使用与记忆成本。
九、IDEA 安装 AI 插件
在主流开发工具 IDEA 中,可以安装 AI 辅助插件提升编码效率,这里推荐阿里巴巴通义灵码:
- 插件作用:智能补全代码、生成注释、排查简单错误、解读代码,辅助日常开发;
- 获取地址:下载和安装-通义灵码;
- 使用方式:下载后按照指引在 IDEA 中安装启用即可。
十、全文总结
- 方法基础:方法是独立功能代码块,不调用不执行,核心作用是拆分代码、提升复用性;
- 定义与调用:分为无参、有参、无返回、有返回方法,分清形参与实参;
- 执行流程:方法代码存于方法区,调用时入栈执行,执行完毕出栈;
- 通用格式:定义方法先明确参数和返回值,
void代表无返回值; - 使用规范:方法不能嵌套定义,
return语句后不能编写代码; - 方法重载:同类同名、参数不同即为重载,和返回值无关,简化调用;
- 拓展:可借助 IDEA AI 插件提升编码效率。
方法是 Java 编程的核心基础,后续面向对象、集合、框架等知识点都会大量使用方法,建议多编写不同场景的案例,熟练掌握定义、调用与重载规则。