本文目录导读:

我来全面介绍Java方法的基础定义和案例,从最基础到实际应用。
方法定义的基本语法
方法定义格式
[访问修饰符] [修饰符] 返回值类型 方法名(参数列表) {
// 方法体
// return 返回值;
}
最基础的方法示例
public class MethodBasicDemo {
// 1. 无参数无返回值
public void sayHello() {
System.out.println("Hello, Java!");
}
// 2. 有参数无返回值
public void greet(String name) {
System.out.println("Hello, " + name);
}
// 3. 无参数有返回值
public int getNumber() {
return 100;
}
// 4. 有参数有返回值
public int add(int a, int b) {
return a + b;
}
}
完整的基础方法案例
案例1:简单计算器
public class CalculatorDemo {
// 加法
public int add(int a, int b) {
return a + b;
}
// 减法
public int subtract(int a, int b) {
return a - b;
}
// 乘法
public int multiply(int a, int b) {
return a * b;
}
// 除法
public double divide(int a, int b) {
if (b == 0) {
System.out.println("除数不能为0!");
return 0;
}
return (double) a / b;
}
// 测试方法
public static void main(String[] args) {
CalculatorDemo calc = new CalculatorDemo();
// 调用方法
int sum = calc.add(10, 20);
System.out.println("10 + 20 = " + sum);
double result = calc.divide(10, 3);
System.out.println("10 / 3 = " + result);
}
}
输出结果:
10 + 20 = 30
10 / 3 = 3.3333333333333335
案例2:学生信息管理
public class StudentManager {
// 定义学生信息
private String name;
private int age;
private String grade;
// 1. 设置学生信息方法
public void setStudentInfo(String name, int age, String grade) {
this.name = name;
this.age = age;
this.grade = grade;
}
// 2. 获取学生姓名
public String getName() {
return name;
}
// 3. 获取学生年龄
public int getAge() {
return age;
}
// 4. 判断学生是否成年
public boolean isAdult() {
return age >= 18;
}
// 5. 打印学生信息
public void printStudentInfo() {
System.out.println("=== 学生信息 ===");
System.out.println("姓名: " + name);
System.out.println("年龄: " + age);
System.out.println("年级: " + grade);
System.out.println("是否成年: " + (isAdult() ? "是" : "否"));
}
}
// 测试类
class TestStudent {
public static void main(String[] args) {
StudentManager student = new StudentManager();
// 调用方法设置信息
student.setStudentInfo("张三", 20, "大二");
// 调用方法获取信息
String name = student.getName();
System.out.println("学生姓名: " + name);
// 调用方法打印全部信息
student.printStudentInfo();
}
}
方法重载示例
public class MethodOverloadDemo {
// 1. 加法方法重载
public int add(int a, int b) {
System.out.println("两个整数相加");
return a + b;
}
public double add(double a, double b) {
System.out.println("两个小数相加");
return a + b;
}
public int add(int a, int b, int c) {
System.out.println("三个整数相加");
return a + b + c;
}
// 2. 打印方法重载
public void print(String str) {
System.out.println("字符串: " + str);
}
public void print(int num) {
System.out.println("数字: " + num);
}
public void print(String str, int num) {
System.out.println("字符串: " + str + ", 数字: " + num);
}
public static void main(String[] args) {
MethodOverloadDemo demo = new MethodOverloadDemo();
// 测试方法重载
System.out.println("=== 方法重载测试 ===");
System.out.println(demo.add(1, 2)); // 调用int版本
System.out.println(demo.add(1.5, 2.5)); // 调用double版本
System.out.println(demo.add(1, 2, 3)); // 调用三个参数版本
demo.print("Hello"); // 调用String版本
demo.print(100); // 调用int版本
demo.print("Hello", 100); // 调用两个参数版本
}
}
静态方法示例
public class StaticMethodDemo {
// 1. 静态变量
private static int count = 0;
// 2. 静态方法
public static void showMessage() {
System.out.println("这是一个静态方法");
}
// 3. 静态方法返回计数器
public static int getCount() {
return count;
}
// 4. 静态方法增加计数
public static void incrementCount() {
count++;
}
// 5. 静态工具方法 - 计算数组平均值
public static double calculateAverage(int[] numbers) {
if (numbers == null || numbers.length == 0) {
return 0;
}
int sum = 0;
for (int num : numbers) {
sum += num;
}
return (double) sum / numbers.length;
}
}
// 测试类
class TestStaticMethod {
public static void main(String[] args) {
// 直接通过类名调用静态方法
StaticMethodDemo.showMessage();
// 多次调用增加计数
StaticMethodDemo.incrementCount();
StaticMethodDemo.incrementCount();
StaticMethodDemo.incrementCount();
System.out.println("当前计数: " + StaticMethodDemo.getCount());
// 调用工具方法
int[] scores = {85, 90, 78, 92, 88};
double avg = StaticMethodDemo.calculateAverage(scores);
System.out.println("平均分: " + avg);
}
}
递归方法示例
public class RecursionDemo {
// 1. 计算阶乘
public int factorial(int n) {
// 递归终止条件
if (n <= 1) {
return 1;
}
// 递归调用
return n * factorial(n - 1);
}
// 2. 斐波那契数列
public int fibonacci(int n) {
// 终止条件
if (n <= 1) {
return n;
}
// 递归调用
return fibonacci(n - 1) + fibonacci(n - 2);
}
// 3. 打印倒序数字
public void printReverse(int n) {
if (n > 0) {
System.out.print(n + " ");
printReverse(n - 1); // 递归调用
}
}
public static void main(String[] args) {
RecursionDemo recursion = new RecursionDemo();
System.out.println("=== 递归方法测试 ===");
// 测试阶乘
int num = 5;
System.out.println(num + "的阶乘: " + recursion.factorial(num));
// 测试斐波那契
System.out.println("斐波那契第6项: " + recursion.fibonacci(6));
// 测试倒序打印
System.out.print("倒序打印5到1: ");
recursion.printReverse(5);
System.out.println();
}
}
实际应用案例:银行账户管理系统
public class BankAccount {
// 账户属性
private String accountNumber;
private String accountName;
private double balance;
// 构造函数
public BankAccount(String accountNumber, String accountName) {
this.accountNumber = accountNumber;
this.accountName = accountName;
this.balance = 0.0;
}
// 1. 存款方法
public void deposit(double amount) {
if (amount > 0) {
balance += amount;
System.out.println("存款成功:¥" + amount);
} else {
System.out.println("存款金额必须大于0");
}
}
// 2. 取款方法
public boolean withdraw(double amount) {
if (amount <= 0) {
System.out.println("取款金额必须大于0");
return false;
}
if (amount > balance) {
System.out.println("余额不足!当前余额: ¥" + balance);
return false;
}
balance -= amount;
System.out.println("取款成功:¥" + amount);
return true;
}
// 3. 查询余额
public double getBalance() {
return balance;
}
// 4. 转账方法
public boolean transfer(BankAccount target, double amount) {
// 先取款
if (this.withdraw(amount)) {
// 再存款到目标账户
target.deposit(amount);
System.out.println("转账成功:¥" + amount +
" 从 " + this.accountName +
" 到 " + target.accountName);
return true;
}
return false;
}
// 5. 显示账户信息
public void displayInfo() {
System.out.println("=== 账户信息 ===");
System.out.println("账号: " + accountNumber);
System.out.println("户名: " + accountName);
System.out.println("余额: ¥" + balance);
}
// 测试方法
public static void main(String[] args) {
// 创建两个账户
BankAccount account1 = new BankAccount("1001", "张三");
BankAccount account2 = new BankAccount("1002", "李四");
// 初始存款
account1.deposit(1000);
account2.deposit(500);
System.out.println("\n=== 初始状态 ===");
account1.displayInfo();
account2.displayInfo();
// 转账操作
System.out.println("\n=== 转账操作 ===");
account1.transfer(account2, 300);
System.out.println("\n=== 转账后状态 ===");
account1.displayInfo();
account2.displayInfo();
// 测试取款
System.out.println("\n=== 取款测试 ===");
account1.withdraw(2000); // 余额不足
account1.withdraw(500); // 成功取款
account1.displayInfo();
}
}
注意事项和最佳实践
-
方法命名:使用驼峰命名法,动词开头
// 好的命名 public void getUserInfo() {} public int calculateTotal() {} // 避免的命名 public void a() {} public int abc() {} -
单一职责:一个方法只做一件事
// 好的做法 public void validateUser() {} public void saveUser() {} // 避免的做法 public void validateAndSaveUser() {} -
参数数量:尽量不超过3-4个参数
// 参数过多时使用对象 public void createUser(String name, int age, String email, String phone) {} // 改进为 public void createUser(User user) {} -
返回值设计:
- 明确返回值类型
- 考虑null值处理
- 使用Optional处理可能为null的情况
这就是Java方法的基础定义和案例,从简单到复杂,覆盖了日常开发中最常用的场景。