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/long0
float/double0.0
char一个空字符(空格),即’\u0000’
booleanfalse
引用数据类型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));
    }
}

以上

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值