Java基础入门day12

day12

数组

数组的扩容

第一种方式

创建数组的时候,必须要指定长度,因为数字在内存中是连续存放

一旦设置了数组的长度,其长度无法更改

这就牵扯数组的扩容

思路:

创建一个新的长度大于原数组的数组

将原数组的中的每一个元素依次复制到新数组中去

package com.saas;
​
public class Array01 {
​
 public static void main(String[] args) {
     int[] old = {12, 22, 11, 3443, 56, 1};
​
     System.out.println(old.length);
​
     old[3] = 33;
​
     for (int i = 0; i < old.length; i++) {
         int i1 = old[i];
         System.out.println(i1);
     }
​
     old[-1] = 66;
 }
}

数组长度一旦声明,则下标将会从0-数字长度减一

一旦你所访问的下标超出【0-length-1】则会出现数组下标索引越界异常

package com.saas;
​
public class Array02 {
​
 public static void main(String[] args) {
     int[] old = {12, 22, 11, 3443, 56, 1};
​
     System.out.println(old.length);
​
     old[3] = 33;
​
     for (int i = 0; i < old.length; i++) {
         int i1 = old[i];
         System.out.println(i1);
     }
​
     System.out.println("==================");
​
     int[] newArray = new int[10];
​
//        newArray[0] = 10;
​
     for (int i = 0; i < old.length; i++) {
         newArray[i] = old[i];
         System.out.println(newArray[i]);
     }
 }
}

声明一个新的长度更大的数组,将原数组中的每一个元素依次复制到新数组中

后面的空间可以继续使用

第二种方式

使用java写好的System类中的arraycopy方法完成数组内容的拷贝

package com.saas;
​
public class Array03 {
​
 public static void main(String[] args) {
     int[] oldArr = {12, 22, 11, 3443, 56, 1};
     int[] newArr = new int[10];
​
     /**
         * System.arraycopy()方法是java给我们提供的一个系统的数组拷贝功能方法
         *  里面包含五个参数:
         *      1.  源数组,要拷贝的数组
         *      2.  源数组的起始位置,从该位置开始拷贝
         *      3.  目标数组,要扩容之后的新数组
         *      4.  目标数组的起始位置,在新数组的该位置开始拷贝
         *      5.  要拷贝的元素个数
         *
         *      注意该方法可能会出现数据下标越界异常
         */
        System.arraycopy(oldArr, 0, newArr, 9, 6);
​
        for (int i = 0; i < newArr.length; i++) {
            int i1 = newArr[i];
            System.out.println(i1);
        }
    }
}
第三种方式

使用java写好的Arrays类中的copyOf方法完成数组内容的截取、复制和扩容

package com.saas;
​
import java.util.Arrays;
​
public class Array04 {
​
 public static void main(String[] args) {
     int[] oldArr = {12, 22, 11, 3443, 56, 1};
​
     /*
       Arrays类中有一个copyOf方法,可以很方便地实现数组的截取、复制和扩容
         该方法包含两个参数:
                1.  源数组
                2.  要拷贝的长度
                    如果长度小于源数组的长度,则实现截取功能
                    如果长度等于源数组的长度,则实现数组的拷贝
                    如果长度大于源数组的长度,则实现数组的扩容
         */
        int[] newArr = Arrays.copyOf(oldArr, 10);
​
        for (int i = 0; i < newArr.length; i++) {
            int i1 = newArr[i];
            System.out.println(i1);
        }
    }
}
  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值