50. Java 类和对象 - 🌟 参数类型大揭秘

80 阅读4分钟

50. Java 类和对象 - 🌟 参数类型大揭秘

在 Java 中,我们在编写方法或构造函数时,少不了给它们加点“调料”——也就是参数!那么,这些参数都能有哪些类型呢?让我们一起来解锁吧!🚀

Java 的方法或构造函数参数可以是 任何数据类型,主要包括:

  1. 基本类型(Primitive Types):例如 int, double, float, boolean, char 等。
  2. 引用类型(Reference Types):如对象类型、数组类型、枚举类型、接口类型等。

通过参数列表,我们可以让方法或构造函数接收不同类型、不同数量的参数,让代码更加灵活多变!✨


1️⃣ 基本类型作为参数

当方法只需要处理数值运算、逻辑判断等简单操作时,可以直接使用 基本类型 作为参数。来看个例子:

public double computePayment(double loanAmt, double rate, double futureValue, int numPeriods) {
    double interest = rate / 100.0;
    double partial1 = Math.pow((1 + interest), -numPeriods);
    double denominator = (1 - partial1) / interest;
    double answer = (-loanAmt / denominator) - ((futureValue * partial1) / denominator);
    return answer;
}

🌟 代码讲解

  • loanAmtratefutureValue 属于 double 类型。
  • numPeriods 属于 int 类型。
  • 这些都是 基本类型参数,方法通过数值运算返回一个计算结果。

调用时,我们可以这样做:

computePayment(10000.0, 5.0, 0.0, 60);

简洁明了!🎯


2️⃣ 引用类型作为参数

在 Java 中,方法也可以接收 引用类型 参数,比如对象、数组、接口、枚举等等。这让方法拥有更多“操作空间”!

📦 2.1 对象类型参数

如果方法需要操作一个对象,可以直接把对象作为参数传进去。例如:

public void printName(Person p) {
    System.out.println("Name is: " + p.getName());
}

🌟 代码讲解

  • 这里的 Person 是一个自定义的类,拥有 getName() 方法。
  • 调用时可以这样做:
printName(new Person("Alice"));

➡️ 方法直接拿到 Person 对象进行处理!

🔢 2.2 数组类型参数

如果方法需要处理多个相同类型的数据,可以使用 数组 作为参数。例如:

public Polygon polygonFrom(Point[] corners) {
    Polygon polygon = new Polygon();
    for (Point corner : corners) {
        polygon.addPoint(corner.getX(), corner.getY());
    }
    return polygon;
}

🌟 代码讲解

  • Point[] corners 是一个 Point 类型数组,里面存了多个点坐标。
  • 通过遍历 corners 数组,我们初始化了一个 Polygon 对象。

调用方式示例:

Point[] points = {new Point(1, 1), new Point(2, 3), new Point(4, 5)};
Polygon polygon = polygonFrom(points);

➡️ 这让我们可以一次性传入多个点,而不是一个个手动添加。

🎭 2.3 接口 & 枚举类型参数

方法也可以接收 接口枚举 类型的参数,让代码变得更具扩展性!

  • 接口类型
public void processTask(Runnable task) {
    task.run();
}
  • 枚举类型
public void handleStatus(Status s) {
    System.out.println("Current status: " + s);
}

3️⃣ 构造函数中的参数

构造函数也可以接收各种数据类型的参数,用于初始化对象状态。来看个示例:

public class Polygon {
    private List<Point> points;

    // 构造函数接受Point数组
    public Polygon(Point[] corners) {
        points = new ArrayList<>();
        for (Point corner : corners) {
            points.add(corner);
        }
    }
}

🌟 代码讲解

  • Polygon 的构造函数接收一个 Point[] 数组。
  • 每个点被加进了 points 列表中。

调用方式示例:

Point[] corners = {new Point(1, 2), new Point(3, 4)};
Polygon polygon = new Polygon(corners);

➡️ 通过参数灵活初始化对象!


🎯 4️⃣ 参数声明时的注意事项

⚠️ 在声明方法或构造函数的参数时,要注意这几点:

  1. 参数数量:参数的类型和数量共同决定了方法的签名。如果方法名相同但参数列表不同,就是方法重载(Overload)。
  2. 顺序匹配:调用方法时,实参形参 必须一一对应,顺序不能乱!

值传递:Java 中参数传递本质是值传递:

  • 基本类型:传递的是值的拷贝。
  • 引用类型:传递的是引用的拷贝,对象本身可变,但引用不可变。

✅ 5️⃣ 小结时间!

总结一下,我们学到了:

  • Java 的方法或构造函数的参数类型可以是任何数据类型
  • 基本类型参数 用于简单运算,引用类型参数 可传递对象、数组、接口、枚举等。
  • 构造函数 可通过参数初始化对象状态。
  • 参数声明要注意 顺序匹配方法重载可变参数 等细节。

掌握参数类型,让你的 Java 代码更加灵活和强大! 💪