ReviewDay2
一. 控制流程
1. 块作用域
- 块(复合语句),若干Java语句用大括号组合起来
2. 条件语句
- if (condition) statement;
- if (condition) { }; //使用块(复合语句)
- if (condition) { } else if() { } else { };
3. 循环
- while(condition) statement;
- do statement while (condition);
- for (int i = 1; i <= 10; i ++) { }
- 增强for:for each 循环(for each element in a)
for (variable: collection) statement;
4. 多重选择
- switch (choice) { case 1: … break; case 2: … break; default: … break;}
5. 终端控制流程的语句
- break: 退出循环语句
- break + 标签: 可以用于跳出多重嵌套的循环语句
- continue: 不再执行循环体的剩余部分,立刻跳到循环首部,如果是for循环,则跳到“更新”部分
二. 大数
处理任意长度的数字序列的数值
-
BigInteger
API
: static BigInteger valueOf(long x) 返回任意值大整数API
: BigInteger add(BigInteger other)API
: BigInteger subtract(BigInteger other)API
: BigInteger multiply(BigInteger other)API
: BigInteger divide(BigInteger other)API
: BigInteger mod(BigInteger other)API
: BigInteger sqrt()API
: int compareTo(BigInteger other) -
BigDecimal
API
: BigDecimal add(BigDecimal other)API
: BigDecimal subtract(BigDecimal other)API
: BigDecimal multiply(BigDecimal other)API
: BigDecimal divide(BigDecimal other)API
: BigDecimal divide(BigDecimal other, RoundingMode mode) //如果商无限小数,第一个divide会报错,RoundingMode.HALF_UP四舍五入API
: BigDecimal compareTo()BigDecimal otherAPI
: static BigDecimal valueOf(long x) //也可以再传入一个指数
三. 数组
1. 声明数组
-
动态初始化
先声明数组:数据类型 数组名[]
创建数组: 数组名 = new 数据类型[大小]
-
静态初始化
数据类型[] 数组名 = { 元素值, 元素值, }
匿名数组 : new int[] {1, 2, 3}
2. 数组的使用
-
数组是多个相同类型数据的组合,实现对这些数据的统一管理
-
数组中的元素可以是任何数据类型,包括基本类型和引用类型,但是不能混用。
-
数组创建后,如果没有赋值,有默认值
**int 0, short 0, byte 0, long 0, float 0.0,double 0.0,char \u0000, boolean false, String null**
-
使用数组的步骤 1. 声明数组并开辟空间 2 给数组各个元素赋值 3 使用数组
-
数组的下标是从 0 开始的。
-
数组属于引用类型
3. 数组拷贝
-
浅拷贝:数组变量拷贝到另一个数组变量,两数组都将引用同一个数组(引用类型)
-
深拷贝:一个数组的所有值拷贝到新数组
Arrays.copyOf(oldArray, oldArray.length * 2) //扩容
不能保证浅拷贝与深拷贝就是这样的,突然想到的
4. 数组排序
-
冒泡排序
for(int i = 0; i < arr.length -1; i ++) { for(int j = 0; j < arr.length - 1 - i; j ++) { if(arr[j] > arr[j + 1]) { temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } }
-
Arrays 的API
Arrays.sort(array) //优化的快速排序(QuickSort)
5. 多维数组 (数组的数组)
1. 声明数组
- 动态初始化
类型[][] 数组名 = new 类型 [大小] [大小]
- 静态初始化
类型[][] 数组名 = {{ }, { }, }
2. 使用
- 多重循环遍历
类与对象
1. 类与对象的关系
- 类是抽象的,概念的,代表一类事物,比如人类,猫类…, 即它是数据类型.
- 对象是具体的,实际的,代表一个具体事物, 即 是实例.
- 类是对象的模板,对象是类的一个个体,对应一个实例
- 对象在内存中的存在形式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OoKiFqJS-1649234441352)(./img/类与对象内存.png)]
2. 对象
- 构造一个对象: new操作符 + 构造器(构造函数)
new Date() //对象被初始化为当前日期和时间
- 访问属性
对象名.属性名
- 成员方法
1)提高代码的复用性
2)可以将实现细节封装起来,供别人调用即可
3. 方法调用机制
- 程序执行到方法时,会开辟一个独立的空间(栈空间)
- 犯法执行完毕或执行到return时,就会返回
- 返回调用方法的地方
- 返回后再继续执行方法后面的地方
- main方法(栈)执行完毕后整个程序退出
4. 方法传参机制
- 基本数据类型,传递的是值(值拷贝),形参的改变不影响实参
- 引用数据类型,传递的是地址(传递也是值,但值是地址),可以通过形参影响实参
5. 方法重载
- 方法名必须相同
- 形参列表必须不同(类型或个数或顺序至少一个不同,参数名无要求)
- 返回类型无要求