第十六章 数组

一、数组

1、数组的优点和缺点,并且要理解为什么。

第一:空间存储上内存地址是连续的,每个元素占用的空间大小相同。
第二:知道首元素的内存地址,通过下标可以计算出偏移量。通过一个数学表达式,就可以快速计算出某个下标位置上元素的内存地址,直接通过内存地址定位,效率非常高。

优点:检索效率高。
缺点:随机增删效率较低,数组无法存储大数据量。
注意:数组最后一个元素的增删效率不受影响。

2、一维数组的初始化和遍历

1)静态初始化:

int[] arr = {1,2,3,4};
Object[] objs = {new Object(), new Object(), new Object()};

2)动态初始化:

int[] arr = new int[4]; // 4个长度,每个元素默认值0
Object[] objs = new Object[4]; // 4个长度,每个元素默认值null

3)一维数组的遍历

for(int i = 0; i < arr.length; i++){
        System.out.println(arr[i]);
}

注意:length是属性不是方法,length为当前数组的总长度。

3、二维数组的初始化和遍历

1)静态初始化:

int[][] arr = {
        {1,2,34},
        {54,4,34,3},
        {2,34,4,5}
};

Object[][] arr = {
        {new Object(),new Object()},
        {new Object(),new Object()},
        {new Object(),new Object(),new Object()}
};

2)动态初始化:

int[][] arr = new int[3][4];
Object[][] arr = new Object[4][4];
Animal[][] arr = new Animal[3][4];
// Person类型数组,里面可以存储Person类型对象,以及Person类型的子类型都可以。
Person[][] arr = new Person[2][2];
....

3)二维数组的遍历

for(int i = 0; i < arr.length; i++){ // 外层for循环负责遍历外面的一维数组。
        // 里面这个for循环负责遍历二维数组里面的一维数组。
        for(int j = 0; j < arr[i].length; j++){
                System.out.print(arr[i][j]);
        }
        // 换行。
        System.out.println();
}

4、main方法上“String[] args”参数的使用

非重点,了解一下,以后一般都是有界面的,用户可以在界面上输入用户名和密码等参数信息。

5、数组的拷贝:System.arraycopy()方法的使用

arraycopy(Object src,  int srcPos, Object dest, int destPos, int length);

srcs:原数组;

srcPos:从原数组哪个下标开始;

dest:目标数组;

destPos:从目标数组哪个下标开始;

length:从原数组拷贝几个元素到目标数组;

数组有一个特点:长度一旦确定,不可变。
所以数组长度不够的时候,需要扩容,扩容的机制是:新建一个大数组,将小数组中的数据拷贝到大数组,然后小数组对象被垃圾回收。

6、对数组中存储引用数据类型的情况,要会画它的内存结构图。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值