• Java数组详解


    Java数组讲解

    数组介绍

    数组是一组相同数据类型元素的集合,在Java中数组属于引用类型,即数组是一个对象。数组中可以存放八大基本数据类型,还包含引用数据类型。

    创建数组

    格式: 引用类型[] 数组名 = new  引用类型

    示例:int[] ages = new int[3];// 定义了一个长度为 3 的 int 类型数组

    数组的初始化

        // 格式:数组类型[] 数组变量名 = new 数组类型[长度];
       int[] ages = new int[3];// 定义了一个长度为 3 的 int 类型数组
       // 格式:数组类型[] 数组变量名 = new 数组类型[]{数据1, 数据2, 数据3,...}
       int[] ages2 = new int[]{18, 20, 30};// 创建了一个长度为 3 的 int 类型数组
       // 格式:数组类型[] 数组变量名 = {数据1, 数据2, 数据3,...}
       int[] ages3 = {18, 20, 30};// 创建了一个长度为 3 的 int 类型数组

    元素默认值

    如果创建数组时没有进行赋值,数组就会按照创建类型的元素默认值存储

    数据类型默认初始化值
    byte/short/int/long 0
    float/double 0.0
    char 一个空字符(空格),即'u0000'
    boolean false
    引用数据类型 null,表示变量不引用任何对象

    获取数组中的数据

    格式:数组变量名[下标/角标/索引]

    数组中的索引是从0开始,所以数组的第一位数据是ages[0]

    第二位数据是ages[1]

    第三位数据是ages[2]

        //打印下数组中各个位置的值,看是否和创建数组是的赋值一样
    System.out.println(ages[0]);
       System.out.println(ages[1]);
       System.out.println(ages[2]);

    数组的赋值

    数组的赋值和变量的赋值一样,等号左侧为数组的索引位置,右侧为赋值的数值

        ages[0] = 1;
       ages[1] = 2;
       ages[2] = 3;

    数组的遍历

    在操作数组时,经常需要依次访问数组中的每个元素,这种操作称作数组的遍历。接下来通过一个案例来学习如何使用for循环来遍历数组,如下所示。

    其中用到了数组的属性arr.length表示该数组的长度       

    通过length属性访问数组中元素的个数

    for 循环

    public class ArrayDemo {    
       public static void main(String[] args) {        
           int[] arr = { 1, 2, 3, 4, 5 }; // 定义数组        
           // 使用for循环遍历数组的元素        
           for (int i = 0; i < arr.length; i++) {          
          System.out.println(arr[i]); // 通过索引访问元素        
    }    
    }
    }

    for each 循环

    打印数组 a 的每一个元素,一个元素占一行

    for (int element : a) 
       System.out.println(element):

    数组中常见的问题

    数组在编写程序时应用非常广泛,灵活地使用数组对实际开发很重要。接下来,本节将针对数组的常见操作进行详细地讲解,如数组的遍历、最值的获取、数组的排序等。

    数组的最值

    public class ArrayDemo {    
       public static void main(String[] args) {        
           int[] arr = { 4, 1, 6, 3, 9, 8 }; // 定义一个数组        
           int max = arr[0]; // 定义变量max用于记住最大数,首先假设第一个元素为最大值        
           // 下面通过一个for循环遍历数组中的元素        
           for (int x = 1; x < arr.length; x++) {            
               if (arr[x] > max) { // 比较 arr[x]的值是否大于max                
                   max = arr[x]; // 条件成立,将arr[x]的值赋给max            
              }        
          }        
           System.out.println("max=" + max); // 打印最大值    
      }
    }

    数组的越界异常

    每个数组的索引都有一个范围,即0~length-1。在访问数组的元素时,索引不能超出这个范围,否则程 序会报错

    public class ArrayDemo06 {    
       public static void main(String[] args) {        
           int[] arr = new int[4]; // 定义一个长度为4的数组      
           System.out.println("arr[0]=" + arr[4]); // 通过角标4访问数组元素    
      }
    }
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 4 out of bounds for length 4
    at com.test.Day04.ArrayDemo06.main(ArrayDemo06.java:6)

    上图运行结果中所提示的错误信息是数组越界异常ArrayIndexOutOfBoundsException,出现这个异常的 原因是数组的长度为4,其索引范围为0~3,而上述代码中的第4行代码使用索引4来访问元素时超出了数组 的索引范围

    二维数组

    二维数组的定义有很多方式,接下来针对几种常见的方式进行详细地讲解,具体如下:

    第一种方式:

    int[][] arr = new int[3][4];

    上面的代码相当于定义了一个3*4的二维数组,即二维数组的长度为3,二维数组中的每个元素又是一 个长度为4的数组

    第二种方式

    int[][] arr = new int[3][];

    第二种方式和第一种类似,只是数组中每个元素的长度不确定

    第三种方式:

    int[][] arr = {{1,2},{3,4,5,6},{7,8,9}};

    二维数组元素遍历与数组元素累加

    class ArrayDemo09 {    
       public static void main(String[] args){        
           //一维数组的求累加和并遍历        
           int[] arr = {10,20,30,40,50};        
           int sum = 0;        
           for (int i=0; i<arr.length; i++) {            
               //System.out.println(arr[i]);            
               sum += arr[i];
                }        
           System.out.println("sum= " + sum);        
           System.out.println("---------------------");                
           //二维数组的求累加和并遍历        
           int[][] arr2 = { {1,2},{3,4,5},{6,7,8,9,10} };      
           int sum2 = 0;        
           for (int i=0; i<arr2.length; i++) {            
               for (int j=0; j<arr2[i].length; j++) {                
                   //System.out.println(arr2[i][j])                
                   sum2 += arr2[i][j];            
              }      
          }        
           System.out.println("sum2= "+ sum2);    
      }
    }

     

    数组工具类

    其中导入了util类包

    讲述了几种常用的数组工具类

    import java.util.Arrays;

    /**
    * Java 作者数组工具类
    */
    public class ArrayDemo07 {

       public static void main(String[] args) {
           int[] arrNum = {3, 7, 6, 9, 2, 1, 8};
           // sort 排序 从小到大
           Arrays.sort(arrNum);
           // 将数据中的数据返回字符串
           System.out.println(Arrays.toString(arrNum));
           // 替换全部
           Arrays.fill(arrNum, 50);
           System.out.println(Arrays.toString(arrNum));
           // 替换区间
           Arrays.fill(arrNum, 2, 4, 100);// 左闭右开
           System.out.println(Arrays.toString(arrNum));
           // 拷贝数组指定拷贝的索引从0开始到newLength结束
           int[] result = Arrays.copyOf(arrNum, 5);
           System.out.println(Arrays.toString(result));
           //拷贝数组指定拷贝的索引从 to 到 from 左闭右开区间
           result = Arrays.copyOfRange(arrNum, 2, 5);
           System.out.println(Arrays.toString(result));
      }
    }

    ------------恢复内容开始------------

    Java数组讲解

    数组介绍

    数组是一组相同数据类型元素的集合,在Java中数组属于引用类型,即数组是一个对象。数组中可以存放八大基本数据类型,还包含引用数据类型。

    创建数组

    格式: 引用类型[] 数组名 = new  引用类型

    示例:int[] ages = new int[3];// 定义了一个长度为 3 的 int 类型数组

    数组的初始化

        // 格式:数组类型[] 数组变量名 = new 数组类型[长度];
       int[] ages = new int[3];// 定义了一个长度为 3 的 int 类型数组
       // 格式:数组类型[] 数组变量名 = new 数组类型[]{数据1, 数据2, 数据3,...}
       int[] ages2 = new int[]{18, 20, 30};// 创建了一个长度为 3 的 int 类型数组
       // 格式:数组类型[] 数组变量名 = {数据1, 数据2, 数据3,...}
       int[] ages3 = {18, 20, 30};// 创建了一个长度为 3 的 int 类型数组

    元素默认值

    如果创建数组时没有进行赋值,数组就会按照创建类型的元素默认值存储

    数据类型默认初始化值
    byte/short/int/long 0
    float/double 0.0
    char 一个空字符(空格),即'u0000'
    boolean false
    引用数据类型 null,表示变量不引用任何对象

    获取数组中的数据

    格式:数组变量名[下标/角标/索引]

    数组中的索引是从0开始,所以数组的第一位数据是ages[0]

    第二位数据是ages[1]

    第三位数据是ages[2]

        //打印下数组中各个位置的值,看是否和创建数组是的赋值一样
    System.out.println(ages[0]);
       System.out.println(ages[1]);
       System.out.println(ages[2]);

    数组的赋值

    数组的赋值和变量的赋值一样,等号左侧为数组的索引位置,右侧为赋值的数值

        ages[0] = 1;
       ages[1] = 2;
       ages[2] = 3;

    数组的遍历

    在操作数组时,经常需要依次访问数组中的每个元素,这种操作称作数组的遍历。接下来通过一个案例来学习如何使用for循环来遍历数组,如下所示。

    其中用到了数组的属性arr.length表示该数组的长度       

    通过length属性访问数组中元素的个数

    for 循环

    public class ArrayDemo {    
       public static void main(String[] args) {        
           int[] arr = { 1, 2, 3, 4, 5 }; // 定义数组        
           // 使用for循环遍历数组的元素        
           for (int i = 0; i < arr.length; i++) {          
          System.out.println(arr[i]); // 通过索引访问元素        
    }    
    }
    }

    for each 循环

    打印数组 a 的每一个元素,一个元素占一行

    for (int element : a) 
       System.out.println(element):

    数组中常见的问题

    数组在编写程序时应用非常广泛,灵活地使用数组对实际开发很重要。接下来,本节将针对数组的常见操作进行详细地讲解,如数组的遍历、最值的获取、数组的排序等。

    数组的最值

    public class ArrayDemo {    
       public static void main(String[] args) {        
           int[] arr = { 4, 1, 6, 3, 9, 8 }; // 定义一个数组        
           int max = arr[0]; // 定义变量max用于记住最大数,首先假设第一个元素为最大值        
           // 下面通过一个for循环遍历数组中的元素        
           for (int x = 1; x < arr.length; x++) {            
               if (arr[x] > max) { // 比较 arr[x]的值是否大于max                
                   max = arr[x]; // 条件成立,将arr[x]的值赋给max            
              }        
          }        
           System.out.println("max=" + max); // 打印最大值    
      }
    }

    数组的越界异常

    每个数组的索引都有一个范围,即0~length-1。在访问数组的元素时,索引不能超出这个范围,否则程 序会报错

    public class ArrayDemo06 {    
       public static void main(String[] args) {        
           int[] arr = new int[4]; // 定义一个长度为4的数组      
           System.out.println("arr[0]=" + arr[4]); // 通过角标4访问数组元素    
      }
    }
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 4 out of bounds for length 4
    at com.test.Day04.ArrayDemo06.main(ArrayDemo06.java:6)

    上图运行结果中所提示的错误信息是数组越界异常ArrayIndexOutOfBoundsException,出现这个异常的 原因是数组的长度为4,其索引范围为0~3,而上述代码中的第4行代码使用索引4来访问元素时超出了数组 的索引范围

    二维数组

    二维数组的定义有很多方式,接下来针对几种常见的方式进行详细地讲解,具体如下:

    第一种方式:

    int[][] arr = new int[3][4];

    上面的代码相当于定义了一个3*4的二维数组,即二维数组的长度为3,二维数组中的每个元素又是一 个长度为4的数组

    第二种方式

    int[][] arr = new int[3][];

    第二种方式和第一种类似,只是数组中每个元素的长度不确定

    第三种方式:

    int[][] arr = {{1,2},{3,4,5,6},{7,8,9}};

    二维数组元素遍历与数组元素累加

    class ArrayDemo09 {    
       public static void main(String[] args){        
           //一维数组的求累加和并遍历        
           int[] arr = {10,20,30,40,50};        
           int sum = 0;        
           for (int i=0; i<arr.length; i++) {            
               //System.out.println(arr[i]);            
               sum += arr[i];
                }        
           System.out.println("sum= " + sum);        
           System.out.println("---------------------");                
           //二维数组的求累加和并遍历        
           int[][] arr2 = { {1,2},{3,4,5},{6,7,8,9,10} };      
           int sum2 = 0;        
           for (int i=0; i<arr2.length; i++) {            
               for (int j=0; j<arr2[i].length; j++) {                
                   //System.out.println(arr2[i][j])                
                   sum2 += arr2[i][j];            
              }      
          }        
           System.out.println("sum2= "+ sum2);    
      }
    }

     

    数组工具类

    其中导入了util类包

    讲述了几种常用的数组工具类

    import java.util.Arrays;

    /**
    * Java 作者数组工具类
    */
    public class ArrayDemo07 {

       public static void main(String[] args) {
           int[] arrNum = {3, 7, 6, 9, 2, 1, 8};
           // sort 排序 从小到大
           Arrays.sort(arrNum);
           // 将数据中的数据返回字符串
           System.out.println(Arrays.toString(arrNum));
           // 替换全部
           Arrays.fill(arrNum, 50);
           System.out.println(Arrays.toString(arrNum));
           // 替换区间
           Arrays.fill(arrNum, 2, 4, 100);// 左闭右开
           System.out.println(Arrays.toString(arrNum));
           // 拷贝数组指定拷贝的索引从0开始到newLength结束
           int[] result = Arrays.copyOf(arrNum, 5);
           System.out.println(Arrays.toString(result));
           //拷贝数组指定拷贝的索引从 to 到 from 左闭右开区间
           result = Arrays.copyOfRange(arrNum, 2, 5);
           System.out.println(Arrays.toString(result));
      }
    }

    ------------恢复内容结束------------

  • 相关阅读:
    vxlan简介1
    什么underlay网络?
    CDN:内容分发网络
    zz博通发布用于数据中心交换机的开源软件开发套件SDKLT
    DPDK盒子使用手册——DPDK入门zz
    2018年最值得关注的15大技术趋势zz
    为什么要使用叶脊(leaf-spine)拓扑网络zz
    openvswitch
    Linux基础训练题型(下)
    Linux基础命令训练题型(上)
  • 原文地址:https://www.cnblogs.com/CHOI-6/p/13221659.html
Copyright © 2020-2023  润新知