Java 自定义函数是指开发者根据特定需求自行编写的函数(也称为方法)。这些函数可以封装特定的功能逻辑,提高代码的复用性和可维护性。自定义函数是面向对象编程的核心组成部分。
访问修饰符 static 函数返回值类型 函数名(参数列表) {
函数体
return 返回值;//当函数返回值类型为void(表示返回值为空)时可以不写返回
}
访问修饰符:控制函数的可见性
static关键字:表示该函数属于类而非实例
返回值类型:指定函数返回的数据类型
函数名:标识符,编码规范:第一个字母小写,遵循驼峰命名法,应具有描述性
参数列表:可接受零个或多个参数,格式为"数据类型 参数名",多个参数用英文逗号隔开
return
进行返回void
类型),无需显式返回(默认隐含 return;
)public class TestHanShu {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个整数: ");
int number = scanner.nextInt();
int yu = quYu(number, 2);//调用quYu函数,并用变量yu接受函数返回值
if (yu == 1) {//通过所输入的数字number除以2的余数是否等于1判断数字的奇偶
System.out.println("您输入的" + number + "是个奇数");//等于1则为奇数
} else {
System.out.println("您输入的" + number + "是个偶数");//不等于1则为偶数
}
}
//自定义函数quYu,用来取余;int表示函数返回值为int类型
public static int quYu(int beiChuShu, int chuShu) {//定义两个参数,多个参数用英文逗号隔开
int a = beiChuShu % chuShu;
return a;//将取余的结果作为函数的返回值
}
}
Java 允许在同一类中定义多个同名函数,只要它们的参数列表不同(参数类型、数量或顺序不同)。这称为函数重载。
public class Calculator {
// 两个int参数的加法
// 该方法接收两个整数参数a和b,返回它们的和
// 示例:add(3, 5) 返回 8
public int add(int a, int b) {
return a + b;
}
// 两个double参数的加法
// 该方法接收两个双精度浮点数参数a和b,返回它们的和
// 示例:add(2.5, 3.7) 返回 6.2
public double add(double a, double b) {
return a + b;
}
// 三个int参数的加法
// 该方法接收三个整数参数a、b和c,返回它们的总和
// 示例:add(1, 2, 3) 返回 6
public int add(int a, int b, int c) {
return a + b + c;
}
}
调用上面定义的三个方法:
public class Main {
public static void main(String[] args) {
Calculator calc = new Calculator();
// 调用两个int参数的add方法
int sum1 = calc.add(10, 20); // 结果为30
System.out.println("10 + 20 = " + sum1);
// 调用两个double参数的add方法
double sum2 = calc.add(3.14, 2.71); // 结果为5.85
System.out.println("3.14 + 2.71 = " + sum2);
// 调用三个int参数的add方法
int sum3 = calc.add(5, 10, 15); // 结果为30
System.out.println("5 + 10 + 15 = " + sum3);
}
}
在实际应用中,方法重载可以:
例如在财务系统中,可能需要处理整数金额和浮点数金额的计算,这种重载方法就非常有用。
Java 支持可变参数(varargs),这是一种语法特性,允许函数接受不定数量的同类型参数。可变参数通过三个点(…)表示,实际上是编译器提供的一个语法糖。
可变参数方法声明格式:
返回类型 方法名(参数类型... 参数名)
其中:
public class VarargsExample {
// 计算任意数量整数的和
public static int sum(int... numbers) {
int total = 0;
for (int num : numbers) { // 使用增强for循环遍历可变参数
total += num;
}
return total;
}
// 另一个示例:连接任意数量的字符串
public static String concatenate(String delimiter, String... strings) {
StringBuilder sb = new StringBuilder();
for (String s : strings) {
if (sb.length() > 0) {
sb.append(delimiter);
}
sb.append(s);
}
return sb.toString();
}
}
可变参数方法可以这样调用:
// 计算和
int result1 = sum(1, 2); // 传递2个参数
int result2 = sum(1, 2, 3, 4); // 传递4个参数
int result3 = sum(); // 不传递参数
// 连接字符串
String joined1 = concatenate(",", "A", "B", "C"); // 输出 "A,B,C"
String joined2 = concatenate("-", "Hello", "World"); // 输出 "Hello-World"
可变参数在方法内部实际上是数组,所以也可以直接传递数组:
int[] nums = {1, 2, 3};
int result = sum(nums); // 等价于 sum(1, 2, 3)
当可变参数方法同时有重载版本时,编译器会优先选择固定参数的方法:
void method(String s) {}
void method(String... ss) {}
method("hello"); // 会调用第一个方法
可变参数方法在性能上会稍微差于固定参数方法,因为它需要创建数组对象。
自定义函数是Java编程的基础技能,合理设计和运用函数可以显著提高代码质量和开发效率。Java 自定义函数