Java中函数参数传递的方法和控制流程
Java中函数参数传递有两种方法:值传递和引用传递。值传递是指将实参的值复制一份传递给函数的形参,函数操作的是形参的值,不会影响实参的值。引用传递是指将实参的地址传递给函数的形参,函数操作的是实参所指向的对象,会影响实参的值。
例如:
public static void main(String[] args) {
int a = 1;
changeValue(a);
System.out.println(a); // 输出1
}
public static void changeValue(int b) {
b = 2;
}
此例中函数changeValue只对传入的参数做了简单的赋值操作,但因为Java中参数传递是值传递,因此实参a不会发生改变。
再看一个例子:
public static void main(String[] args) {
int[] arr = new int[] {1, 2};
changeArrayValue(arr);
System.out.println(Arrays.toString(arr)); // 输出[2, 2]
}
public static void changeArrayValue(int[] arr) {
arr[0] = 2;
}
因为Java中参数传递是引用传递,函数changeArrayValue通过修改形参arr所指向的数组的第一个元素,实现了对实参arr的修改。
除了值传递和引用传递,Java中还有一种特殊的参数传递,即可变参数。可变参数是Java SE 5中引入的一个新特性,可以让一个方法接收任意数量的参数。可变参数必须是最后一个参数,并且被定义为类型相同的可变参数列表。
例如:
public static void main(String[] args) {
printStrings("hello", "world"); // 输出hello world
printStrings("a", "b", "c"); // 输出a b c
}
public static void printStrings(String... strings) {
for (String str : strings) {
System.out.print(str + " ");
}
System.out.println();
}
此例中函数printStrings接收一个可变参数列表,可以接收任意数量的字符串参数。在函数内部使用for-each循环遍历可变参数列表,将每个字符串参数打印出来。使用可变参数可以简化函数参数列表的定义和调用。
Java中控制流程是指程序执行的顺序。主要有三种控制流程:顺序结构、选择结构和循环结构。
顺序结构是指按照代码的书写顺序依次执行程序代码。
例如:
int a = 1; int b = 2; int sum = a + b; System.out.println(sum);
此例中代码依次执行,计算a和b的和并将结果打印出来。
选择结构是指根据条件执行程序的不同代码块。Java中的选择结构有if语句、switch语句和三目运算符。
例如:
int score = 80;
if (score >= 90) {
System.out.println("优秀");
} else if (score >= 80) {
System.out.println("良好");
} else {
System.out.println("不及格");
}
此例中根据分数的不同,执行不同的代码块。
循环结构是指重复执行程序的某一段代码块。Java中的循环结构有for循环、while循环和do-while循环。
例如:
for (int i = 0; i < 5; i++) {
System.out.println(i);
}
此例中使用for循环,重复执行输出i的值。循环体中代码的执行次数由循环条件的控制,当循环条件不满足时,循环结束。
