数组

1.数组

定义:数组就是一个变量,储存相同数据类型数据

或者:数组是存储同一种数据类型多个元素的集合。也可以看成是一个容器。

数组既可以存储基本数据类型,也可以存储引用数据类型

 

格式:数据类型[] 数组名 = new 数据类型[数组长度];

动态初始化:只指定长度,系统给出初始值

数据类型[] 数组名 = {数据};

静态初始化 给出初始化值,由系统决定长度

 

* 声明数组有两种形式

int[] a;

int a[];

ps:大多数程序员喜欢使用第一种形式的,因为它将类型int[](整数数组)与变量名分开了。

 

2.使用数组中的数据(需补充)

数组名中存储的是数组第一个元素的地址

数组名的空间是分配在栈上面的

数组中的元素空间是分配在堆上面的

扩展:栈和堆的区别?

 

3.获取数组长度

数组名.length;

数组长度下标是从0开始算的。

int[] a = new int[100];

ps:这个数组的下标从0~99,而不是1~100.

当你想访问数组长度以外的数据时,如:a[100]。这时程序就会引发异常:“array index out of bounds”,即我们常说的数组越界。

 

4.获取数组中某一个元素

数组名[下标]

 

数组拷贝:需要用到Arrays类中的copyOF方法。

int[] a = {1,2,3,4,5}; int[] b = new int[6];

b = Arrays.copyOF(a,a.length);

因为第二个参数是新数组的长度,这个方法还可以用来增加数组的大小

int[] a = new int[10];

System.out.println(a.length); //10

a = Arrays.copyOf(a, 2*a.length);

System.out.println(a.length); //20

 

 

数组排序:Arrays类中的sort方法:采用的优化的快速排序算法

 

 

 

练习:

int[] a = new int[];//错,未指定数组长度

int[] b = new int[10];//对

int[] c = new []{10};//错 new后面少了int数据类型

int[] d = new int[]{10};//对

int[] e ={}; //对

int f[] = {2,3,4};//对

 

 

5、总结

1)、数组就是一个变量,存储相同数据类型的数据,

内存上是连续的空间。

2)、可以指定数组名和数组长度来声明数组,

但是数组的长度一旦声明就不能修改

3)、数组元素可以通过数组名[下标]来访问,下标

从0开始。

4)、数组可以是一维也可以多维的

6、多维数组

二维数组:二维数组中的每一个元素,都是一维数组

int[][] m = new int[2][3];

int[][] n = {{2,3,4},{20,30,40}};

访问30 4

n[1][1] n[0][2]

三维数组:三维数组中的每个元素,都是二维数组

int[][][] k = {

{{2,3,4},{20,30,40}},

{{7,8,9},{70,80,90}}

}

访问9 k[1][0][2]

 

 

* 数组元素反转(就是把元素对调)

public static void reverseArray(int[] arr) {

for (int i = 0;i < arr.length / 2 ; i++) {

//arr[0]和arr[arr.length-1-0]交换

//arr[1]和arr[arr.length-1-1]交换

//arr[2]和arr[arr.lentth-1-2]

//...

 

int temp = arr[i];

arr[i] = arr[arr.length-1-i];

arr[arr.length-1-i] = temp;

}

}

 

* 冒泡排序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值