• 05


    一维数组

    • java中的数组是引用类型,分配在堆空间上。

    • 一维数组的声明方式:

      type var[];
      type[] var;
      
    • java中声明数组时不能指定其长度,如下,因为java中的数组是分配在堆空间的,需要new出来。

    int[] a = new int[5];
    

    动态初始化

    • 数组定义与为数组元素分配空间和赋值的操作分开进行。
    int a[];
    a = new int[3];
    a[0] = 1;
    a[1] = 2;
    a[2] = 3;
    

    静态初始化

    • 在定义数组的时候就为数组元素分配空间并赋值。
    int a[] = {1, 2, 3};
    Date days[] = {
    	new Date(1, 4, 2004);
    	new Date(2, 4, 2004);
    	new Date(3, 4, 2004);
    }
    

    数组元素的默认初始化

    • 数组是引用类型,他的元素相当于类的成员变量,因此数组分配空间后,每个元素也被按照成员变量的规则被隐式初始化了。
    int a[] = new int[3];
    Date days = new Date[3];
    // 则a中元素值为0;days中的元素值为null
    

    二维数组

    • java中多维数组的声明和初始化按照从多维到高维的顺序进行。
    // 例如
    int a[][] = new int [3][];
    a[0] = new int[3];
    a[1] = new int[4];
    a[2] = new int[5];
    // int t[][] = new int[][3]; // 错误
    

    二维数组初始化

    • 静态初始化
    int A[][] = {{1,2}, {3,4}, {5,6,7}};
    // 错误 int B[3][2] = {{1,2}, {3,4}, {5,6}}; 
    // 错误 int B[][2] = {{1,2}, {3,4}, {5,6}}; 
    // 错误 int B[3][] = {{1,2}, {3,4}, {5,6}}; 
    
    • 动态初始化
    int a[][] = new int[2][3];
    // 或者
    
    int b[][] = new int[2][];
    b[0] = new int[3];
    b[1] = new int[4];
    

    数组的拷贝

    • 使用 java.lang.System 类的静态方法
    public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
    
    • 可以用于数组 src 从第 srcPos 项元素开始的 length 个元素拷贝到目标数组dest 的从 destPos 项开始的 length 个位置。

    • 如果源数据数目超过目标数组边界会抛出 IndexOutOfBoundsException 异常。

    public class TestArrayCopy {
      public static void main(String args[]) {
        String[] s = 
                {"Mircosoft","IBM","Sun","Oracle","Apple"};
        String[] sBak = new String[6];
        System.arraycopy(s,0,sBak,0,s.length);
        
        for(int i=0;i<sBak.length;i++){
          System.out.print(sBak[i]+" ");
        }
        
        System.out.println();
        int[][] intArray = {{1,2},{1,2,3},{3,4}};
        int[][] intArrayBak = new int[3][];
        System.arraycopy
                (intArray,0,intArrayBak,0,intArray.length);
        intArrayBak[2][1] = 100;
        
        for(int i = 0;i<intArray.length;i++){
            for(int j =0;j<intArray[i].length;j++){
                System.out.print(intArray[i][j]+"  "); 
            }
            System.out.println();
        }
      }
    }
    
  • 相关阅读:
    vscode安装
    Linux下 Python绘图与可视化 及matplotlib与_tkinter安装
    C语言-结构体定义的几种方式
    leetcode- 88. 合并两个有序数组
    leetcode-16. 最接近的三数之和
    Leetcode-15. 三数之和
    Leetcode-561. 数组拆分 I
    Windows_pycharm下安装numpy
    python实现两个两个的翻转字符串
    linux复制文件夹、重命名文件夹、删除文件夹
  • 原文地址:https://www.cnblogs.com/lvonve/p/8228416.html
Copyright © 2020-2023  润新知