导航🌌
目录
数组可以存放多个同一类型的数据。数组也是一种数据类型,属于引用类型。
即:数组就是一组数据
- 使用方式1 - 动态初始化
数组的定义:数据类型 数组名[] = new 数据类型[大小];
int a[] = new int[5];//创建了一个数组,名字a,存放5个int数据 double b[] = new double[10];//创建了一个数组,名字b,存放10个double数据 String arr[] = new String[10];//创建了一个数组,名字arr,存放10个String数据说明:这是定义数组的一种方法,存放其他类型数据的数组可依次类推创建
- 使用方式2 - 动态初始化
先声明数组:数组类型 数组名[];
也可这样声明:数组类型[] 数组名;(在Java中推荐使用这种)
创建数组:数组名 = new 数据类型[大小];
char a[]; a = new char[10]; int[] b; b = new int[5];使用方式3 - 静态初始化
初始化数组:数据类型 数组名[] = { 元素值, 元素值, ……};
int a[] = { 1, 2, 3, 4, 5, 6, 7 }; double[] b = { 1.1, 2.2, 3.3, 4.4 };
♦细节:
- 数组的引用、使用、访问、获取数组元素均是同一个意思
- 数组名[下标/索引/index],数组的下标从0开始
- 数组的下标必须在指定范围内使用,否则会出现越界访问,报错。有效下标为0 ~ 数组长度-1
- 获取数组长度(大小):数组名.length
- 数组是多个相同类型数据的组合,实现对这些数据的统一管理
- 数组中的元素可以是任何数据类型,包括基本数据类型和引用数据类型,但是不能混用
- 数组创建后,如果没有赋值,有默认值:int 0,short 0,byte 0,long 0,float 0.0,double 0.0,char \u0000,boolean false,String null
使用实例,利用冒泡排序对数组arr(9,8,7,6,5,4,3,2,1,0)进行排升序
- public class Test{
- public static void main(String[] args){
-
- int[] arr = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };
- //冒泡排序
- for(int i=0; i
- for(int j=0; j
1; j++){ - if(arr[j]>arr[j+1]){
- int tmp = arr[j];
- arr[j] = arr[j+1];
- arr[j+1] = tmp;
- }
- }
- }
- //打印结果
- for(int i=0; i
- System.out.print(arr[i] + " ");
- }
- }
- }
运行结果:
✨数组赋值机制(*)
基本数据类型赋值,这个值就是具体的数据,而且相互不影响。
数组在默认情况下是引用传递,赋的值是地址
试着运行下面一段代码:
- public class Test{
- public static void main(String[] args){
- int num1 = 7;
- int num2 = num1;
-
- num2 = 3;
- System.out.println("num1 = " + num1);
- System.out.println("num2 = " + num2);
-
- int[] arr1 = { 1, 4, 7 };
- int[] arr2 = arr1;//把arr1的地址赋给arr2
-
- arr2[0] = 3;
- //打印输出
- System.out.print("arr1: ");
- for(int i=0; i
- System.out.print(arr1[i] + " ");
- }
- System.out.println();
-
- System.out.print("arr2: ");
- for(int i=0; i
- System.out.print(arr2[i] + " ");
- }
- System.out.println();
- }
- }
运行结果:
数组赋值的内存图(重点):
数组的扩容与缩减
扩容思路(缩减思路类似操作即可):
- 定义初始数组 int[] arr = { 1, 2, 3 };//要求扩容增加一个元素4
- 定义一个新数组 int[] arrNew = new int[arr.length+1];
- 遍历arr数组,依次将arr的元素拷贝到arrNew数组
- 将4赋值给arrNew[arrNew.length-1]
- 让arr指向arrNew,arr = arrNew,那么原来的arr数组就会被当成垃圾回收(销毁),Java中有垃圾自动回收机制,不需要我们去释放
✨多维数组 - 二维数组(*)
二维数组的概念:
- 二维数组的每个元素都是一维数组,所以如果需要得到每个一维数组的值,还需要再次遍历
- 访问第i+1个一维数组的第j+1个元素:arr[i][j];
- 使用方式1:动态初始化
语法:数据类型[][] 数组名 = new 类型[大小][大小]
int[][] arr = new int[3][4];
- 使用方式2:动态初始化
先声明:数据类型 数组名[][];
再定义:数组名 = new 类型[大小][大小];
- int[][] arr;
- arr = new int[3][4];
- 使用方式3:动态初始化 - 列数不确定(*)
Java语言的二维数组支持列数可以不一样
需求:创建下面二维数组,并输出
j = 0 j = 1 j = 2 i = 0 1 i = 1 2 2 i = 2 3 3 3
代码:
- public class Test{
- public static void main(String[] args){
-
- int[][] arr = new int[3][];//创建一个二维数组,有三个一维数组且这三个一维数组还没有开辟数据空间
-
- for(int i=0; i
- //给每个一维数组开辟空间
- //如果没有给一维数组,那么arr[i]就是null
- arr[i] = new int[i+1];
-
- //遍历一维数组赋值
- for(int j=0; j
- arr[i][j] = i+1;
- }
- }
-
- //打印输出
- for(int i=0; i
- for(int j=0; j
- System.out.print(arr[i][j] + " ");
- }
- System.out.println();
- }
-
- }
- }
- 使用方式4:静态初始化
定义:数据类型 数组名[][] = { {值1,值2,…},{值1,值2,…},{值1,值2,…},… };
int arr[][] = { {1,2,3}, {3,3}, {7} };
细节:
- 一维数组声明方式有:int[] x 或者 int x[];而二维数组声明方式有:int[][] y 或者int[] y[] 或者 int y[][]
- 二维数组实际上由多个一维数组组成,它的各个一维数组长度可以相同,也可不相同
学习记录:
- 📆本篇博客整理于2022.7.30
- 🎓作者:如何写出最优雅的代码
- 📑如有错误,敬请指正🌹🌹
- 🥂关注一波不迷路!如果觉得写的不错,看完了别忘了点赞和收藏啊,感谢支持😏😏
-
相关阅读:
多进程与多线程
同态加密+区块链,在大健康数据隐私保护中的应用
Hive面试汇总(2022)
pandas读取一个 文件夹下所有excel文件
【kylin/ubuntu 】离线命令行基本操作
数据库系统原理与应用教程(001)—— MySQL 安装与配置:MySQL 软件的安装(windows 环境)
【VR开发】【Unity】【VRTK】3-VR项目设置
小记一篇 vuecli4项目 打包内存溢出问题
[原创][开源]C# Winform DPI自适应方案,SunnyUI三步搞定
【AI日记】24.11.01 LangChain、openai api和github copilot
-
原文地址:https://blog.csdn.net/m0_62080641/article/details/126067141