3:java 数组

来源:互联网 发布:知乎贵族学校 编辑:程序博客网 时间:2024/05/14 02:59

 1 数组
  a 数组的声明:
    int[] ary;
    int ary[]; //不推荐的写法!
  b 数组的初始化:
   1 动态初始化: 必须指明数组的长度
    int[] ary = new int[10];   
    int[] ary = new int[]{3,1,4,1,5,9}; 
   2 静态初始化: 只能在声明数组时候使用!
    int[] ary = {3,1,4,1,5,9};    
    //ary = {2,7,1,8};//编译错误
    ary = new int[]{2,7,1,8}; 
   3 数组成员自动初始化为"零"值.
     "零"值: 0, 0.0, '\u0000', false, null
  c 数组的访问
   1 使用ary.length 属性可以获取数组的长度
   2 数组的下标(index)从0开始, 最大是length-1
     一共length个元素.
   3 可以使用下标访问指定的元素:
    int a = ary[2];//读取
    ary[2] = 8;//写入
   4 如果越界访问会出现异常(错误)
     ArrayIndexOutOfBoundsException
   
案例练习
  a 等本金还款
    借款本金: 18万
    利息: 5.6% (年利息)
    还款期数(月): 60个月(5年)
   
    每月归还本金: 180000/60=3000
    第1月还利息: (180000-3000*0)*(5.6% / 12)=840
    第2月还利息: (180000-3000*1)*(5.6% / 12)=826
    //...
    第1月  3000  840  3840
    第2月  3000  826  3826
 //...
 
 i = 0~59
 lixi[60]
 
2 数组的扩展问题
  1 Java数组的大小是固定的
  2 利用数组复制到方法可以变通的实现数组扩展
  3 System.arraycopy() 可以复制数组
  4 Arrays.copyOf() 可以简便的创建数组副本
  5 创建数组副本的同时将数组长度增加就变通的实现了
    数组的扩展

案例: 统计一个字符在字符串中的所有位置.

 

 

    int[] ary = new int[]{1,2,4,5};
    int[] ary2 = ary;//ary2 和 ary是同一个数组
    ary[1] = 3;
    System.out.println(ary2[1]);//3
   
    //数组的复制 ary -> ary3
    int[] ary3 = new int[ary.length];
    for(int i=0; i<ary.length; i++){
      ary3[i] = ary[i];
    }
    //long l = System.currentTimeMillis();
    System.out.println(ary3[2]);//4
//  数组的复制 ary->ary4
    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;

 

0 0