Java 成员方法(方法)全套完整详解
一、方法是什么
方法(也叫函数):将完成某个独立功能的多行代码封装成一个代码单元。
方法属于类的成员,因此也称为成员方法。
方法核心作用
-
代码复用:重复逻辑只写一次,多处调用
-
结构清晰:拆分复杂业务,解耦、易读、易维护
-
统一维护:改一处,所有调用处全部生效
方法只有两步:方法定义(声明) + 方法调用(执行)。
二、方法标准声明语法
标准格式
修饰符 返回值类型 方法名(参数列表){
// 方法体:具体业务逻辑代码
return 返回值; // 有返回值必须写
}
各部分详细说明
-
修饰符:控制方法访问权限,常用
public / private / static -
返回值类型
-
有结果返回:写具体数据类型
int / double / boolean / String等 -
无结果返回:固定写 void,不需要 return 数据(可单独写
return;提前结束方法)
-
-
方法名:小驼峰命名、见名知意,如
getSum、sayHello、printInfo -
参数列表:接收外部传入数据,多个参数逗号分隔;无参数空括号
() -
方法体:实现功能的核心代码
-
return:结束当前方法,并将结果返回给调用处
静态方法说明(初学者重点)
main 方法是静态方法,静态方法中只能直接调用静态方法。
所以初学阶段自定义方法统一加上 static,避免报错。
三、方法四大分类(无/有参、无/有返回值)
1. 无参无返回值(void)
固定功能、无需传入数据、无需返回结果,多用于打印、执行固定逻辑。
// 无参无返回值方法
public static void sayHello(){
System.out.println("你好,这是自定义方法");
}
// 调用
public static void main(String[] args) {
sayHello();
}
2. 无参有返回值
无需传参,方法内部计算后返回结果。
3. 有参无返回值
接收外部数据,根据参数执行逻辑,不返回结果。
// 根据次数打印内容
public static void printMsg(int count, String msg){
for (int i = 0; i < count; i++) {
System.out.println(msg);
}
}
// 调用
printMsg(3, "Java 方法学习");
4. 有参有返回值(最常用)
接收参数参与计算,最终返回运算结果。
// 两数求和
public static int getSum(int a, int b){
return a + b;
}
// 调用接收结果
int res = getSum(10, 20);
System.out.println(res);
四、方法核心硬性规则(必记)
-
方法不能嵌套定义:方法只能写在类中、方法外,main 里面不能定义方法
-
定义不执行,调用才执行:方法声明只是封装逻辑,不会自动运行
-
void 方法不能返回数据:只能写
return;提前终止方法 -
有返回值方法必须全部分支 return:所有执行路径必须有返回值,否则编译报错
-
实参、形参必须匹配:数量、类型、顺序必须一致
-
参数作用域仅限方法内部:方法执行结束,参数变量销毁
五、形参 & 实参详解
概念区分
-
形参:方法定义处括号内的变量,只是占位符
-
实参:方法调用时传入的真实数据
对照示例
// 形参:a、b
public static int getSum(int a, int b){
return a + b;
}
// 实参:10、20
getSum(10, 20);
六、返回值深度讲解 & 常见报错
return 两大作用
-
返回数据给调用处
-
立刻终止当前方法,后续代码不再执行
经典报错:部分分支无返回值
错误写法(编译报错):
public static boolean demo(int a){
if (a > 0){
return true;
}
// if不成立时,无return,报错
}
正确写法(二选一)
// 方式1:补全 else
public static boolean demo(int a){
if (a > 0) {
return true;
} else {
return false;
}
}
// 方式2:末尾兜底 return(推荐简洁)
public static boolean demo(int a){
if (a > 0) {
return true;
}
return false;
}
返回值三种使用方式
-
变量接收(推荐):
boolean res = demo(10); -
直接打印:
System.out.println(demo(10)); -
直接丢弃(不推荐):
demo(10);
七、实战案例:判断数字能否同时被 2、3、5 整除
需求:
-
接收一个数字参数
-
判断是否能同时被 2、3、5 整除(能被30整除)
-
不满足时打印具体缺失条件
-
满足返回 true,不满足返回 false
完整可运行代码
import java.util.Scanner;
public class MethodTest {
// 判断数字是否同时被2、3、5整除
public static boolean checkNum(int num) {
// 全部满足直接返回true
if (num % 2 == 0 && num % 3 == 0 && num % 5 == 0) {
return true;
} else {
// 逐个判断不满足条件并提示
if (num % 2 != 0) {
System.out.println("不能被2整除");
}
if (num % 3 != 0) {
System.out.println("不能被3整除");
}
if (num % 5 != 0) {
System.out.println("不能被5整除");
}
return false;
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入一个数字:");
int num = sc.nextInt();
boolean result = checkNum(num);
System.out.println(num + " 能否同时被2、3、5整除:" + result);
}
}
八、方法参数传递机制(Java 纯值传递)
Java 只有一种传参方式:值传递。
1. 基本数据类型传参
传递的是 数值副本,方法内修改形参,不会影响外部实参。
public static void change(int x){
x = 100;
System.out.println("方法内x:" + x);
}
public static void main(String[] args) {
int a = 10;
change(a);
System.out.println("方法外a:" + a); // 仍然是10
}
2. 引用类型传参(对象、数组)
传递的是 地址值副本:
-
形参和实参指向同一个堆内存对象
-
修改对象内部数据,外部可见
-
方法内给形参重新 new 对象,不会影响外部实参
九、全篇核心口诀(速记)
-
方法封装重复代码,定义不执行调用才跑
-
void 无返回有返回必写 return,所有分支不能少
-
形参占位实参真值,顺序类型数量要一致
-
Java 传参全是值传,基本改不动、对象内容可改

浙公网安备 33010602011771号