几种参数传递的代码
掌握参数的两种传递方式的(值传递和引用传递)
基本数据类型作为参数
类的对象作为参数
数组作为参数
String类作为参数
在编程中,参数传递是将值或对象从一个函数或方法传递到另一个函数或方法的过程。根据传递方式的不同,参数可以分为两种主要类型:值传递和引用传递。下面我们将详细探讨这两种传递方式,并通过示例代码来理解它们。
1. **值传递**:在值传递中,函数或方法接收的是原始变量的一个副本。任何对副本的修改都不会影响原始变量的值。例如,Java中的基本数据类型(如int、float等)就是通过值传递的。在`Test`类中的`compute()`方法就是一个例子:
```java
public static void compute(int one, float two) {
one++;
two++;
}
```
在这个例子中,`main()`方法中定义的`one`和`two`的值不会因为调用`compute()`而改变,因为传递给`compute()`的是这两个变量的副本。
2. **引用传递**:与值传递不同,引用传递是将变量的内存地址传递给函数,这意味着函数可以改变原始变量的值。在Java中,对象是通过引用传递的。例如,在`Student`类和`Test`类的`updateAge()`方法中:
```java
private static void updateAge(Student stu) {
if (stu.age < 18) {
stu.age = 18;
System.out.println("成功修改年龄");
}
}
```
在这个例子中,`stu`对象的`age`属性在调用`updateAge()`后会改变,因为传递的是对象引用,而不是对象的副本。
3. **特殊处理:String类**:虽然Java中的`String`类对象也是通过引用传递,但需要注意的是,`String`对象是不可变的,意味着一旦创建就不能修改。例如,在`Test`类的`updateString()`方法中:
```java
private static void updateString(String str) {
str = str + " is very good";
}
```
这里看似修改了`str`,但实际上创建了一个新的`String`对象,原`str`引用没有变化,所以原始的`str`值并未改变。
4. **数组作为参数**:在Java中,数组也是通过引用传递的,这意味着当数组作为参数传递给函数时,函数可以改变数组的元素。例如,`SortClass`类的`ebullitionSort()`方法:
```java
public void ebullitionSort(int[] arr) {
// 冒泡排序代码
}
```
这个方法可以改变传入的数组`arr`的元素顺序,因为实际操作的是数组的引用,而非数组的副本。
总结来说,Java中的参数传递主要有值传递(基本数据类型)和引用传递(对象和数组)。理解这些概念对于编写和调试程序至关重要,因为它直接影响到函数或方法对原始数据的修改能力。在实际编程中,根据需求选择合适的传递方式,可以有效控制和管理程序的行为。