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

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

原文地址:https://www.cnblogs.com/CHOI-6/p/13221659.html