2021-06-11数组以及异常笔记

2021.6.11

公约数:可以同时被两个数,整除的数,而且是所有约数中最大的数;

数组

创建数组格式:
数据类型[] 数组名=new 数据类型[10] (这个长度必须定义)

数组创建氛围

  1. 静态

    int[] xxx=new int[]{123,321,3123,32133};
    int[] xxx={123,234,54356,457,12};
    
  2. 动态

动态初始化有默认值:
正数的元素里存储的是0,
小数是0.0
boolean是false
char是:\uoooo
引用数据类型是:null

```java
 int[] xxx=new int[10];
```

java储存空间

运行介绍:
1.开启java虚拟机
2.向内存申请空间,java这块空间氛围,堆,栈,
3.当前类中main方法复制到栈区域
在这数组存的是地址值,如果找,是先从用地址值找到对应
位置查找这个数组的值。
4.运行结束弹(tan)栈

1.栈 :将我们的main下代码放在这;
2.堆:这里是用来存储真实数据的地方(例如new出来的数组)

异常

数组的异常:ArrayIndexOutOfBoundsException//数组下标越界
NullPointerException//空指针异常(使用的对象对null)

编译器异常
运行时异常
求数组最大的定义数值的时候,最好不要定义0定义第一个数最好
arr.length-1-i 交换公式

数组二分查找

基本公式:(first+end)/2

有效元素:是可能查询到的元素;

重点:二分查找必须有序;

二分查找代码演示

int[] arr={3,5,6,9,11,15,16,19,20,23};
        int num=11;
        //定义开始位置角标
        int start=0;
        //定义结束位置角标
        int end=arr.length-1;
        //判断,如果起点小于等于重点,结束循环
        while (start<=end) {
            //设定一个数组中一半的角标
            int ban = (start + end) / 2;
            //如果当前一半的这个角标小于要查找的值,将start的位置位移到在数组一半的基础上加一地方
            if (arr[ban] < num) {
                start = ban + 1;
            //如果当前的一半这个角标大于要查找的值,将end的位置位移到在数组一半的位置上减一;    
            } else if (arr[ban] > num) {
                end = ban - 1;
            //不断减少的情况下,最终找到,需要的数字,输出,当前找到的这个数字的角标,然后退出循环    
            } else {
                System.out.println(ban);
                break;
            }
        }

数组排序

{
        int[] nums={3,5,1,6,8,2,10,4};
        //外层循环就不细说了,循环次数减一嘛,因为你比较到最后,就剩最小的数了,你没得比,所以直接减一
        for (int j = 0; j < nums.length-1; j++) {
            //内层循环,数组的长度减一,原因是,你第一个数和第二个数做比较的时候,到最后一个不需要再
            //比较了,再比较,就超出下标了,
            //重点,为什么要减j呢,你每次循环,都要让最大的数到最后,但是,之前你都比较不过了,没必要再次比较了
            //而外层循环,正好是每次增加1,所以,每次就没有必要再跟之前比较不过的数字做比较,所以减j最完美
            for (int i = 0; i <nums.length-1 -j ; i++) {
                //判断是,当前的这个数组下标和下一个数组下标的数组比较,
                // 如果当前的大于后一个,就转换嘛,转换就不多说了,空碗操作
                if (nums[i]>nums[i+1]){
                    int change=nums[i];
                    nums[i]=nums[i+1];
                    nums[i+1]=change;
                }
            }
        }
        for (int i = 0; i < nums.length; i++) {
            System.out.print(nums[i]+" ");
        }
    }

总结(选择性观看,重复过多)

  1. 数组

    • 存放多个值得容器
    • 必须确定数据类型
    • 必须确定长度
    • 长度和数据类型都不能修改
  2. 数组的创建

    • 静态初始化 : 先确定具体的数值, 由虚拟机来确定类型和长度
    • 动态初始化 : 先确定类型和长度, 里面是默认值
  3. 数组的默认值

    • 整数: 0
    • 小数: 0.0
    • 字符: \u0000
    • 布尔: false
    • 引用数据类型: null
  4. 数组的使用

    • 通过角标操作数组, 角标从 0开始, 到数组的长度 -1 结束
    • 获取元素 : arr[角标]
    • 设置元素 : arr[角标] = 值;
      数组的内存图

1.java代码的运行流程
开启jvm,分配内存空间,
把main方法,复制到栈中执行,
2.数组的存储和使用

  								以上内容均为自己理解,不作为准确定理。
  								选择性观看,持续跟新进度,喜欢感谢关注
  												CSDN博主:One_Gun
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

One_Gun

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值