day_05 数组、交换变量

1.数组:
        是引用数据类型,用来保存多个数据
    1.数据结构:计算机存储和组织数据的方式。指相互之间存在一种或多种特定关系的
                数据元素的集合。
        数据操作:增删改查

    2.数组特性:
        1.内存中连续存储,下标(偏移量)从0开始。(内存地址偏移)
        2.长度一旦确定,不能更改。
        3.数组有一个内置属性 length 保存了数组的长度。
        4.插入、删除效率低,查询、更改效率高(偏移量)。
        5.在java中 有一个java.util.Arrays 类 提供了一些数组操作。

    3.数组声明:
        1.静态声明:已知每一个元素的时候。
            数据类型 变量名 = 值;
            int i = 2;
            int[] arr = {1,2,3};
            int[][] arr = {{},{}};

            注:[]可以写到变量名后面。 int arr[] = {1,2,4};  

        2.动态声明:不知道数组中每个元素的时候。
            int[] arr = new int[5];
            
            对数组进行二次赋值:int[] arr = new int[]{};

    4.数组使用:
        1.获取数据
            System.out.println(arr[0]);
        2.更改数据
            arr[1] = 1;
            
        3.遍历
            for(){
                System.out.println(arr[i]);
            }
            
            增强for循环 forcach
            for(数据类型 变量名:数组){}  eg:for(int element:arr){}
            把数组中的每一个元素都赋值给变量。

        4.常见异常
            1.下标越界
                数组下标超出表示范围。
            2.空指针异常
                数组没有进行初始化,但对数组进行了属性操作。
    
    5.数组传递:
        字面量传递方式:m2( new int[]{1,2,3});

        mian方法传参:详剑笔记1.5.6

    6.传值和传址(易错点):
        传值:传递基本类型的数据。
        传址(传引用):传递引用数据类型的值。

    7.数组复制:
        原数组,原数组起始位置(包含),目标数组,目标数组起始位置,复制个数。
        没有重新生成数组,所以不需要返回值。
    8.数组插入复制:
        copy(int[] src,int srcPos,int[] dest,int destPos,int length){}
        原数组,原数组起始位置,目标数组,目标数组起始位置,插入个数
        
    9.一维数组存储:


2.二维数组
    1.声明方式:
        静态声明:同上。
        动态声明:
            int[][] arr = new int[3][4];
            int[][] arr = new int[3][]; 表示有三个一维数组,数组内为null。
            这种需要单独初始化每一个一维数组的长度,用于每行列不一样的情况,
    2.存储方式:
        int arr = {{},{}};
    3.使用方式:
        1.获取数据:
        2.更改数据:
        3.遍历:
            for(int i=0;i<arr.length;i++){
                for(int j=0;j<arr[i].length;j++){
                    System.out.print(arr[i][j]+" ");
                }
                System.out.println();
            }

    *4.动态声明锯齿状:
        二维表:int[][] arr = new int[5][6];
                for(int i=0;i<arr.length;i++){
                    for(int j=0;j<arr[i].length;j++){
                        System.out.print(arr[i][j] + " ");
                    }
                    System.out.println();
                }
        锯齿状:
            int[][] arr = new int[5][];
            for(int i=0;i<arr.length;i++){
                arr[i] = new int[i+1];
            }
            for(int i=0;i<arr.length;i++){
                for(int j=0;j<arr[i].length;j++){
                    System.out.print(arr[i][j] + " ");
                }
                System.out.println();
            }
            
3.交换变量的值
        xy互换
    1.中间变量
        temp = x;
        x = y;
        y = temp;
        
    2.位移运算(面试):
        x=2,y=3;
        //转换为对应的二进制,每位异或,相同取0,不同取1;
        x=x^y;
        y=x^y;
        x=x^y;

    3.加减运算
        x=x+y;
        y=x-y;
        x=x-y;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值