1.返回多个参数值方案
返回多个参数值,使用数组即可
示例:返回两个数的和和差
// 返回多个值,使用数组 public int[] getSumAndSub(int n1, int n2) { int[] resArr = new int[2]; resArr[0] = n1 + n2; resArr[1] = n1 - n2; return resArr; }
调用方法:
int[] resArr = person.getSumAndSub(30,10); for (int i : resArr) { System.out.println(i); // 40 // 20 }
2.方法的参数传递坑🕳
非引用类型形参的任何变化不会影响实参,主要是因为所在的栈空间不同
传递引用类型的数据形参会影响实参,因为会将引用类型的数据的地址传入新的栈空间中,也就是实参和形参同属一个对象
3.Java对对象采用的是引用调用?
很多程序设计语言提供了两种参数传递的方式:值调用和引用调用。有些程序员认为Java程序设计语言对对象采用的是引用调用,实际上,这种理解是不对的。由于这种误解具有一定的普遍性,所以下面给出一个反例来详细地阐述一下这个问题:
public class Encapsulation { private String name; private int age; public Encapsulation(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public static void swap(Encapsulation x, Encapsulation y) { Encapsulation temp = x; x = y; y = temp; } @Override public String toString() { return "Encapsulation{" + "name='" + name + '\'' + ", age=" + age + '}'; } }
如果Java对对象采用的是按引用调用,那么这个类中swap方法就应该能够实现交换数据的效果
但是我们编写如下测试:(x和y的值没有发生变化)
Encapsulation x = new Encapsulation("dahe", 22); Encapsulation y = new Encapsulation("wang", 11); Encapsulation.swap(x, y); System.out.println(x); // Encapsulation{name='dahe', age=22} System.out.println(y); // Encapsulation{name='wang', age=11}
最终,白费力气
这个过程说明:Java程序设计语言对对象采用的不是引用调用,实际上,对象引用是按值传递的