本文目录导读:

我来全面介绍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方法的基础定义和案例,从简单到复杂,覆盖了日常开发中最常用的场景。
版权声明:足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播