数组
数组是用来存放多个相同类型的数据
数组的语法格式
数组类型[] 数组名=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);
 }