Day05-数组

day05-数组

1.一维数组的基本概念

  • 当需要在Java程序中记录单个数据内容时,则声明一个变量即可。
  • 当需要在Java程序中记录多个类型相同的数据内容时,则声明一个一维数组即可,一维数组本质上就是在内存空间中申请一段连续的存储单元。
  • 数组是相同数据类型的多个元素的容器,元素按线性顺序排列,在Java语言中体现为一种引用数据类型。

2.一维数组的声明方式

  • 数据类型[] 数组名称 = new 数据类型[数组的长度];
  • 调用数组的length属性可以获取数组的长度;
  • 可以通过下标的方式访问数组中的每一个元素。需要注意的是:数组的下标从0开始,对于长度为n的数组,下标的范围是0~n-1.

3.一维数组的使用

package com.lagou.Day05;

/**
 * 一维数组
 */
public class Demo01 {
    public static void main(String[] args) {
        //1.声明一个长度为2元素类型为int类型的一维数组
        int[] arr = new int[2];
        //2.打印一维数组的长度以及每个元素的数值
        System.out.println(arr.length);//2
        System.out.println(arr[0]);//0
        System.out.println(arr[1]);//0
        //数组下标越界异常
        //System.out.println(arr[2]);//java.lang.ArrayIndexOutOfBoundsException
        System.out.println(arr);//[I@3f0ee7cb

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

4.一维数组的初始化

  • 基本类型的数组(数据元素为基本类型)创建后,其元素的初始值:byte、short、char、int、long为0;
  • float和double为0.0;
  • boolean为false;
package com.lagou.Day05;

public class Demo02 {
    public static void main(String[] args) {
        //声明一个长度为5元素类型为double类型的一维数组 动态方式
        double[] arr = new double[5];
        //打印数组中每个元素值
        for (int i = 0;i<arr.length;i++){
            System.out.println(arr[i]);
        }
        //赋值 静态方式简化版
        char[] arr2 = {'a','b','c','d'};
        for (int i = 0;i<arr2.length;i++){
            System.out.println(arr2[i]);
        }
        //特殊写法 静态方式
        boolean[] arr3 = new boolean[]{true,true,false,false};
        for (int i = 0;i<arr3.length;i++){
            System.out.println(arr3[i]);
        }
    }
}

5.内存结构分析

内存结构之栈区

  • 栈用于存放程序运行过程当中所有的局部变量。一个运行的Java程序从开始到结束会有多次变量的声明。

内存结构之堆区

  • JVM会在其内存空间中开辟一个称为“堆”的存储空间,这部分空间用于存储使用new关键字创建的数组和对象。

6.一维数组CRUD之声明和赋值操作

package com.lagou.Day05;

/**
 * 编程实现一维数组的增删改查
 */
public class Demo03 {
    public static void main(String[] args) {
        //1.声明一个长度为5类型为int的一维数组
        int[] arr = new int[5];
        //2.对数组前4个赋值11、22、33、44
        arr[0] = 11;
        arr[1] = 22;
        arr[2] = 33;
        arr[3] = 44;
        
        for (int i =0;i<arr.length-1;i++){
            arr[i] =(i+1)*11;
        }
    }
}

7.一维数组插入操作

package com.lagou.Day05;

/**
 * 将元素55插入到下标为0到位置,原有元素向后移动
 */
public class Demo04 {
    public static void main(String[] args) {
        int[] arr = new int[5];
        //原有的
        arr[0] = 11;
        arr[1] = 22;
        arr[2] = 33;
        arr[3] = 44;
        //现在插入
        //方法一
        arr[4] = arr[3];
        arr[3] = arr[2];
        arr[2] = arr[1];
        arr[1] = arr[0];
        arr[0] = 55;

        //方法二
        for (int i=arr.length-1;i>0;i--){
            arr[i] = arr[i-1];
        }
        arr[0] = 55;
        for (int i=0;i<arr.length;i++){
            System.out.println(arr[i]);
        }
    }
}

8.一维数组CRUD删除操作

package com.lagou.Day05;

public class Demo05 {
    public static void main(String[] args) {
        //现在的元素[55,11,22,33,44]
        //将55删除,11,22,33,44向前靠近,最后一个为0
        int[] arr = {55,11,22,33,44};
        arr[0]=arr[1];
        arr[1]=arr[2];
        arr[2]=arr[3];
        arr[3]=arr[4];
        arr[4]=0;
        for (int i=0;i<arr.length;i++){
            System.out.println(arr[i]);
        }
    }
}

9.一维数组CRUD改操作

package com.lagou.Day05;

/**
 * 查找数组中是否含有22?把22改成220
 */
public class Demo06 {
    public static void main(String[] args) {
        int[] arr = {11,22,33,44,0};
        for (int i=0;i<arr.length;i++){
            if (22 == arr[i]){
                arr[i]=220;
                break;
            }
            System.out.println(arr[i]);
        }
    }
}

10.一维数组的优缺点

  • 可以直接通过下标(或索引)的方式访问指定位置的元素,速度很快。
  • 数组要求所有的元素的类型都相同。
  • 数组要求内存空间连续,并且长度一旦确定就不能修改。
  • 增加和删除元素时可能移动大量元素,效率低。

11.一维数组之间元素的拷贝实现

- 声明一个初始值为11,22,33,44,55的一维数组并且打印所有元素
- 声明一个长度为3元素类型为int类型的一维数组并打印所有元素
- 实现将第一个数组中间3个元素赋值到第二个数组中
- 再次打印第二个数组中的所有元素
package com.lagou.Day05;

/**
 * - 声明一个初始值为11,22,33,44,55的一维数组并且打印所有元素
 * - 声明一个长度为3元素类型为int类型的一维数组并打印所有元素
 * - 实现将第一个数组中间3个元素赋值到第二个数组中
 * - 再次打印第二个数组中的所有元素
 */
public class Demo07 {
    public static void main(String[] args) {
        int[] arr = {11,22,33,44,55};
        for (int i=0;i<arr.length;i++){
            System.out.println(arr[i]);
        }
        int[] arr2 = new int[3];
        for (int i=0;i<arr2.length;i++){
            System.out.println(arr2[i]);
        }
        arr2[0]=arr[1];
        arr2[1]=arr[2];
        arr2[2]=arr[3];
        for (int i=0;i<arr2.length;i++){
            System.out.println(arr2[i]);
        }
    }
}

12.一维数组之间元素的拷贝优化

package com.lagou.Day05;/** * - 声明一个初始值为11,22,33,44,55的一维数组并且打印所有元素 * - 声明一个长度为3元素类型为int类型的一维数组并打印所有元素 * - 实现将第一个数组中间3个元素赋值到第二个数组中 * - 再次打印第二个数组中的所有元素 */public class Demo07 {    public static void main(String[] args) {        int[] arr = {11,22,33,44,55};        for (int i=0;i<arr.length;i++){            System.out.println(arr[i]);        }        int[] arr2 = new int[3];        //方式2        for (int i=0;i<arr2.length;i++){            System.out.println(arr2[i]);        }        //方式3        System.arraycopy(arr,1,arr2,0,3);        for (int i=0;i<arr2.length;i++){            arr2[i]=arr[i+1];            System.out.println(arr2[i]);        }    }}

13.一维数组之间拷贝的笔试考点

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

coder-N

踏实 勤奋 努力 拼搏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值