本文目录导读:

我来为你详细介绍Java成员方法的编写案例,从基础到进阶。
基础成员方法案例
学生类示例
public class Student {
// 成员变量
private String name;
private int age;
private double score;
// 构造方法
public Student(String name, int age) {
this.name = name;
this.age = age;
}
// 成员方法 - Getter和Setter
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
if (age > 0 && age < 150) {
this.age = age;
} else {
System.out.println("年龄不合法");
}
}
// 成员方法 - 业务逻辑方法
public void study() {
System.out.println(name + "正在学习");
}
// 带参数的方法
public void study(String subject) {
System.out.println(name + "正在学习" + subject);
}
// 带返回值的方法
public double getGradeLevel() {
if (score >= 90) return 'A';
else if (score >= 80) return 'B';
else if (score >= 70) return 'C';
else if (score >= 60) return 'D';
else return 'F';
}
// 显示学生信息的方法
public void displayInfo() {
System.out.println("姓名:" + name);
System.out.println("年龄:" + age);
System.out.println("成绩:" + score);
System.out.println("等级:" + getGradeLevel());
}
}
方法重载案例
public class Calculator {
// 方法重载:计算两个整数之和
public int add(int a, int b) {
return a + b;
}
// 方法重载:计算三个整数之和
public int add(int a, int b, int c) {
return a + b + c;
}
// 方法重载:计算两个浮点数之和
public double add(double a, double b) {
return a + b;
}
// 方法重载:字符串拼接
public String add(String a, String b) {
return a + b;
}
// 方法重载:数组求和
public int add(int[] numbers) {
int sum = 0;
for (int num : numbers) {
sum += num;
}
return sum;
}
}
// 测试类
public class CalculatorTest {
public static void main(String[] args) {
Calculator calc = new Calculator();
System.out.println(calc.add(5, 3)); // 输出:8
System.out.println(calc.add(5, 3, 2)); // 输出:10
System.out.println(calc.add(3.5, 2.5)); // 输出:6.0
System.out.println(calc.add("Hello", " World")); // 输出:Hello World
System.out.println(calc.add(new int[]{1,2,3,4,5})); // 输出:15
}
}
方法递归案例
public class RecursionExample {
// 递归方法:计算阶乘
public int factorial(int n) {
// 基线条件
if (n <= 1) {
return 1;
}
// 递归调用
return n * factorial(n - 1);
}
// 递归方法:斐波那契数列
public int fibonacci(int n) {
if (n <= 1) {
return n;
}
return fibonacci(n - 1) + fibonacci(n - 2);
}
// 递归方法:数组求和
public int sumArray(int[] arr, int index) {
if (index >= arr.length) {
return 0;
}
return arr[index] + sumArray(arr, index + 1);
}
// 测试递归
public static void main(String[] args) {
RecursionExample rec = new RecursionExample();
System.out.println("5! = " + rec.factorial(5)); // 输出:120
System.out.println("第8个斐波那契数:" + rec.fibonacci(8)); // 输出:21
int[] arr = {1, 2, 3, 4, 5};
System.out.println("数组和为:" + rec.sumArray(arr, 0)); // 输出:15
}
}
静态方法案例
public class MathUtils {
// 静态变量
public static final double PI = 3.14159;
private static int instanceCount = 0;
// 构造方法
public MathUtils() {
instanceCount++;
}
// 静态方法:计算圆的面积
public static double calculateCircleArea(double radius) {
return PI * radius * radius;
}
// 静态方法:获取实例数量
public static int getInstanceCount() {
return instanceCount;
}
// 静态方法:判断是否为质数
public static boolean isPrime(int number) {
if (number <= 1) return false;
for (int i = 2; i <= Math.sqrt(number); i++) {
if (number % i == 0) return false;
}
return true;
}
// 静态方法:最大值
public static int max(int a, int b) {
return a > b ? a : b;
}
}
// 测试静态方法
public class MathUtilsTest {
public static void main(String[] args) {
// 无需创建实例,直接通过类名调用静态方法
double area = MathUtils.calculateCircleArea(5);
System.out.println("半径为5的圆面积:" + area);
System.out.println("17是质数吗?" + MathUtils.isPrime(17));
// 创建实例测试计数器
new MathUtils();
new MathUtils();
System.out.println("实例数量:" + MathUtils.getInstanceCount()); // 输出:2
}
}
综合案例:银行账户系统
public class BankAccount {
// 成员变量
private String accountNumber;
private String accountName;
private double balance;
private static double interestRate = 0.03; // 静态变量:利率
// 构造方法
public BankAccount(String accountNumber, String accountName) {
this.accountNumber = accountNumber;
this.accountName = accountName;
this.balance = 0;
}
// 带余额的构造方法
public BankAccount(String accountNumber, String accountName, double initialBalance) {
this(accountNumber, accountName);
if (initialBalance > 0) {
this.balance = initialBalance;
}
}
// 存款方法
public void deposit(double amount) {
if (amount > 0) {
balance += amount;
System.out.println("存款成功,当前余额:" + balance);
} else {
System.out.println("存款金额必须大于0");
}
}
// 取款方法
public boolean withdraw(double amount) {
if (amount > 0 && amount <= balance) {
balance -= amount;
System.out.println("取款成功,当前余额:" + balance);
return true;
} else if (amount > balance) {
System.out.println("余额不足");
return false;
} else {
System.out.println("取款金额必须大于0");
return false;
}
}
// 转账方法
public boolean transfer(BankAccount target, double amount) {
if (this.withdraw(amount)) {
target.deposit(amount);
System.out.println("转账成功");
return true;
}
System.out.println("转账失败");
return false;
}
// 计算利息方法
public double calculateInterest() {
return balance * interestRate;
}
// 静态方法:修改利率
public static void setInterestRate(double rate) {
if (rate >= 0 && rate <= 1) {
interestRate = rate;
} else {
System.out.println("利率必须在0-1之间");
}
}
// 显示账户信息方法
public void displayAccountInfo() {
System.out.println("========== 账户信息 ==========");
System.out.println("账号:" + accountNumber);
System.out.println("户名:" + accountName);
System.out.println("余额:" + balance);
System.out.println("年利率:" + (interestRate * 100) + "%");
System.out.println("预期年利息:" + calculateInterest());
System.out.println("==============================");
}
// Getter方法
public String getAccountNumber() {
return accountNumber;
}
public double getBalance() {
return balance;
}
}
// 测试类
public class BankSystem {
public static void main(String[] args) {
// 创建账户
BankAccount account1 = new BankAccount("1001", "张三", 10000);
BankAccount account2 = new BankAccount("1002", "李四");
// 显示初始信息
account1.displayAccountInfo();
account2.displayAccountInfo();
// 进行交易
account1.deposit(5000);
account1.withdraw(2000);
// 转账
account1.transfer(account2, 3000);
// 修改利率
BankAccount.setInterestRate(0.035);
// 显示更新后的信息
account1.displayAccountInfo();
account2.displayAccountInfo();
// 计算总资产
double totalAssets = account1.getBalance() + account2.getBalance();
System.out.println("两个账户总余额:" + totalAssets);
}
}
方法设计最佳实践
方法命名规范
- 使用动词开头:
getXxx(),setXxx(),calculate(),display() - 语义清晰,见名知意
方法参数设计
// 好的设计:方法参数数量合理
public void createUser(String name, int age) {
// 实现代码
}
// 避免过多的参数,可以使用对象封装
public void createUser(UserInfo userInfo) {
// 实现代码
}
方法返回值设计
// 明确的返回值
public boolean isAdult(int age) {
return age >= 18;
}
// 返回可选值,避免返回null
public Optional<String> findUserName(int userId) {
// 如果找到返回Optional.of(name)
// 如果没找到返回Optional.empty()
}
异常处理
public void divide(int a, int b) {
try {
if (b == 0) {
throw new IllegalArgumentException("除数不能为0");
}
int result = a / b;
System.out.println("结果:" + result);
} catch (IllegalArgumentException e) {
System.out.println("错误:" + e.getMessage());
}
}
这些案例覆盖了Java成员方法的主要使用场景,从基础到进阶,从简单到复杂,建议你按照这些示例动手编写和测试,加深对成员方法的理解。
版权声明:足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播