2021.6.11
公约数:可以同时被两个数,整除的数,而且是所有约数中最大的数;
数组
创建数组格式:
数据类型[] 数组名=new 数据类型[10] (这个长度必须定义)
数组创建氛围
-
静态
int[] xxx=new int[]{123,321,3123,32133}; int[] xxx={123,234,54356,457,12};
-
动态
动态初始化有默认值:
正数的元素里存储的是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]+" ");
}
}
总结(选择性观看,重复过多)
-
数组
- 存放多个值得容器
- 必须确定数据类型
- 必须确定长度
- 长度和数据类型都不能修改
-
数组的创建
- 静态初始化 : 先确定具体的数值, 由虚拟机来确定类型和长度
- 动态初始化 : 先确定类型和长度, 里面是默认值
-
数组的默认值
- 整数: 0
- 小数: 0.0
- 字符: \u0000
- 布尔: false
- 引用数据类型: null
-
数组的使用
- 通过角标操作数组, 角标从 0开始, 到数组的长度 -1 结束
- 获取元素 : arr[角标]
- 设置元素 : arr[角标] = 值;
数组的内存图
1.java代码的运行流程
开启jvm,分配内存空间,
把main方法,复制到栈中执行,
2.数组的存储和使用
以上内容均为自己理解,不作为准确定理。 选择性观看,持续跟新进度,喜欢感谢关注 CSDN博主:One_Gun