JAVA SE回顾------数组

来源:互联网 发布:广电好还是网络电视好 编辑:程序博客网 时间:2024/05/22 05:34

数组的定义:

是存储同一类型数据的集合。

定义数组的两种方式:

1.动态初始化:在定义数组时只定义数组长度,由系统自动赋予数组初始值。

格式:数据类型 [] 数组名 = new 数据类型[元素个数];

例如:int [] arr = new int[3]; 这样就创建了一个有三个元素的数组

2.静态初始化:在定义数组时就对数组进行赋值。

格式1:数据类型[] 数组名 = new 数据类型[]{元素1,元素2,……};

如:int [] arr = new int []{1,5,6,9};

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

例如: int [] arr = {1,5,9,8};


数组元素的查询:

格式:数组名[索引值];  索引值从0开始,为第一个数组元素,以此类推。

例如:arr[2];


数组中的常见异常:

ArrayIndexOutOfBoundsException 数组越界异常,常见于查询数组某一元素的索引值大于该数组的索 引。

NullPointerException 空指针异常,变量没有指向一个有效的数组对象,而指向null。常见于定义

一个数组后又将数组变量重置为null。


JVM的内存划分:

操作系统进行管理计算机的各种硬件,JVM请求操作系统分配内存,操作系统从内存中分配一部分。


JVM将系统分配的内存划分为5个区域;

寄存器:内存和cpu之间,用来操作cpu

本地方法栈:虚拟机调用系统中的功能


方法和数据方法区:程序运行时期,.class文件进入的地方

栈内存:所有方法运行时进入的内存

堆内存:存储对象


一个java文件被编译成class文件,进入方法区运行,main等方法进入栈内存运行(main压栈运行),如果有创建对象的语句,

就会在堆内存中开辟空间存放对象


数组创建在内存中的分配情况:


arr这个变量存储的是地址,每次运行之后,jvm就会自动回收内存,导致运行相同代码得到的地址值可能不同。


数组的遍历:

代码:

for(i=0;i<arr.length;i++){     System.out.print(arr[i]+" ");}


二维数组:

二维数组可以说是数组的数组,是包含数组的数组。


定义格式:

数据类型[][] 数组名 = new 数据类型[二维数组长度][一维数组长度];

int[][] arr = new int [4][5];  表示建立一个名为arr的二维数组,长度为4,其中每个一维数组的长度为5.

也可以在定义时不注明每个一维数组长度,这时每个一维数组的长度可以不相同。


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

int[][] arr={{12,3,32},{1,3,31,4},{2,4,5,6},{3,7,5}}; 


二维数组的查询:

arr[2][1];  这表明查询二维数组的第三个数组的第二个元素。(与一维数组相同,下标索引都是从0开始)


二维数组的遍历:

for(i=0;i<arr.length;i++){    for(j=0;j<arr[i].length;j++){         System.out.print(arr[i][j]+" ");    }}


数组的排序:
1.冒泡排序
第一个元素与第二个元素相比较,大的放在后面。然后第二个元素与第三个相比较……直到最大的元素放到最后一位,第一次冒泡结束。第二次也是这样直到次最大的数放到倒数第二位……直到结束。
代码实现:
int num = 0;//外层循环用来控制数组循环的圈数for (int i = 0;  i < arr.length-1; i++) {
//length-i-1就是第i次比较,每次比较完毕总是打的在后面所以下一次就不必比较了。for (int j = 0; j < arr.length-i-1; j++) {
//将大的元素放后面if(arr[j]>arr[j+1]){num = arr[j];arr[j] = arr[j+1];arr[j+1] = num;}}}
2.选择排序
第一个元素与第二个元素比较,小的放在前面,然后第一个与第三个相比较……第一个与最后一个相比较,小的放前面,第一次选择结束,第一位是最小的。第二次就是第二位与第三位比较……直到结束
代码实现:
int num = 0;//外层循环用来控制数组循环的圈数for (int i = 0;  i < arr.length-1; i++) {for (int j = i+1; j < arr.length; j++) {//将大的元素放后面if(arr[i]>arr[j]){num = arr[i];arr[i] = arr[j];arr[j] = num;}}}



原创粉丝点击