亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> java

Java 方法详解:创建、调用、重载与抽象设计

Java 方法是一组语句的集合,用于执行特定操作。例如调用 System.out.println() 时,系统实际执行了多条语句在控制台输出信息。本文将系统讲解如何创建带/不带返回值的方法、如何调用带/不带参数的方法,以及方法抽象在程序设计中的应用。

方法定义语法

修饰符 返回值类型 方法名(参数列表) {
    // 方法体
}

组成部分:

示例:求两数最小值

/** 返回两个整数中的较小值 */
public static int minFunction(int n1, int n2) {
    int min;
    if (n1 > n2) min = n2;
    else min = n1;
    return min;
}

方法调用机制

调用方法时,程序控制权转移到被调用方法。方法在以下两种情况返回控制权:

  1. 执行 return 语句
  2. 到达方法结束的右大括号 }

void 方法 调用是一条语句,以分号结尾:methodRankPoints(255.7);
有返回值方法 调用可用于表达式:int result = sum(6, 9);

完整调用示例

public class ExampleMinNumber {
    public static void main(String[] args) {
        int a = 11, b = 6;
        int c = minFunction(a, b);
        System.out.println("最小值 = " + c);
    }
    
    public static int minFunction(int n1, int n2) {
        int min = (n1 > n2) ? n2 : n1;
        return min;
    }
}

输出: 最小值 = 6

void 关键字

void 表示方法无返回值。调用 void 方法必须作为语句使用。

public static void methodRankPoints(double points) {
    if (points >= 202.5) System.out.println("Rank:A1");
    else if (points >= 122.4) System.out.println("Rank:A2");
    else System.out.println("Rank:A3");
}

参数传递:值传递

Java 采用值传递机制。基本类型传递的是值的副本;引用类型传递的是引用的副本(即地址副本)。方法内修改参数不会影响实参原值(基本类型)或引用指向的对象内容可变但引用本身不可变。

值传递演示:交换失败

public static void swapFunction(int a, int b) {
    int c = a; a = b; b = c; // 仅改变局部副本
}

调用后原变量 a、b 值不变。

方法重载

同一类中定义多个同名但参数列表不同(类型、数量、顺序)的方法。返回类型可以不同,但仅靠返回类型不同无法构成重载。

重载示例:支持 int 和 double

public static int minFunction(int n1, int n2) { ... }
public static double minFunction(double n1, double n2) { ... }

调用时编译器根据实参类型自动匹配对应重载版本。

命令行参数

main(String[] args) 的 args 数组存储命令行传入的参数(以空格分隔)。

public class CommandLine {
    public static void main(String[] args) {
        for (int i = 0; i < args.length; i++) {
            System.out.println("args[" + i + "]: " + args[i]);
        }
    }
}

运行 java CommandLine this is a test 100 将输出各参数及索引。

this 关键字

this 代表当前对象的引用,仅可在实例方法/构造器中使用。主要用途:

  1. 区分同名实例变量与局部变量:this.age = age;
  2. 构造器链调用:this(20); 调用本类其他构造器,必须置于首行
  3. 调用本类其他方法:this.greet();

this 综合示例

public class This_Example {
    int num = 10; // 实例变量
    
    This_Example() { System.out.println("无参构造器"); }
    
    This_Example(int num) {
        this(); // 调用无参构造器
        this.num = num; // 区分实例变量和参数
    }
    
    public void print() {
        int num = 20; // 局部变量
        System.out.println("局部变量: " + num);
        System.out.println("实例变量: " + this.num);
        this.greet();
    }
    
    public void greet() { System.out.println("Hello"); }
    
    public static void main(String[] args) {
        This_Example obj1 = new This_Example();
        obj1.print();
        This_Example obj2 = new This_Example(30);
        obj2.print();
    }
}

可变参数

JDK 1.5 引入,语法:typeName... parameterName。一个方法只能有一个可变参数,且必须是最后一个参数。内部作为数组处理。

public static void printMax(double... numbers) {
    if (numbers.length == 0) return;
    double max = numbers[0];
    for (double n : numbers) if (n > max) max = n;
    System.out.println("最大值: " + max);
}

// 调用方式多样
printMax(1, 2, 3);
printMax(new double[]{4, 5, 6});

finalize() 方法

对象被垃圾回收前由 JVM 调用,用于资源清理(如关闭文件)。声明形式:

protected void finalize() throws Throwable {
    // 清理代码
}

注意:finalize() 调用时机不确定,甚至可能不被调用(程序退出前未触发 GC)。不推荐依赖它管理关键资源,应使用 try-with-resources 或显式 close()。

java

  1. 精通 Java 运算符:类型、语法与实战示例
  2. Java 抽象类与抽象方法完全指南
  3. Java 注解类型完全指南:预定义、自定义与元注解
  4. Java String.charAt() 详解:语法、返回类型、异常与实战示例
  5. 精通 Java String.endsWith():检查字符串后缀(示例)
  6. Java 字符串替换大全:replace()、replaceAll() 与 replaceFirst() 详解
  7. Java String toLowerCase() 与 toUpperCase():区域感知的大小写转换
  8. Java 方法重写详解:规则、多态调用与 super 协作
  9. Java 9 集合工厂方法:一行代码创建不可变 List/Set/Map
  10. Java 9 接口私有方法:增强封装与代码复用
  11. 精通 Java 8 方法引用::: 语法与四大引用类型
  12. Java 8 默认方法:接口演进与向后兼容的关键机制