Java进阶-一维数组

  1. 数组是一种引用类型
  2. 是一种简单的数据结构,线性的结构
  3. 是一个容器,可以用来存储其他元素(任意数据类型)
  4. 数组分为:一维数组、二维数组、三维数组…多维数组
  5. 存储的元素类型是统一的
  6. 长度不可改变:一旦创建长度是不可变的,固定的
  7. 数组拿首元素的内存地址作为数组对象的内存地址
  8. 优点:查找效率高
    • 数组中存储元素的类型是统一的,每一个元素在内存中所占的空间大小是相同的;
    • 知道数组的首元素的内存地址;
    • 要查找的元素只要知道下标就可以快速的计算出偏移量;
    • 通过首元素内存地址加上偏移量快速计算出要查找元素的内存地址;
    • 通过内存地址快速定位该元素
  9. 缺点:随意的增删元素效率比较低
    • 当增加元素时,为了保证数组中元素在空间存储是有序的,所以被添加元素位置后面的所有元素都要向后移动
    • 删除元素也是,所有元素都要向前移动
  10. 初始化一维数组的方式:
    • 静态初始化
    • 动态初始化

静态初始化

数据类型[] 变量名 = {元素1, 元素2...}

1
2
3
4
5
6
7
8
int[] a1 = {100, 200, 300}; // 也可以 int a1[] = {100, 200, 300};
boolean[] b1 = {true, false};
String[] strs = {"an", "bn"};
char[] c2 = {'a', 'b'};

Object o1 = new Object();
Object o2 = new Object();
Object[] objs = {o1, o2};

动态初始化

会先在堆内存中分配这个数组,并且数组中每一个元素都采用默认值

1
int[] a1 = new int[4];

方法调用时的传递参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class ArrayTest01 {
public static void main(String[] args) {
// 第一种:
int[] a = { 100, 200, 300 };
m1(a);
// 第二种
m1(new int[] { 100, 200, 300 });
}

private static void m1(int[] a) {
for (int i = 0; i < a.length; i++) {
System.out.println(a[i]);
}
}
}