第四章:流程控制
随机数:
Math.random() ——> [0.0,1.0)
(int)(Math.random()*6) +1 ——>[1,6]
switch:
语法结构:
switch (表达式) {
case 值1:
语句序列1;
[break];
case 值2:
语句序列2;
[break];
… … … … …
[default:默认语句;]
}
【注】
- 匹配成功,:后面的代码都会执行,所以要加break
- default可以写在任意位置
- 最后一行可以不加break
循环结构:
1、while和do-while的区别:
- while:先判断,再执行
- do-while:先执行,再判断——>至少被执行一次,从第二次开始才进行判断
2、do-while,while,for 循环的效率一样高
3、关键字:
- break用于强行退出循环,不执行循环中剩余的语句。
- continue 语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。
- return的作用,结束当前所在方法的执行.
4、break和continue
- 默认停止最近的循环
- 停止标签内的循环:
outer: //定义标签结束的位置
for(;;){
while( ){
break outer; //根据标签来结束循环
}
}
第五章:方法的定义、调用、重载
方法(method)就是一段用来完成特定功能的代码片段,类似于其它语言的函数(function)。
方法用于定义该类或该类的实例的行为特征和功能实现。 方法是类和对象行为特征的抽象。方法很类似于面向过程中的函数。面向过程中,函数是最基本单位,整个程序由一个个函数调用组成。面向对象中,整个程序的基本单位是类,方法是从属于类和对象的。
重载:
方法的重载是指一个类中可以定义多个方法名相同,但参数不同的方法。 调用时,会根据不同的参数自动匹配对应的方法。
方法的重载只跟方法名和形参列表有关,与修饰符,返回值类型无关。方法名相同,形参列表的个数、顺序、类型不同。
第六章:数组
数组变量属于引用类型,数组也是对象,数组中的每个元素相当于该对象的成员变量。数组本身就是对象,Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中存储的。
增强for循环:
for(int num:arr){
System.out.println(num); //遍历数组
}
数组的初始化方法:
- 静态初始化:除了用new关键字来产生数组以外,还可以直接在定义数组的同时就为数组元素分配空间并赋值。
int[] arr = {12,23,45};
int[] arr = new int[]{12,23,45}; - 动态初始化:数组定义与为数组元素分配空间并赋值的操作分开进行。
int[] arr ;
arr = new int[3]
arr[0] = 12;
arr[1] = 23;
arr[2] = 45; - 默认初始化:数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化。
int[] arr = new int[3]; —> 数组有默认的初始化值
值传递:方法的实参传递给形参的时候一定要注意:一切都是值传递。如果是基本数据类型,那么传递的就是字面值;如果是引用数据类型,那么传递的就是地址值。
main方法:
- 程序中可以有其他的方法也叫main方法,构成了方法的重载。
- 形参为String[] ,那么实参到底是什么?实参是 new String[0] ,默认情况下,虚拟机在调用main方法的时候就是传入了一个长度为0的数组。
可变参数:
提供了一个方法,参数的个数是可变的 ,解决了部分方法的重载问题
int…num
double…num
boolean…num
- 方法的内部对可变参数的处理跟数组是一样
- 可变参数和其他数据一起作为形参的时候,可变参数一定要放在最后
- 我们自己在写代码的时候,建议不要使用可变参数。
Arrays工具类:
- toString:对数组进行遍历查看的,返回的是一个字符串,这个字符串比较好看
- binarySearch:二分法查找,找出指定数组中的指定元素对应的索引
- sort:排序 ——>升序
- copyOf:完成数组的复制
- copyOfRange:区间复制
- equals:比较两个数组的值是否一样(“==” 比较的是地址)
- fill:数组的填充
- arraycopy:从源数组的指定位置复制指定数量的元素到目标数组的指定位置(System工具类)
二维数组的初始化:
- 静态初始化:除了用new关键字来产生数组以外,还可以直接在定义数组的同时就为数组元素分配空间并赋值。
int[][] arr = {{1,2},{4,5,6},{4,5,6,7,8,9,9}};
int[][] arr =new int[][] {{1,2},{4,5,6},{4,5,6,7,8,9,9}}; - 动态初始化:数组定义与为数组元素分配空间并赋值的操作分开进行。
int[][] arr = new int[3][]; //本质上定义了一维数组长度为3,每个“格子”中放入的是一个数组
arr[0] = {1,2};
arr[1] = {3,4,5,6};
arr[2] = {34,45,56};
int[][] arr = new int[3][2]; //本质上:定义一维数组,长度为3,每个数组“格子”中,有一个默认的长度为2的数组 - 默认初始化
二维数组的遍历:
- 外层普通for循环+内层普通for循环:
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr[i].length;j++){
System.out.print(arr[i][j]+"\t");
}
System.out.println();
}
- 外层普通for循环+内层增强for循环:
for(int i=0;i<arr.length;i++){
for(int num:arr[i]){
System.out.print(num+"\t");
}
System.out.println();
}
- 外层增强for循环+内层增强for循环:
for(int[] a:arr){
for(int num:a){
System.out.print(num+"\t");
}
System.out.println();
}
- 外层增强for循环+内层普通for循环:
for(int[] a:arr){
for(int i=0;i<a.length;i++){
System.out.print(a[i]+"\t");
}
System.out.println();
}