控制结构、数组、排序和查找
控制结构
顺序结构
程序按从上至下的顺序逐句执行
选择结构
if-else
switch(case)
switch(表达式)中表达式的返回值必须是︰(byte,short,int, char,enum[枚举],String)没有double类型
case子句中的值必须是常量,而不能是变量
break语句用来在执行完一个case分支后使程序跳出switch语句块;如果没有写break,程序会顺序执行到switch结尾或者下一个break
循环结构
for
循环条件是返回一个布尔值的表达式
for初始化和变量迭代可以写到其它地方,但是两个分号不能省略
可以有多条初始化语句,但要求类型一样,中间用逗号隔开,
循环变量迭代也可以有多条变量迭代语句,中间用逗号隔开。
增强for循环
for(数据类型 数据名:数组)
for (Season2 season2 : val)//将val数组中的元素按顺序赋给season2
while
do-while
while和do..while区别 ——while先判断再执行,do..while先执行再判断
break & continue&return
break终止当前循环
continue直接进行下次循环
return使用在方法,表示跳出所在的方法,如果return写在main方法,退出程序
数组
-
数组也是一种数据类型,是引用类型(对象)
-
数组名.length可以得到数组的长度
-
数组的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化。
当数组只初始化没有赋值时,其元素默认值:0(数字类型) , null(String) , false(boolean) , \u0000(char)
一维数组
创建方法:
int[] a = new int[9];//1. 同时声明并创建
int[] a; a = new int[10];//2. 先声明之后创建
double[] hens = {3 , 5 , 1 , 3.4 , 2 , 50};//3. 静态初始化
-
数组在默认情况下是引用传递,赋的值是地址,赋值方式为引用赋值
int[]arr1 = {1,2,3};
int[] arr2 = arr1;//把arr1地址赋给arr2,arr2变化会影响到arr1
二维数组
//1.静态初始化
int[][] arr = {
{0, 0, 0, 0, 0, 0},
{0, 0, 1, 0, 0, 0},
{0, 2, 0, 3, 0, 0},
{0, 0, 0, 0, 0, 0}};
//arr.length这个二维数组包含多少个元素(一维数组)
//arr[i].length第i个一维数组的长度
//2.动态初始化,该二维数组包括2个一维数组,每个一维数组5个元素
int[][] arr2 = new int[2][5];//[i][j]表示i行j列
//可以先声明,int[][] arr2; arr2=new int[2][5];
//3.动态初始化-列数不确定
// 创建如下数组 1
// 2 2
// 3 3 3
int[][] arr3 = new int[3][];
for (int i = 1 ; i < arr3.length ; i++ ){
arr[i] = new int[i + 1];//给每个一维数组初始化,如果没有这一步就没给一维数组赋值
}
引用类型的地址传递与二维数组内存分配

多维数组同样,前面存放地址,最后一层存储数据

排序
排序的分类
内部排序: 指将需要处理的所有数据都加载到内部存储器中进行排序(交换式排序法、选择式排序法和插入式排序法)
外部排序法: 数据量过大,无法全部加载到内存中,需要借助外部存储进行排序(合并排序法和直接合并排序法)
冒泡排序
时间复杂度:O(n2)
查找
常用的查找有两种
-
顺序查找
-

浙公网安备 33010602011771号