Java_Day_04_总结

 数组:
 
          数组特性: 内存中连续存储,并且下标从0开始(内存地址偏移)
  
          数组长度一旦确定长度不能更改,也就意味着数组是不能添加和利除的
  
          除非新建一个数组,把原数据复制到新数组中,在复制的过程当中可以进行添加和删除操作
  
          所以数组的查询和更改效率是很高的,但是添加和删除效率较低
 
          数组都有一个内置属性length保存了数组的长度
  
          在java中有一个java.util.Arrays类提供了一-些数组操作
  
          数据声明
  
          1、静态声明:已知每个元素
 
          数据类型[] 变量名 = {值,值,值}; 简写
  
         数据类型[] 变量名 = new 数据类型[] {值,值,值};
  
          int a = 2;
 
          int[] arr={1,2,4,6};
  
          int[][] arrs = {
  
          {},{},{}
 
         }; //二维数组
 
         2、动态声明:不知道数组中每个元素
 
          数据类型[] 变量名 = new 数据类型[长度]; 
         int[] arr = new int[长度];

         arr.length 数组长度

         动态声明,保存的是对应类型的默认值比如上面程序中会保存5个0
 
          整数0,小数0.0,布尔false,字符\u0000,引用类型null

数组使用方法:

 常见异常
               1、下标越界
               2、空指针异常

/数组自变量传递方式
        m2(new int[] { 1, 2, 3 });

引用传递:
 
         数组上引用类型,用new创建,储存在堆里,每次传递的是数组在堆中的地址。
 
         所以更改的都是堆中数组的内容,对数组本身操作不需要返回值
 
          基本数据类型:
  
         而基本数据类型传递都是对原参数空间内的数的复制,存到新开辟的存储空间中。原参数空间值不变

数组复制:

 二维数组:
    存储方式:一个数组里面嵌套N个数组。数组里面的数组也是引用类型

二维数组遍历:

// 遍历——二维表
    public static void index(int[][] arr) {
        // 外圈遍历找数组下标
        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();

        }

    }

// 锯齿状

    public static void index_1(int[][] arr) {
        // 初始化每一个数组的内容,将其变成第一行一个、第二行两个、、、、、

        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();

        }

    }

数据交换:

    public static void main(String[] args) {
        int x = 10;
        int y = 11;
        // 1 中间变量(开发常用)
        int temp = x;
        x = y;
        y = temp;
        System.out.println("x=" + x + ",y=" + y);

        // 2 位移运算(面试用)
        x = 2; // 0000 0010
        y = 3; // 0000 0011
        // 转换为对应的二进制,每位异或,相同取0,不同取1
        x = x ^ y; // 0000 0001
        y = x ^ y; // 0000 0010
        x = x ^ y; // 0000 0011
        System.out.println("x=" + x + ",y=" + y);

        // 3 加减运算
        x = 10;
        y = 20;
        x = x + y;
        y = x - y;
        x = x - y;
        System.out.println("x=" + x + ",y=" + y);

    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值