数组
数组是用来存放多个相同类型的数据
数组的语法格式
数组类型[] 数组名=new 数组类型[数组的长度]; |
数组的声明有两种形式:
数组类型[] 数组名;
数组类型 数组名[];
Int[] is; int is[]; |
数组的创建:
//数组的创建 创建一个长度为5的整型的数组 int[]ins = newint[4]; floatflas[] =newfloat[10]; |
数组是用来存储一组相同数据类型数据的数据结构。
数组也是一种引用类型。
数组的元素可以是简单类型的数据,也可以是引用类型的数据。
数组里面存放的数据可以使类的对象或者接口对象或者是数组。
数组的声明不能指定数组的长度,而需要在数组的创建的时候指定数组的长度
int[]is; int is2[]; String[] str; String strs[]; |
String[] s =new String[3];
创建完这个数组之后,那么在内存中就会给这个数组分配存储空间
栈 |
堆 |
S |
S[0]=null S[1]=null S[2]=null |
数组的赋值分两种:
静态赋值:
动态赋值:
如果创建的是一个引用类型的数组,在栈中存放的是数组对象
栈 |
堆 |
Stt
St1(地址 1) St2(地址 2) |
Stt[0]=st1 Stt[1]=st2l |
Stt表示的是Student类的数组,数组中包含St1和St2
//引用数据类型数组的创建(类、接口、数组) //如果是创建一个类的数组 Student[] sts = new Student[5]; Student st1 = new Student(); Student st2 = new Student(); Student[] stt = {st1,st2}; |
数组中元素的引用,数组索引从0开始到数组的长度减1
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5 at com.softeem.array.Array02.main(Array02.java:21)
这属于数组下标越界异常 |
数组的遍历
//采用foreach语句对数组中的值进行输出 // for(数组类型 自定义名称:数组名){} //自定义名称在这里就代表数组的每一个元素
for(String s:str){ System.out.println(s); }
int[] iii = {12,23,34,456}; for(int u:iii){ System.out.println(u); |
数组拷贝
//数组的拷贝 //将一个数组中的值拷贝到另一个数组中去 //1:两个数组必须是相同的类型 //2:目的数组一定要大于或者等于原数组的长度,否则会丢失数据 //3:如果目的数组长度大于原数组的长度,那么超出的范围以数组类型的默认值填充
//数组的拷贝需要使用system类中的拷贝数组的方法
String[] strs = {"light","road","floor","paper"}; String[] copystrs = new String[4]; // src - 源数组。 // srcPos - 源数组中的起始位置。 // dest - 目标数组。 // destPos - 目标数据中的起始位置。 // length - 要复制的数组元素的数量。
System.arraycopy(strs, 0, copystrs, 0, 4); //输出copystrs数组里面的值 for(String sss:copystrs){ System.out.println(sss); } |
多维数组
int[][]a = {{1,2},{10,2},{20,1}}
//多维数组 String[][] hh = null; String gg[][] = {{"1","2","3"},{"4","5","6"},{"a","b"}};
for(String[] f:gg){ for(String ss:f){ System.out.println(ss); } |