飞道的博客

JAVA——从基础学起(四)

455人阅读  评论(0)

四 数组

4.1 一维数组的创建和使用

4.1.1 创建一维数组

数组作为对象允许使用new关键字进行内存分配。一维数组的创建有两种形式
(1)先声明,再用new运算符进行内存分配
声明数组:int a []int [] a
分配空间:a = new int[n]
在使用new关键字为数组分配空间时,数值型数组默认初始值为0(.0)
(2)声明同时分配内存
int a[] = new int [n]

4.1.2 初始化一维数组

第一种初始化方式:int a[] = new int []{1,2,3,4,5}
第二种初始化方式:int a[] = {1,2,3,4,5}

4.3 二维数组的创建和使用

4.3.1 二维数组的创建

(1)先声明,再分配空间

  • 声明数组:int a[][]int[][] a
  • 分配空间:
    1.直接为每一维分配内存空间:a = new int [m][n]
    2.分别为每一维分配内存:
    a = new int[2][]
    a[0] = new int[2]
    a[1] = new int[5]

(2)声明的同时为数组分配内存int [][] a = new int [m][n]

4.3.2 二维数组初始化

如:int arr[][] = new int [][]{{1,2},{2,3,4}}
如:int arr[][] = {{1,2,3,4,5},{2,3,4}}

4.4 数组的基本操作

java.util包中的Arrays类中包含了用来操作数组的许多方法,下面介绍几种基本操作

4.4.1 遍历数组

使用for循环对数组进行遍历,使用数组的length()方法得到数组的长度。

public class TEST {
	public static void main(String[] args) {
		int a[] = new int[] {1,2,3,4,5,6,7,8,9,4};
		for (int i = 0; i < a.length; i++) {
			System.out.println(a[i]);	
		}	
	}
}

使用foreach遍历数组

public class TEST {
	public static void main(String[] args) {
		int a[] = new int[] {1,2,3,4,5,6,7,8,9,4};
		for (int i : a) {
			System.out.println(i);
		}
	}
}
4.4.2 填充替换数组元素

使用Arrays类的fill()方法对数组进行填充替换.该方法将指定的int值value分配给int型数组a[]中指定范围内的每个元素。
fill(int[] a, int value)
fill(int[] a,int fromIndex ,int toIndex,int value)

4.4.3 对数组进行排序

使用Arrays中的静态sort()方法可以实现对数组的升序排序
Arrays.sort(object),其中object为进行排序的数组名

4.4.4 复制数组

Arrays类的copyOf()方法与copyOfRange()方法可以实现对数组的赋值Arrays.copyOf(Object[] arr , int newlength),其中newlength指复制后新数组的长度,如果newlength大于arr.length,则用0或null填充。
Arrays.copyOfRange(Object[] arr , int fromIndex , int toIndex)
注意:toIndex可以超出arr的长度,但是不包括索引值为toIndex的元素。

4.4.5 数组查询

Arrays类的binarySearch()方法,可以使用二分搜索法来搜索指定数组获取指定对象。binarySearch()有两种重载类型
(1)binarySearch(Object[] a , Object key)如果对象key包含在数组中,则返回搜索值的索引,否则返回-1或“-”(插入点,是搜索键将要插入数组的那一点)。

import java.util.Arrays;

public class TEST {
	public static void main(String[] args) {
		int a[] = new int[] {4,5,1,2};
		Arrays.sort(a);
		int i =Arrays.binarySearch(a, 3);
		System.out.println(i);//输出结果为-3
	}
}

如在数组a中搜索元素3,因为数组中不存在元素3,因此返回的索引值为“-”,对数组进行排序后3应该处于数组的第三位,因此返回的索引值index应为-3。如果不对数组进行排序,则返回的索引值不能确定。

(2)binarySearch(Object[] a ,int fromUbdex , int toIndex , Object key)该方法在指定范围内检索某一元素。范围包含索引值fromIndex,不包括toIndex

6.5 数组排序算法

6.5.1 冒泡排序

冒泡排序算法是非常经典的数组排序算法,它总是将小数往前放,大数往后放,类似水中气泡上升。
基本思想是比较相邻的元素值,如果满足条件就交换元素值,将大数向后移,小数向前移。

6.5.2 直接选择排序

直接选择排序属于选择排序的一种,排序速度比冒泡排序快一些。
它不是相邻元素进行排序,而是把满足条件的元素和指定位置的元素进行比较交换,这样排序好的位置就逐渐扩大,需要的排序次数也少很多。

6.5.3 反转排序

以相反的顺序将原有的数组进行排序。


转载:https://blog.csdn.net/WOD_MAAYA/article/details/106179351
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场