数组(容器)
数组是一组数据类型相同的数据组合。统一管理这些数据。数组本身是一种引用数据类型,数组中存储的类型可以是基本类型 也可以是引用类型。
- 数组本身就是一种引用数据类型
- 数组是堆内存中的一系列连续地址
- 数组初始化时必须指定长度
- 一旦确定了堆内存的数组空间长度 不能再改变了
- 存储在堆栈内存变量中的数组地址引用
- 数组内存的类型可以是基本的 也可引用
资料类型[] 数组名字;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引用数据默认值--- nullString[]
3.数组元素的访问
存值/取值位置通过元素在数组中的位置访问---->index索引索引具有取值范围 [从0开始-数组长度-1]如果数组索引超出上述范围,运行时会出现异常 ArrayIndexOutOfBoundsException
4.数组元素的遍历(轮询)
通过循环访问数组的每个元素for( ; ; ){}JDK1.5版本之后 新的特性 增强for循环 加强for forEachfor(自定义的变量(接收数组中的每个元素) : 数组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); } }}
操作一下看:
- 读者可以试着自己写一些小程序
- 使用程序实现某些功能
- 下次再见