前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >【JavaSE学习】 Day3 数组

【JavaSE学习】 Day3 数组

作者头像
小小程序员
发布于 2023-02-24 08:52:21
发布于 2023-02-24 08:52:21
20400
代码可运行
举报
运行总次数:0
代码可运行

系列文章目录         Day1 JavaSE环境配置         Day2 JavaSE基础语法         Day3 JavaSE数组         Day4 JavaSE面向对象(上)         Day5 JavaSE面向对象(中)         Day6 JavaSE面向对象(下)         Day7 JavaSE面向对象          Day8 JavaSE异常处理         Day9 JavaSE多线程         Day10 JavaSE集合         Day11 JavaSE泛类         Day12 JavaSEIO流         Day13 JavaSE反射

目录

前言

一、数组介绍

二、一维数组

一维数组的声明与初始化

一维数组元素的引用:通过角标的方式调用。      

数组的属性:length

一维数组的遍历

一维数组元素的默认初始化值

三、二维数组

如何理解二维数组?

二维数组的声明与初始化

如何调用二维数组元素

二维数组的属性

遍历二维数组元素

二维数组元素的默认初始化值

四、数组的常见操作

数组的赋值与复制

复制

数组元素的反转

冒泡排序

五、Arrays工具类的使用

理解

使用

六、数组常见异常

数组角标越界异常:ArrayIndexOutOfBoundsException

空指针异常:NullPointerException

总结

前言

上期文章讲述了JavaSE基本语法,本次文章将来讲述JavaSE数组的使用

一、数组介绍

 数组的理解:

  • 数组(Array),是多个相同类型数据一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理。

数组相关的概念:

  •  数组名
  •  元素
  •  角标、下标、索引
  •  数组的长度:元素的个数

 数组的特点:

  •  数组是序排列的
  •  数组属于引用数据类型的变量。数组的元素,既可以是基本数据类型,也可以是引用数据类型
  •  创建数组对象会在内存中开辟一整块连续的空间
  •  数组的长度一旦确定,就不能修改。

数组的分类:

  •   照维数:一维数组、二维数组。
  •   照数组元素的类型:基本数据类型元素的数组、引用数据类型元素的数组。

二、一维数组

一维数组的声明与初始化

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//正确的方式:    
        int num;//声明
		num = 10;//初始化
		int id = 1001;//声明 + 初始化
		
		int[] ids;//声明
		//1.1 静态初始化:数组的初始化和数组元素的赋值操作同时进行
		ids = new int[]{1001,1002,1003,1004};
		//1.2动态初始化:数组的初始化和数组元素的赋值操作分开进行
		String[] names = new String[5];

	int[] arr4 = {1,2,3,4,5};//类型推断

//错误的方式:
//		int[] arr1 = new int[];
//		int[5] arr2 = new int[5];
//		int[] arr3 = new int[3]{1,2,3};

一维数组元素的引用:通过角标的方式调用。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  //数组的角标(或索引从0开始的,到数组的长度-1结束。
        names[0] = "王铭";
        names[1] = "王赫";
        names[2] = "张学良";
        names[3] = "孙居龙";
        names[4] = "王宏志";//charAt(0)

数组的属性:length

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
System.out.println(names.length);//5
System.out.println(ids.length);

说明:

数组一旦初始化,其长度就是确定的。arr.length 数组长度一旦确定,就不可修改。

一维数组的遍历

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for(int i = 0;i < names.length;i++){
    System.out.println(names[i]);
}

一维数组元素的默认初始化值

  • 数组元素是整型:0
  • 数组元素是浮点型:0.0
  • 数组元素是char型:0或'\u0000',而非'0'
  • 数组元素是boolean型:false 
  • 数组元素是引用数据类型:null

三、二维数组

如何理解二维数组?

  • 数组属于引用数据类型
  • 数组的元素也可以是引用数据类型
  • 一个一维数组A的元素如果还是一个一维数组类型的,则,此数组A称为二维数组。

二维数组的声明与初始化

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//正确的方式:
        int[] arr = new int[]{1,2,3};//一维数组
        //静态初始化
        int[][] arr1 = new int[][]{{1,2,3},{4,5},{6,7,8}};
        //动态初始化1
        String[][] arr2 = new String[3][2];
        //动态初始化2
        String[][] arr3 = new String[3][];
    //也是正确的写法:
        int[] arr4[] = new int[][]{{1,2,3},{4,5,9,10},{6,7,8}};
        int[] arr5[] = {{1,2,3},{4,5},{6,7,8}};//类型推断
//错误的方式:
//        String[][] arr4 = new String[][4];
//        String[4][3] arr5 = new String[][];
//        int[][] arr6 = new int[4][3]{{1,2,3},{4,5},{6,7,8}};

如何调用二维数组元素

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
System.out.println(arr1[0][1]);//2
System.out.println(arr2[1][1]);//null
arr3[1] = new String[4];
System.out.println(arr3[1][0]);
System.out.println(arr3[0]);//

二维数组的属性

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        System.out.println(arr4.length);//3
        System.out.println(arr4[0].length);//3
        System.out.println(arr4[1].length);//4

遍历二维数组元素

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  for(int i = 0;i < arr4.length;i++){
            
            for(int j = 0;j < arr4[i].length;j++){
                System.out.print(arr4[i][j] + "  ");
            }
            System.out.println();
    }

