Java学习笔记之数组

一:数组的基本概念

数组是一个容器,用来保存一组相同数据类型的数据。

声明数组的格式:

数据类型[] 数组名 = 初值;注意:这里的数据类型值得是数组中保存的数据的类型。


数组有3种声明方式:

方式一:

int[] array = new int[数组的长度];

方式二:

int[] array = new int[] {1,3,5,11};


方式三:

int[] array1 = {1,2,3,4,5};



数组在new时会在堆内存中开辟一块连续的内存空间




数组中常见的异常有ArrayIndexOutOfBoundsException(数组越界异常)和NullPointerException(空指针异常)

数组越界异常一般是数组下表超出了数组范围,空指针异常则是由于访问了一块不属于自己的内存空间。


二:对数组的基本操作

1、对数组的遍历


若要将数组转化为字符串输出,一般采用Arrays类中得toString方法。

2、数组元素的反转 

int[] array = {20,50};

switchValue(array);

public static void switchValue(int[] array) {

int temp = array[0];

array[0] = array[1];

array[1] = temp;

}

对未知长度的数组进行反转:

private static void changeArray(int[] array) {

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

int temp = array[i];

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

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

}

}


3、排序

冒泡排序:


for (int i = 0; i < array.length-1; i++) {

for (int j = 0; j < array.length-1-i; j++) {

// 内循环-1 防止数组越界

// 内循环-i 循环一次 确定一个数 每次都少比一次

if(array[j]>array[j+1]) {

int temp = array[j];

array[j] = array[j+1];

array[j+1] = temp;

}

}

}

选择排序:

for (int i = 0; i < array.length - 1; i++) {

for (int j = i+1; j < array.length; j++) {

// 用第一个数 和剩下的每一个数比较

if(array[i]>array[j]) {

int temp = array[i];

array[i] = array[j];

array[j] = temp;

}

}

}


4、折半查找:

int min = 0;

int max = array.length-1;

int mid = (min + max)/2;

while(array[mid] != key) {

// 判断 key和中间角标值来挪动最小角标或最大角标

if(key > array[mid]) {

min = mid + 1;

}

if(key < array[mid]) {

max = mid - 1;

}

// 每次循环都要有折半的操作

mid = (min + max)/2;

// 数组中没有这个数的时候

if(min > max) {

// 没有这个数 使用-1来表示

mid = -1;

break;// 跳出循环

}

}


三、二维数组

保存多个相同类型的一维数组。

声明方式:数据类型[][] 数组名 = 初值

声明方式一:

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

声明方式二:

int[][] array1 = new int[][]{{1,11,111},{2,22,222}};




四、补充

栈内存的特点:


两种传参方式的不同:











猜你喜欢

转载自blog.csdn.net/ande1922/article/details/80230538
今日推荐