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 多线程并发执行方法
Java方法栈日志的艺术:从错误定位到性能优化的深度指南
https://www.shuihudhg.cn/133725.html
PHP 获取本机端口的全面指南:实践与技巧
https://www.shuihudhg.cn/133724.html
Python内置函数:从核心原理到高级应用,精通Python编程的基石
https://www.shuihudhg.cn/133723.html
Java Stream转数组:从基础到高级,掌握高性能数据转换的艺术
https://www.shuihudhg.cn/133722.html
深入解析:基于Java数组构建简易ATM机系统,从原理到代码实践
https://www.shuihudhg.cn/133721.html
热门文章
Java中数组赋值的全面指南
https://www.shuihudhg.cn/207.html
JavaScript 与 Java:二者有何异同?
https://www.shuihudhg.cn/6764.html
判断 Java 字符串中是否包含特定子字符串
https://www.shuihudhg.cn/3551.html
Java 字符串的切割:分而治之
https://www.shuihudhg.cn/6220.html
Java 输入代码:全面指南
https://www.shuihudhg.cn/1064.html