• 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();
        }
      }
    }
    
  • 相关阅读:
    C#中的语言记忆功能
    C#中 文件的打开及保存
    无边框窗体设置
    Windows获取浏览器中存储的明文密码
    (CVE-2020-17530)Struts2 S2-061漏洞复现
    (CVE-2020-14882​&14883)Weblogic RCE复现
    内网渗透学习-信息收集篇
    Spring Boot Actuator H2 RCE复现
    Linux解压文件
    Windows本地提权
  • 原文地址:https://www.cnblogs.com/lvonve/p/8228416.html
Copyright © 2020-2023  润新知