JS 数组和 Java 数组的区别
前言
这里的区别呢主要是介绍在函数(方法)中传递一个数组参数时,在函数(方法)内部改变这个数组后,对外部数组有什么影响。
直接为数组重新赋值
TestIt.java
class ChangeIt {
static void doIt(int[] z) {
z = null;
}
}
class TestIt {
public static void main(String[] args) {
int[] myArray = { 1, 2, 3, 4, 5 };
ChangeIt.doIt(myArray);
System.out.println(Arrays.toString(myArray));
}
}
[ 1, 2, 3, 4, 5 ]
testit.js
function testIt(arr) {
arr = null;
}
var arr = [1, 2, 3, 4, 5];
testIt(arr);
console.log(arr)
[ 1, 2, 3, 4, 5 ]
直接为数组重新赋值的话无论是在 JS 中还是在 Java 中的输出结果都是一样的,都不会改变外部传递的原数组
为数组中某一项重新赋值
TestIt2.java
class LowHighSwap {
static void doIt(int[] z) {
int temp = z[z.length - 1];
z[z.length - 1] = z[0];
z[0] = temp;
}
}
class TestIt2 {
public static void main(String[] args) {
int[] myArray = { 1, 2, 3, 4, 5 };
LowHighSwap.doIt(myArray);
System.out.println(Arrays.toString(myArray));
}
}
[ 5, 2, 3, 4, 1 ]
testIt2.js
function testIt2(arr) {
var temp = arr[arr.length - 1];
arr[arr.length - 1] = arr[0];
arr[0] = temp;
}
var arr = [1, 2, 3, 4, 5];
testIt(arr);
console.log(arr);
[ 1, 2, 3, 4, 5 ]
为数组中某一项重新赋值的话,在 Java 中改变 z 中的某一项时,会改变外部传递过来的数组;而在 JS 中改变数组中某一项,不会改变外部传递过来的数组
|