Java 方法参数输出137


在 Java 中,方法参数用于向方法传递数据。这些参数可以是基本数据类型(如 int、double、char),也可以是对象引用。当方法被调用时,这些参数会被复制到方法的局部变量中,从而确保调用方传递的数据不会被更改。

参数传递机制

Java 采用按值传递的参数传递机制。这意味着当一个基本数据类型参数被传递给一个方法时,该参数的值会被复制到方法的局部变量中。而当一个对象引用参数被传递给一个方法时,该引用会被复制到方法的局部变量中,但是该引用指向的对象不会被复制。

例如,考虑以下代码:```java
public class ParameterPassingDemo {
public static void main(String[] args) {
int x = 10;
changePrimitive(x); // 按值传递
(x); // 输出:10
String s = "Hello";
changeReference(s); // 按引用传递
(s); // 输出:World
}
public static void changePrimitive(int y) {
y = 20;
}
public static void changeReference(String t) {
t = "World";
}
}
```

在这个示例中,changePrimitive 方法按值接收参数 y。当方法被调用时,x 的值(10)会被复制到 y 中。在方法内部,y 的值被修改为 20,但不会影响方法外部的 x 变量。

另一方面,changeReference 方法按引用接收参数 t。当方法被调用时,s 的引用会被复制到 t 中。在方法内部,t 的引用被修改为指向一个新的字符串对象 "World"。由于 s 和 t 都引用了同一个对象,因此方法外部的 s 也被修改为指向 "World"。

可变参数

在 Java 中,可以使用可变参数来传递数量可变的参数。可变参数必须是最后一个参数,并且只能有一个。可变参数被表示为一个基本数据类型数组或对象数组。

例如,以下代码声明了一个名为 sum 的方法,它接受一个可变参数数组 numbers:```java
public static int sum(int... numbers) {
int total = 0;
for (int number : numbers) {
total += number;
}
return total;
}
```

可以使用以下代码调用 sum 方法:```java
int result = sum(1, 2, 3, 4, 5); // result = 15
```

在调用时,可变参数会自动转换为一个数组。在上述示例中,numbers 参数将转换为一个包含元素 1、2、3、4、5 的 int 数组。

参数注解

Java 提供了几个参数注解,用于为方法参数添加元数据。这些注解可以用来验证参数、文档化参数以及指定参数的默认值。

@NotNull 注解


@NotNull 注解用于指示一个参数不能为 null。如果传递了 null 值,则会抛出 NullPointerException。

例如,以下代码声明了一个名为 validate 的方法,它使用 @NotNull 注解来验证参数 name:```java
public static void validate(@NotNull String name) {
if (name == null) {
throw new NullPointerException("Parameter 'name' cannot be null");
}
}
```

@DefaultValue 注解


@DefaultValue 注解用于指定参数的默认值。如果在调用方法时未提供该参数,则使用默认值。

例如,以下代码声明了一个名为 greet 的方法,它使用 @DefaultValue 注解为参数 message 指定默认值 "Hello":```java
public static void greet(@DefaultValue("Hello") String message) {
(message);
}
```

可以使用以下代码调用 greet 方法:```java
greet(); // 输出:Hello
greet("Good morning"); // 输出:Good morning
```

@Documented 注解


@Documented 注解用于指示一个参数注解应该被包含在 JavaDoc 中。这有助于为方法参数提供更好的文档。

例如,以下代码声明了一个名为 @MyAnnotation 的自定义参数注解,它使用 @Documented 注解使其出现在 JavaDoc 中:```java
@Documented
@Retention()
public @interface MyAnnotation {
String value();
}
```

2024-11-15


上一篇:Java字符数组排序

下一篇:Java 多线程并发执行方法