数组类型
- 概述: 数组是编程语言中最常见的一种数据结构,可用于存储多个数据,每个数组元素存放一个数据,通常可以通过数组元素的索引来访问数组元素。
- 数组特点
- 数组中可以存储任何数据类型,但数组中的的变量类型要一致。
- 数组中的元素是连续的。
- 数组初始化完成后,数组在内存中所占的空间将被固定下来,因此数组的长度是不可变的
- 一维数组
-
定义格式
- ① 数组类型[] 数组名(推荐使用这种定义格式)
- ②数组类型 数组名[]
-
数组的初始化
-
Java中的数组必须先初始化,才能使用;初始化,就是为数组中的元素分配空间,并为每个元素赋初值
-
静态初始化
- 初始化时,指定每个元素的初始值,由系统决定数组长度(推荐使用)
- 格式:数据类型[] 数组名=new 数据类型[] {元素1,元素2… …}
- 简化格式:数据类型[] 数组名={元素1,元素2… …}
- 注意:不要同时动态和静态初始化,也就是说,不要初始化数组时既指定数组的长度,又为每个元素分配初始值
- 比如:int[] arr=new int[3]{1,2,3} 这种方式就是错误的
-
动态初始化
- 初始化时,只指定数组的长度,由系统为数组分配初始值
- 格式:数据类型[] 数组名=new 数据类型[数组长度]
- 动态初始化系统默认数组每个元素的初始值
- byte short int long型数组:0
- float double型数组:0.0
- char型数组:‘\u0000’
- 引用类型数组:null
- 初始化时,只指定数组的长度,由系统为数组分配初始值
-
-
操作数组
- 首先了解一下数组的缺陷
- ①数组的长度一经确定就不能改变
- ②同意数组中的元素数据类型必须一致
- 数组缺陷的解决方法
- ①使用System下的arrayCopy()方法,拷贝数组,可以实现扩容
- public static void arrayCopy(Object src,int srcPos,Object dest,int destPos,int length)
- src:源数组,即要被复制的数组
- srcPos:源数组要被复制的起始位置,参数是开始复制的下标
- dest:目的数组,即将源数组复制放入的数组
- destPos:目的数组放置的起始位置
- length:复制的长度
- public static void arrayCopy(Object src,int srcPos,Object dest,int destPos,int length)
- ②Object类型数组可以存放任意类型数据(Object是所有类的直接或间接父类)
- ①使用System下的arrayCopy()方法,拷贝数组,可以实现扩容
- 使用数组
-
Java语言的数组索引是从0开始的,第一个元素的索引为0,最后一个元素的索引为数组长度减一
System.out.println(objArr[1]); //输出数组objArr的第二个元素
-
所有数组都提供一个length属性,通过这个属性可以访问到数组的长度,所以可以利用length属性使用循环遍历数组
for(int i=0;i<objArr.length;k++) System.out.println(objArr[i]);
-
Java5以后,Java提供了一种更加简单的循环:foreach循环,使用foreach循环遍历数组和集合元素时,无需获得数组和集合长度,也无需根据索引来访问数组元素和集合元素,foreach循环自动遍历数组和集合的每个元素
- 语法格式
for(type variableName :array|collection) //variableName自动得带访问每个元素
- 注意:使用foreach循环迭代数组元素时,并不能改变数组元素的值,因此不要对foreach的循环变量进行赋值
-
- 首先了解一下数组的缺陷
-
二维数组
- 二维数组其实就是一个元素为一维数组的数组
- 定义格式:
- ①数据类型[][] 变量名=new数据类型[m][n];(推荐)
m表示这个二维数组有多少个一维数组
n表示给一个一维数组的元素个数 - ②数据类型[][] 变量名=new 数据类型[m][];
m表示这个二维数组有多少个一维数组
没有直接给出一维数组的元素个数,可以动态的给出
- ③数据类型[][] 变量名=new 数据类型[][]{{元素… …},{元素… …}… …}
简化版格式:
数据类型[][] 变量名={{元素… …},{元素… …}… …}
- ①数据类型[][] 变量名=new数据类型[m][n];(推荐)
- 注意:
1.以下格式也可以表示二维数组:
a.数据类型 数组名[][]=new 数据类型[m][n];
b.数据类型[] 数组名[]=new 数据类型[m][n];
2.注意下面定义的区别:
int [] x;//一维数组
int [] y[];//二维数组
int [] x,y[];//一维数组和二维数组合并写在一条语句
-