# 数组(容器)
数组是一组数据类型相同的数据的组合,将这些数据统一的管理起来
数组本身是一个引用数据类型,数组内存储的类型可以是基本类型 也可以是引用类型
数组的特点
1.数组本身是一个引用数据类型
2.数组是在堆内存中的一串连续的地址存在
3.数组在初始化时必须指定长度
4.堆内存的数组空间长度一旦确定 不能再次发生改变
5.栈内存的变量中存储的是数组的地址引用
6.数组内部存储的类型可以是基本的 也可以是引用
## 1.数组的定义(声明)
数据类型[] 数组名字;
int[] x;
char[] y;
boolean[] z;
String[] m;
## 2.数组的赋值(初始化)
静态初始化 有长度 有元素
int[] array = {10,20,30,40,50};
int[] array = new int[]{10,20,30};
动态初始化 有长度 没有元素(不是真的没有 默认值)
int[] array = new int[5];
整数默认值---0
浮点数默认值---0.0
字符型默认值--- 0---char 97-a 65-A 48-'0'
布尔型默认值--- false
引用数据默认值--- null String[]
## 3.数组元素的访问
通过元素在数组中的位置来访问
存值/取值
位置---->index索引
索引是有取值范围 [从0开始-----数组长度-1]
如果数组的索引超出了上述范围
会出现一个运行时异常 ArrayIndexOutOfBoundsException
## 4.数组元素的遍历(轮询)
通过循环的方式访问数组的每一个元素
for( ; ; ){
}
JDK1.5版本之后 新的特性 增强for循环 加强for forEach
for(自己定义的变量(接收数组内每一个元素) : 遍历的数组array){
}
正常的for循环以及加强的for循环都需要非常熟练
1.正常的for 有三个必要条件 index索引 找到某一个元素的位置
可以通过index直接访问数组的某一个位置 存值 取值都可以
不好在于写法相对来说比较麻烦
2.增强的for 有两个条件 用来取值的变量 用来遍历的数组 没有index索引
好处写法相对比较容易
不好只能取值 不能存值
没有index索引 找不到元素到底是哪一个
## 5.基本数据类型和引用数据类型在内存结构上的区别
所有的变量空间都存储在栈内存
变量空间可以存储基本数据类型 也可以存储引用数据类型
如果变量空间存储的是基本数据类型 存储的是值
一个变量的值改变 另一个不会跟着改变
如果变量空间存储的是引用数据类型 存储的是引用(地址)
一个变量地址对应的值改变 另一个跟着改变
## 练习
- 新建一个数组,把数组里的数取出来,再按照倒序的排列方式放进去
- 解析代码如下:
publicclassWe{ publicstaticvoidmain (String[] agrs){ int[] array= {1,2,3,4}; for(inti=0;i<array.length/2;i++){//控制交换的次数 数组长度的一半intx=array[i]; array[i] =array[(array.length-1)-i]; array[(array.length-1)-i] =x; } for(intv:array){ System.out.println(v); } } }
- 运行一下看看:
- 各位读者可以自己试着自己编写一些小程序
- 用程序实现一些功能
- 我们下期再见