Java基础教程——数组

数组

Java数组:用于存储同一种数据类型的多个数据。

Java数组本身是一种数据类型——引用类型。

类(String、Scanner等大写字母开头的类型)也属于引用类型,int、double等基本类型不是引用类型。

数组的定义

// C语言风格
int a[] = { 1, 2, 3 };

// Java风格(面向对象风格,推荐!)
int[] b = { 4, 5, 6 };

静态初始化和动态初始化

也就是“手动赋值”、“系统赋值”:

public class 静态初始化和动态初始化 {
	public static void main(String[] args) {
		int[] _静态初始化 = new int[] { 1, 2, 3 };
		int[] _静态初始化_简化 = { 1, 2, 3 };
		char[] _动态初始化 = new char[3];
	}
}

动态初始化的场合,系统赋什么值?

大分类 小分类 系统赋值
基本类型 整数类型 0
基本类型 浮点类型 0 .0
基本类型 字符类型 '\u0000'
基本类型 布尔类型 FALSE
引用类型 类、接口、数组 null

遍历数组

数组通过“索引(index)”访问,从0开始,最大为“数组长度-1”。

int[] c = new int[5];

// ↓↓↓写入
for (int i = 0; i < c.length; i++) {
	c[i] = i * 2;
}

// ↓↓↓输出
for (int i = 0; i < c.length; i++) {
	System.out.println(c[i]);
}

Java 5之后,加入了“foreach循环”,代码更简洁。

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

// foreach循环遍历数组:只读
for (int n : d) {
	System.out.println(n);
}

该循环体中,对n赋值是可以的,但只是对临时变量赋值,无法改写数组中的实际值。

数组的应用:冒泡排序

核心思想:

  • 一个数和其它数比较(循环)

  • 每个数都要做这种比较(再一层循环)


虎老狮口诀
冒泡排序三步走:

循环、

交换、

回一手

(回一手是在内层循环-i,主要是为了减少无畏的比较次数,提高效率,不回也行)

public class BubbleSort {
	public static void main(String[] args) {
		int[] arr = { 1, 2, 3, 4, 5 };
		int temp;
		for (int i = 0; i < arr.length; i++) {
			// 注意,内存循环要-1,否则比较时[j+1]会越界
			for (int j = 0; j < arr.length - 1 - i; j++) {
				if (arr[j] < arr[j + 1]) {
					temp = arr[j];
					arr[j] = arr[j + 1];
					arr[j + 1] = temp;
				}
			}
		}
		for (int n : arr) {
			System.out.println(n);
		}
	}
}

Arrays类

Arrays类提供了大量的静态方法,实现数组的常见操作。

import java.util.Arrays;
public class TestArrays类 {
	public static void main(String[] args) {
		int[] arr = { 2, 1, 5, 4, 3 };
		// Arrays.sort(数组):升序排列
		Arrays.sort(arr);
		// *Java 8的并行排序,支持多核CPU,更快
		Arrays.parallelSort(arr);
		// Arrays.toString(数组):数组转为字符串
		String s = Arrays.toString(arr);
		System.out.println("排序后:" + s);
	}
}
posted @ 2019-07-12 23:54  虎老狮  阅读(569)  评论(0编辑  收藏  举报