1. 理解数组基本概念
什么是数组
数组:可以看成是
相同类型元素的一个集合
。在内存中是一段连续的空间。
1.
数组中存放的元素其类型相同
2.
数组的空间是连在一起的
3.
每个空间有自己的编号,其实位置的编号为
0
,即数组的下标
数组的创建及初始化
T[] 数组名 = new T[N];
T
:表示数组中存放元素的类型
T[]
:表示数组的类型
N
:表示数组的长度
int
[]
array1
=
new
int
[
10
];
//
创建一个可以容纳
10
个
int
类型元素的数组
double
[]
array2
=
new
double
[
5
];
//
创建一个可以容纳
5
个
double
类型元素的数组
String
[]
array3
=
new
double
[
3
];
//
创建一个可以容纳
3
个字符串元素的数组
数组的初始化
数组的初始化主要分为
动态初始化以及静态初始化
。下面直接用代码块以及注释给大家演示。
int[] a = new int[10];//动态初始化 int[] c; c=new int[10];//动态初始化的分步进行 int[] b = new int[]{2, 1, 2, 1};//静态初始化,注意{}中的数据类型要与[]前的一致 int[] f={1,12,2,1,};//静态初始化的省略格式 int[] d; d=new int[]{1,2,1,1};//静态初始化的分步进行 //int[] array3; //array3 = {1, 2, 3}; 错误 注意:静态初始化的省略格式不能分两步,报错 //如果不确定数组当中内容时,使用动态初始化,否则建议使用静态态初始化。
如果没有对数组进行初始化,数组中元素有其默认值
如果数组中存储元素类型为基类类型,默认值为基类类型对应的默认值,比如:
类型
默认值
byte 0
short 0
int 0
long 0
float 0.0f
double 0.0
char /u0000
boolean false
如果数组中存储元素类型为引用类型,默认值为
null
数组的使用
1.
数组是一段连续的内存空间,因此
支持随机访问,即通过下标访问快速访问数组中任意位置的元素
2.
下标从
0
开始,介于
[0, N
)之间不包含
N
,
N
为元素个数,不能越界,否则会报出下标越界异常。
遍历数组
所谓
"
遍历
"
是指将数组中的所有元素都访问一遍
,
访问是指对数组中的元素进行某种操作
,比如:打 印。
//首先用循环的方式进行遍历,数组名.length可以表示数组长度 for (int i = 0; i <b.length ; i++) { System.out.println(a[i]); } //或者可以使用foreach来进行遍历,foreach在遍历所有的元素时较为简便,但是不够灵活,例如你想打印除了最后一个其他的元素,它是办不到的, for (int x:b) { System.out.println(x); } System.out.println(f);//直接打印得不到想要的结果 //将数组转字符串,再进行打印 String s = Arrays.toString(f); System.out.println(s); //或者直接打印,道理相同 System.out.println((Arrays.toString(a)));
数组的复制
public class arraycopy {
public static void main(String[] args) {
int[] a={2,2,1,1,1,};
int[] b=a;
b[0]=10;
System.out.println(Arrays.toString(a));//b和a引用的是同一个数组 因此b修改空间中内容之后,a也可以看到修改的结果
a[0]=1;
b=Arrays.copyOf(a,a.length);
System.out.println("a="+Arrays.toString(b));//使用Arrays中copyOf方法完成数组的拷贝: copyOf方法在进行数组拷贝时,创建了一个新的数组 a和b引用的不是同一个数组
a[0]=3;
System.out.println("a="+Arrays.toString(a));
System.out.println("b="+Arrays.toString(b));//此时a修改其引用数组中内容时,对b没有任何影响
int[]c=Arrays.copyOfRange(a,2,4);
System.out.println("c="+Arrays.toString(c));//部分拷贝,使用Arrays.copyOfRange
}
}
执行结果
[10, 2, 1, 1, 1]
a=[1, 2, 1, 1, 1]
a=[3, 2, 1, 1, 1]
b=[1, 2, 1, 1, 1]
c=[1, 1]