数组

2020-06-12  本文已影响0人  稻草人_9ac7

问题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));
    }

}

上一篇 下一篇

猜你喜欢

热点阅读