java数组元素是类_Java数组详解

数组详解

1、数组概述

数组是相同类型数据的有序集合

每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们

2、数组声明和创建

①数组声明形式

dataType[] arrayRefVar; //首选的方法

dataType arrayRefVar[];

②数组的创建

dataType[] arrayRefVar=new dataType[arraySize];

③数组元素是通过索引访问的,数组索引从0开始

3、内存分析及三种初始化方式

①Java内存

9694374196150a454f265a4fec349eb4.png

②定义数组时内存分配情况

1.声明数组—int[] array=null;

在栈中存放变量,如图所示

d3f982b479c4d6a8b8513a80dadd3bff.png

2.创建数组—array=new int[5];

在堆中开辟空间,如图所示

a11e2f9506e06e2a4c594fabb1ed12b6.png

3.给数组元素赋值

array[0]=0;array[1]=1;array[2]=2;未赋值元素是默认值0

d4b9a1b7fe6abc3b90d295387bc717dd.png

③三种初始化方式

1.静态初始化

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

Man[] mans={new Man(1,1),new Man(2,2)}; //Man是类

2.动态初始化

int[] array=new int[2];

array[0]=1;

array[1]=2;

3.默认初始化

数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化

4、数组基本特点

①数组长度是确定的

②元素必须是相同类型

③数组中的元素可以是任何数据类型,包括基本类型和引用类型

④数组对象本身是保存在堆中的,数组也是对象

5、数组边界问题

①下标合法区间—[0,length-1]

②数组越界会报ArrayIndexOutOfBoundsException异常

6、数组的使用

①For—Each循环

1 public classDemo1 {2 public static voidmain(String[] args) {3 int[] arrays={1,2,3,4,5,6};4 for(intarray:arrays){5 System.out.println(array);6 }7 }8 }

②数组作方法入参

public static void printArray(int[] arrays){for(int i=0;i

System.out.print(arrays[i]+" ");

}

}

③数组作为返回值

public static int[] reverse(int[] arrays){int result[]=new int[arrays.length];int i=0;for(int j=arrays.length-1;j>=0;j--){

result[i]=arrays[j];

i++;

}returnresult;

}

7、多维数组

多维数组可以看成是数组的数组

例如:int[] [] nums=new int[3] [2];

78ebc8eeccc104ae7ec34303265aa853.png

8、Arrays类

①数组的工具类java.util.Arrays,Arrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用

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

System.out.print(Arrays.toString(a));//输出数组元素

方法名作用

toString(a)

输出数组元素

sort(a)

按升序对数组元素进行排序

equals(a1,a2)

比较数组元素是否相等

binarySearch(a,3)

查找指定元素索引值

fill(a,2)

给数组赋值

9、稀疏数组

①当一个数组中大部分元素为0,或者同一值的数组时,可以使用稀疏数组来保存该数组

②稀疏数组的处理方式是:

1.记录数组一共有几行几列,有多少个不同值

2.把具有不同值得元素和行列及值记录在一个小规模的数组中,从而缩小程序的规模

4bbea2f1ee56b5e2b6e84b091435b2a7.png

1 public classSparse {2 public static voidmain(String[] args) {3 //定义一个数组

4 int array1[][]=new int[6][6];5 array1[0][2]=3;6 array1[3][3]=6;7 array1[5][5]=2;8 printArray(array1);9 ​10 System.out.println("===========================");11 //遍历数组获取非零个数

12 int sum=0;13 for(int i=0;i

22 int array2[][]=new int[sum+1][3];23 array2[0][0]=6;24 array2[0][1]=6;25 array2[0][2]=sum;26 int count=1;27 for(int i=0;i

31 array2[count][1]=j; //保存列

32 array2[count][2]=array1[i][j]; //保存值

33 count++;34 }35 }36 }37 System.out.println("稀疏数组内容");38 printArray(array2);39 ​40 System.out.println("===========================");41 ​42 //根据稀疏数组还原数组

43 int array3[][]=new int[array2[0][0]][array2[0][1]];44 for(int i=1;i

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值