二维数组元素的默认初始化值

  •       规定:二维数组分为外层数组的元素,内层数组的元素
  •       int[][] arr = new int[4][3];
  •       外层元素:arr[0],arr[1]等
  •       内层元素:arr[0][0],arr[1][2]等
  •       数组元素的默认初始化值 
  •       针对于初始化方式一:比如:int[][] arr = new int[4][3];
  •       外层元素的初始化值为:地址值
  •       内层元素的初始化值为:与一维数组初始化情况相同    
  •       针对于初始化方式二:比如:int[][] arr = new int[4][];
  •       外层元素的初始化值为:null
  •       内层元素的初始化值为:不能调用,否则报错。

四、数组的常见操作

数组的赋值与复制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int[] array1,array2;
array1 = new int[]{1,2,3,4};
//赋值
array2 = array1;
//如何理解:将array1保存的数组的地址值赋给了array2,使得array1和array2
//共同指向堆空间中的同一个数组实体。

 复制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
array2 = new int[array1.length];
for(int i = 0;i < array2.length;i++){
    array2[i] = array1[i];
}
/*
如何理解:我们通过new的方式,给array2在堆空间中新开辟了数组的空间。
将array1数组中的元素值一个一个的赋值到array2数组中。
*/

数组元素的反转

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//方法一:
       for(int i = 0;i < arr.length / 2;i++){
           String temp = arr[i];
           arr[i] = arr[arr.length - i -1];
           arr[arr.length - i -1] = temp;
       }
        
//方法二:
      for(int i = 0,j = arr.length - 1;i < j;i++,j--){
          String temp = arr[i];
          arr[i] = arr[j];
          arr[j] = temp;
}      

冒泡排序

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int[] arr = new int[]{43,32,76,-98,0,64,33,-21,32,99};
        
        //冒泡排序
        for(int i = 0;i < arr.length - 1;i++){
            
            for(int j = 0;j < arr.length - 1 - i;j++){
                
                if(arr[j] > arr[j + 1]){
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
                
            }
            
        }        

五、Arrays工具类的使用

理解

  • 定义在java.util包下。
  • Arrays:提供了很多操作数组的方法。

使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
	//1.boolean equals(int[] a,int[] b):判断两个数组是否相等。
		int[] arr1 = new int[]{1,2,3,4};
		int[] arr2 = new int[]{1,3,2,4};
		boolean isEquals = Arrays.equals(arr1, arr2);
		System.out.println(isEquals);
		
		//2.String toString(int[] a):输出数组信息。
		System.out.println(Arrays.toString(arr1));
		
			
		//3.void fill(int[] a,int val):将指定值填充到数组之中。
		Arrays.fill(arr1,10);
		System.out.println(Arrays.toString(arr1));
		

		//4.void sort(int[] a):对数组进行排序。
		Arrays.sort(arr2);
		System.out.println(Arrays.toString(arr2));
		
		//5.int binarySearch(int[] a,int key)
		int[] arr3 = new int[]{-98,-34,2,34,54,66,79,105,210,333};
		int index = Arrays.binarySearch(arr3, 210);
		if(index >= 0){
			System.out.println(index);
		}else{
			System.out.println("未找到");
		}

六、数组常见异常

数组角标越界异常:ArrayIndexOutOfBoundsException

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
       int[] arr = new int[]{1,2,3,4,5};
        
       for(int i = 0;i <= arr.length;i++){

           System.out.println(arr[i]);

       }
        
       System.out.println(arr[-2]);
        
       System.out.println("hello");

空指针异常:NullPointerException

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//情况一:
        int[] arr1 = new int[]{1,2,3};

        arr1 = null;

        System.out.println(arr1[0]);
        
//情况二:
        int[][] arr2 = new int[4][];

        System.out.println(arr2[0][0]);
        
//情况三: 
        String[] arr3 = new String[]{"AA","BB","CC"};
        
        arr3[0] = null;
        
        System.out.println(arr3[0].toString());

小知识:一旦程序出现异常,未处理时,就终止执行。

总结

  本次文章讲述的是JavaSE数组的使用,讲述一维数组、二维数组创建和使用、常见数组操作和使用、Arrays工具类的使用、数组的常见异常。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-12-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 系列文章目录         Day1 JavaSE环境配置         Day2 JavaSE基础语法         Day3 JavaSE数组         Day4 JavaSE面向对象(上)         Day5 JavaSE面向对象(中)         Day6 JavaSE面向对象(下)         Day7 JavaSE面向对象          Day8 JavaSE异常处理         Day9 JavaSE多线程         Day10 JavaSE集合         Day11 JavaSE泛类         Day12 JavaSEIO流         Day13 JavaSE反射
  • 前言
  • 一、数组介绍
  • 二、一维数组
    • 一维数组的声明与初始化
    • 一维数组元素的引用:通过角标的方式调用。
    • 数组的属性:length
    • 一维数组的遍历
    • 一维数组元素的默认初始化值
  • 三、二维数组
    • 如何理解二维数组?
    • 二维数组的声明与初始化
    • 如何调用二维数组元素
    • 二维数组的属性
    • 遍历二维数组元素
    • 二维数组元素的默认初始化值
  • 四、数组的常见操作
    • 数组的赋值与复制
    •  复制
    • 数组元素的反转
    • 冒泡排序
  • 五、Arrays工具类的使用
  • 理解
    • 使用
  • 六、数组常见异常
    • 数组角标越界异常:ArrayIndexOutOfBoundsException
    • 空指针异常:NullPointerException
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文