0


JAVA语言基础(一维数组 、 二维数组)

数组概述

  • ava语言中的数组是一种引用数据类型,不属于基本数据类型,数组的父类是Object。
  • 数组实际上是个容器,可以同时容纳多个元素(数组是一个数据的集合)
  • 数组当中可以存储基本数据类型的数据,也可以存储引用数据类型的数据。
  • 数组是一种引用数据类型,所以数组是存储在堆当中的。
  • 数组当中如果存储的是Java对象,实际上存储的是对象的“引用(内存地址)”
  • 数组一旦创建,长度不可变。
  • 所有的数组对象都有length属性,用来获取数组中元素个数。
  • 数组要求数组中元素的类型要统一。比如int类型只能存储int类型。
  • 数组在内存方面存储的时候,数组中元素内存地址是连续的。
  • 数组中首元素内存地址作为整个数组对象内存地址。
  • 数组中每个元素都有下标,下标从0开始,以1递增,最后一个元素的下标是length-1。

数组的优点和缺点

  • 缺点: 第一:由于为了保证数组中每个元素的内存地址连续,所以在数组上随机删除或者增加元素的时候效率较低,因为随机增删元素会涉及到后面元素统一向前后者向后位移的操作。 第二:数组不能存储大数据量。
  • 优点: 查询/查找/检索某个下标上的元素时效率极高。 为什么检索效率高? 第一:每个元素的内存地址在空间存储上是连续的。 第二:每个元素类型相同,所以占用空间大小一样。 第三:知道第一个元素内存地址,知道每一个元素占用空间大小,还知道下标,所以通过数学表达式就可以计算出某个下标元素的内存地址。直接通过内存地址定位元素,所以数组的检索效率极高。注意:对于数组中最后一个元素的增删,是没有效率影响

类型的默认值

数据类型默认值byte0short0int0long0Lfloat0.0Fdouble0.0char\u0000引用数据类型null

数组内存结构

在这里插入图片描述

定义一维数组

数据类型[ ] 数组名;

//语法格式int[] array1;//int类型 ,array1数组名

初始化一维数组

第一种方式:静态初始化

数据类型[ ] 数组名={元素1,元素2,…,元素n};

//语法格式int array1={1,2,3,4};//1,2,3,4表示数组元素

第二种方式:动态初始化

数据类型[ ] 数组名=new 数据类型[长度]
注意:前后的数据类型要统一

//语法格式int array1=newint[5];//初始化一个5个长度int类型数组,每个元素默认值0
  • 使用new int [5]创建一个数组
  • 把新建的数组的引用赋值给变量array1。

一维数组的遍历

数组遍历:就是将数组中的每个元素分别获取出来。
注意:如果i>array1.length,表示下标越界了 会报ArrayIndexOutOfBoundsException异常

for(int i=0;i<array1.length;i++){System.out.println(array1[i]);//i表示数组下标}

例子1

pubilc classTest01{publicstaticvoidmain(String[]args){// 声明一个int类型的数组,使用静态初始化的方式int[] array1={1,2,3,4};//也可以写成int array1[]={1,2,3,4}//所有的数组对象都有length属性System.out.println("数组中元素的个数"+array1.length);//通过下标对数组中的元素进行改和读//读System.out.println("第一元素:"+array1[0]);System.out.println("最后一个元素:"+array1[array1.length-1]);//改
array1[0]=111;//遍历数组for(int i=0;i<array1.length;i++){System.out.println(array1[i]);}}}

例子2

publicclassTest02{publicstaticvoidmain(String[]args){//声明一个int类型数组,使用动态初始化的方式int[] array2=newint[4];//创建长度为4的int类型数组,数组中每个元素的默认值是0//遍历数组for(int i=0;i<array2.length;i++){System.out.println("数组中下标为"+i+"的元素是:"+array2[i]);}}}

为什么动态初始化有默认值,而静态初始化没有
动态初始化:建立相应的空间,并附上默认值,再赋值时,是将默认值更改为新附的值。
静态初始化:建立空间同时赋值,赋多少值就开辟多少空间。

二维数组的定义

数据类型[ ] [ ] 数组名;
二维数组其实是一个特殊的一维数组,特殊在这个二维数组当中每一个元素是一个一维数组。

int[][] a;

二维数组初始化

第一种方式:静态初始化

数据类型[ ][ ] 数组名={{一维数组1},{一维数组2},…,{一维数组n}};
数据类型[二维数组中的一维数组的下标 ] [一维数组的下标 ] 数组名

int[][] a2={{1,1,1},{2,2,2,},{3,3,3,}};

例子3

publicclassTest03{publicstaticvoidmain(String[]args){//二维数组//以下代码当中,里面有3个一维数组int[][] a2={{1,2,3},{4,5,6},{7,8,9}};System.out.println("二维数组元素个数为:"+a2.length);//二维数组总共有3个元素System.out.println(a2[0].length);//a2[0].length表示a2中的第一个元素{1,2,3}的长度,长度为3/*
二维数组中元素:读和改
*/int b1= a2[0][0];表示取出第一个一维数组的第一个元素赋值给变量b1
 int b2= a2[1][0];表示取出第二个一维数组的第一个元素赋值给变量b2
 //改
 a[0][0]=111;表示将第一个一维数组的第一个元素改为111//遍历二维数组for(int i=0;i<a2.length;i++){//负责取出二维数组中的一维数组//负责遍历一维数组for(int j=0;j<a2.length;j++){System.out.println(a2[i][j]);}}

第二种方式:动态初始化

数据类型[ ] [ ] 数组名=new int[行数][列数];

//3个一维数组,每一个一维数组当中有4个元素int[][] a2=newint[3][4];

本文转载自: https://blog.csdn.net/m0_65033114/article/details/125013491
版权归原作者 好学者加分 所有, 如有侵权,请联系我们删除。

“JAVA语言基础(一维数组 、 二维数组)”的评论:

还没有评论