【读书笔记】疯狂java讲义学习(四)—— 数组

一、java数组的特点

1、一个数组中只能存储一种数据类型的数据。

2、数组初始化完成后,占用空间固定,长度不变(清空数组数据,所占的空间依然被保留)

 

二、数组的定义

两种方法定义数组:

type[] arrayName; /* 推荐 */
type arrayName[]

注意:定义数组时不能指定数组的长度。

 

三、数组的初始化

两种初始化方法:

1、静态初始化:显式指定数组元素初始值,由系统决定长度。

2、动态初始化:只指定数组长度,系统分配初始值。

3.1静态初始化

/* 格式语法 */
arrayName = new type[]{e1, e2, e3, ...}


/* 定义int类型数组intArr */
int[] intArr;

/* 静态初始化,指定元素初始值,不指定长度 */
intArr = new int[]{1, 2, 3, 4};

/* 定义Object数组类型变量objArr */
Object[] objArr;

/* 数组元素是定义数组时数组元素类型的子类 */
objArr = new String[] {"aaa", "bbb"};

/* 静态初始化 */
Object[] objArr2;
objArr2 = new Object[] {"aaa", "bbb"};

/* 简化初始化,只用花括号 */
intArr = {1, 2, 3, 4};

 

3.2动态初始化

/* 语法 */
arrayName = new type[length];

/* 示例 */
int[] prices = new int[5];
Object[] books = new String[4];

系统分配的初始值:

  • 整数类型(byte, short, int, long): 0
  • 浮点类型(float, double): 0.0
  • 字符(char): ‘/u0000’
  • 布尔(boolean): false
  • 引用类型(类、接口、数组): null

 

四、数组的使用

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

/* 通过索引访问 */
System.out.println(a[1])   // 输出2

/* 获取数组长度 */
arr.length    // 5

/* 数组遍历 */
for (int i = 0; i < arr.length; i++) {
    System.out.println(arr[i]);
}

/*
foreach遍历

语法格式:
for (type variableName: array | collection) {
	//variableName 自动迭代访问每个元素
}*/

for(int item: arr) {
    System.out.println(item);  // 1 2 3 4 5
}

 

五、数组的工具类

import java.util.Arrays

/* 二分法查找key元素在a数组中的索引。如果不包含key,返回负数。要求a已经按升序排序 */
int binarySearch(type[] a, type key)

/* 在fromIndex到toIndex中,搜索key,条件同上 */
int binarySearch(type[] a, int fromIndex, int toIndex, type key)

/* 复制数组, newLength长度小于原长度,则truncate */
type copyOf(type[] original, int newLength)

/* 复制from到to的数组 */
type copyOfRange(type[] original, int from, int to)

/*a和a2的长度相等,且数组元素一一相等,返回true*/
boolean equals(type[] a, type[] a2)

/* 将a数组所有元素赋值为val */
void fill(type[] a, type val);
void fill(type[] a, int fromIndex, int toIndex)

/* 排序 */
void sort(type[] a)
void sort(type[] a, int fromIndex, int toIndex)

/* 将数组转换成字符串,逗号分隔 */
String toString(type[] a)

 

转载于:https://my.oschina.net/holton/blog/823493