数组(容器)
数组是一组数据类型相同的数据的组合,将这些数据统一的管理起来,数组本身是一个引用数据类型,数组内存储的类型可以是基本类型 也可以是引用类型。
数组的特点
- 数组本身是一个引用数据类型
- 数组是在堆内存中的一串连续的地址存在
- 数组在初始化时必须指定长度
- 堆内存的数组空间长度一旦确定 不能再次发生改变
- 栈内存的变量中存储的是数组的地址引用
- 数组内部存储的类型可以是基本的 也可以是引用
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.基本数据类型和引用数据类型在内存结构上的区别
所有的变量空间都存储在栈内存
变量空间可以存储基本数据类型 也可以存储引用数据类型
如果变量空间存储的是基本数据类型 存储的是值
一个变量的值改变 另一个不会跟着改变
如果变量空间存储的是引用数据类型 存储的是引用(地址)
一个变量地址对应的值改变 另一个跟着改变
练习
- 新建一个数组,把数组里的数取出来,再按照倒序的排列方式放进去
- 解析代码如下
public class We{
public static void main (String[] agrs){
int[] array = {1,2,3,4};
for(int i=0;i<array.length/2;i++){//控制交换的次数 数组长度的一半
int x = array[i];
array[i] = array[(array.length-1)-i];
array[(array.length-1)-i] = x;
}
for(int v:array){
System.out.println(v);
}
}
}
运行一下看看:
- 各位读者可以自己试着自己编写一些小程序
- 用程序实现一些功能
- 我们下期再见