数据结构第一节——线性表(数组)

什么是数组

概念

数组(Array),是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理。

特点

  1. 有序排列
  2. 自身是引用类型,
  3. Java中元素类型固定
  4. 内存中是连续存储,首地址
  5. 通过下标访问元素
  6. 查询和修改快,增删慢
  7. 初始化必须固定长度,不可修改

一维数组

一维数组的声明和初始化及访问

String[] names = new String[10];
names[0] = "fufan";
names[1] = "zhanghuihuan";
names[2] = "yukaiyi";
names[3] = "zhangyuqing";
names[4] = "fuyu";
names[5] = "wangpantuo";

System.out.println("names[4]:" + names[4]); 

复制代码

获取数组长度

String[] names = new String[10];
names[0] = "fufan";
names[1] = "zhanghuihuan";

System.out.println("names length:" + names.length); // 2

复制代码

数组遍历

两种方法

  1. for循环
  2. 增强for循环


String[] names = {"fufan","zhanghuihuan","fuyu","wangpantuo"};
/*System.out.println(names[0]);
System.out.println(names[1]);
System.out.println(names[2]);
System.out.println(names[3]);
System.out.println(names[4]);*/
 
// 方法1
for(int i = 0;i < names.length;i++){
    System.out.println(names[i]);
    
// 方法2 增强for循环
for (String name: names) {
    System.out.println(name);
}

复制代码

数组元素的默认初始化

  • 数组是引用类型,它的元素相当于类的成员变量,因此数组一经分配空间,其中的每个元素也被按照成员变量同样的方式被隐式初始化。

  • 对于基本数据类型而言,默认初始化值各有不同。

  • 对于引用数据类型而言,默认初始化值为null

数组元素类型 元素默认初始值
byte 0
short 0
int 0
long 0L
float 0.0F
double 0.0
char 0 或写为:’\u0000’(表现为空)
boolean false
引用类型 null

代码略

内存结构

JAVA的内存分配主要涉及到几个关键词,堆,栈,方法区,本地方法栈,寄存器。

  1. 通过java编译生成的class文件加载时进入的方法区
  2. main方法运行时进行的栈内存,定义的变量也存放在栈内存
  3. new出来的对象等存放在堆内存在。

具体存储结构如下2张图

image.png

image.png

地址引用

数组属于引用型变量,因此两个相同类型的数组且具有相同的引用,它们就有完全相同的元素。

二维数组

一般用的少,原理类似,这里不赘述

Java中对数组的封装————List

自己手动实现一个List,参考ArrayList源码

思考几个方面

  1. 成员变量
  2. 基本方法
  3. 扩容方法
  4. 增删改查方法

TODO 待实现

LeetCode 关于数组相关的算法题

TODO 待补充

总结

image.png

猜你喜欢

转载自juejin.im/post/7107028335519072287