数组的声明
int[] ary;
数组的初始化
1、动态初始化:必须指明数组的长度
int[] ary = new int[10];
int[] ary = new int[]{1,2,3,1,5,6};
2、静态初始化:只能在声明数据时使用
int[] ary = {1,2,3,4,5,6,5};
//ary = {1,2,3,4,61,2};//错误
ary = new int[]{1,2,45,5};
3、数组成员自动初始化为“零”;
数组的长度
ary.length;
int a = ary[2];//读取
ary[2] = 8;//赋值

数组的扩增问题
1、java数组的大小是固定的;
2、利用数组复制的方法可以变通实现数组的扩增;
数组的复制
System.arraycopy(被复制数组,开始位置,复制数组,开始位置,复制长度);
Arrays.copyOf(被复制的数组,数组的长度);
示例:

public static void main(String[] args) {
  int[] ary = new int[] { 1, 2, 3, 4, 5 };
  int[] ary2 = ary;//ary和ary2是同一个数组
  ary[1] = 3;
  //System.out.println(ary2[1]);
  //数组的复制
  int[] ary3 = new int[ary.length];
  for(int i=0;i<ary.length;i++){
   ary3[i] = ary[i];
   //System.out.print(ary[i]+"\t");
  }
  int[] ary4 = new int[ary.length];
  System.arraycopy(ary,0,ary4,0,ary.length);
  //数组的动态扩增
  int[] ary5 = new int[ary.length+1];
  System.arraycopy(ary, 0, ary5, 0, ary.length);
  ary = ary5;//数组的动态扩增
  //System.out.println(ary.length);
   ary = Arrays.copyOf(ary,ary.length+1);
  
  String str = "今天学习数组和数组的动态扩增";
  //统计指定文字出现的所有位置
  char c = '数';
  int[] loc = {};
  for(int i=0;i<str.length();i++){
   char ch = str.charAt(i);
   if(ch==c){
    loc = Arrays.copyOf(loc,loc.length+1);
    loc[loc.length-1] = i;
   }
  }
  for(int i=0;i<loc.length;i++){
   System.out.println(loc[i]);
  }
 }