- 数组的定义:
数组优点:可以自动从0开始给数组中的元素排序,方便操作这些元素。
格式1:元素类型 [] 数组名 = new 元素类型 [元素长度或元素个数] ;
示列:int [] arr = new int [5];
格式2:元素类型 [] 数组名 = new 元素类型 [] {元素,元素,....}
示列:int [] arr = new int []{1,2,3,5};
int [] arr = {1,2,3,5};
2.栈内存:用于存放局部变量,当数据使用完,所占空间会自动释放。
堆内存:存放数组和对象,通过new建立的实列都存放在堆内存中。
堆特点:
- 存放数组实体,每一个实体都有内存地址值
- 实体中的变量都有有默认初始化值
- 实体不再被使用,会在不定时的时间被垃圾回收机制回收
3.数组的两种异常情况:
ArrayIndexOutOfBoundsException: 操作数组时,访问到了数组中不存在的角标。
NullPointerException:空指针异常:当引用没有任何指向值为null的情况,该引用还在用于操作实体。
4.数组的操作:
获取数组中的元素,通常会用到遍历
数组中有一个属性可以直接获取到数组元素个数:length
使用方式:数组名称.length
数组遍历实列:
应用:获取数组中最大值和最小值
获取数组中的最大值。
思路:
1,获取最值需要进行比较。每一次比较都会有一个较大的值。因为该值不确定。
通过一个变量进行临储。
2,让数组中的每一个元素都和这个变量中的值进行比较。
如果大于了变量中的值,就用该该变量记录较大值。
3,当所有的元素都比较完成,那么该变量中存储的就是数组中的最大值了。
步骤:
1,定义变量。初始化为数组中任意一个元素即可。
2,通过循环语句对数组进行遍历。
3,在变量过程中定义判断条件,如果遍历到的元素比变量中的元素大,就赋值给该变量;
需要定义一个功能来完成。以便提高复用性。
1,明确结果,数组中的最大元素 int。
2,未知内容:一个数组。int[]
代码如下:
另一种方式: 初始化为数组中任意一个角标
对给定数组进行排序:
(1)选择排序
(2)冒泡排序:
代码如下:
延伸:1.Arrays.sort(arr);ava中已经定义好的一种排序方式。开发中,要使用该句代码对数组排序。
2.对功能进行封装:int temp = arr[y];
arr[y] = arr[y+1];
arr[y+1] = temp;
public static void swap(int[] arr,int a,int b)
{
int temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}
5.对给定的数组进行反转。
{3,1,5,6,2} --->
{2,6,5,1,3}
6.数组的查找操作:
(1)获取key第一次出现在数组中的位置:
折半查找的两种方式:
第二种方式:
6.几种进制间的转换:
int[] arr = new int[3];//一维数组。
int[][] arr = new int[3][4];//定义了名称为arr的二维数组。二维数组中有3个一维数组。
每一个一维数组中有四个元素。
int[][] arr = new int[3][];
arr[0] = new int[3];
arr[1] = new int[1];
arr[2] = new int[2];
System.out.println(arr.length);//打印是二维数组的长度 3;
System.out.println(arr[0].length);//打印二维数组中第一个一维数组长度
二维数组练习
int[] x,y[];//x一维,y二维。int[] x;
int[] y[];
a.
x[0] = y;//error
b.
y[0] = x;//yes
c.
y[0][0] = x;//error
d.
x[0][0] = y;//error
e.
y[0][0] = x[0];//yes
f.
x=y;//error
自我总结:今天重点复习了数组的操作,对数组的冒泡排序和顺序排序进行了深入的代码分析。
难点在于对两种排序的代码不是很熟悉,久了容易忘,以后会不定时的复习数组,
总之,对数组有了一个更深入的认识。