问题1:在java中直接打印数组的时候,会打印的是数组的内存地址而不是数组的值。
解决办法:
一维数组的情况Arrays.toString(arr1)
;
二维数组的情况Arrays.deepToString(arr2)
问题2:数组不能直接赋值,赋值的是数组的地址,即指针是指向同一个地址的。
解决办法:
Arrays.copyOf(arr,arr.length)
package demo1;
import java.util.Arrays;
public class TestArray {
public static void main(String[] args) {
double [] arr1 = {1.9,2,3.9};
double [][] arr2 = {{10,12},{41,51}};
double [] arr3;
double [] arr4;
// 如果直接打印数组的话,会得到对象在内存中的地址值
System.out.println("数组1:" + Arrays.toString(arr1)); // 打印一维数组的方法
System.out.println("数组1:" + arr1);
System.out.println("数组2:" + Arrays.deepToString(arr2)); // 打印二维数组的方法
System.out.println("数组2:" + arr2);
// 数组重新赋值
arr3 = new double [] {10,15,18};
System.out.println("数组3:" + Arrays.toString(arr3));
//arr4 = arr3; // 直接拷贝的是数据地址,而不是数组的内容
arr4 = Arrays.copyOf(arr3, arr3.length); // 拷贝数组的数据,而不是地址
System.out.println("arr3赋值给arr4:" + Arrays.toString(arr4));
arr4[2] = 10;
System.out.println("arr4值改变后,arr3:" + Arrays.toString(arr3));
}
}