四.流程控制
分支结构:
1.条件判断:
①if(条件表达式){ }
②if(条件表达式){
//执行语句1;
}else{
//执行语句2;
}
③if(条件表达式1){
//执行语句1;
}else if(条件表达式2){
//执行语句2;
}...
}else{
// 执行语句;
}
注意:
1.一旦满足某个条件表达式,则进入其执行语句执行,执行完毕,跳出当前的条件判断结构,不会执行其以下的条件结构语句。
2.如果诸多个条件表达式之间为“互斥”关系,多个结构可以上下调换顺序
如果诸多个条件表达式之间为“包含”关系,要求条件表达式范围小的写在范围大的上面。
2.选择结构
switch(变量){
case 值1:
case 值2:
//break;
...
default:
break;
}
注意:
1.变量可为以下数据类型:byte short int char 枚举 String
2.case后只能填写变量的值,不能写范围
3.default;是可以省略的,并且其位置也是灵活的,但通常放在case语句之后
4.一旦满足某一个case语句,则进入执行其操作,直至遇到break或者程序终止
5.某些情况下,若要判断的语句的条件满足switch变量的数据类型,并且值不多的情况下,建议选择swith-case,除此之外,选择if-else
循环结构
1.格式:
①初始化条件
②循环条件
③迭代条件
④循环体
for(①;②;③){
④
}
①
while(②){
④
③
}
①
do{
④
③
}while(②);
注意:1.不同的循环之间可以相互转换
2.while和do-while的区别:do-while程序至少会执行一次
2.嵌套循环:循环结构中还可以声明循环。让内层循环结构整体充当外层循环的循环体,若外层循环执行mci,内层循环执行n次,整个程序执行m*n次。
题目:
for(int i = 0;i<3;i++){
for(int j = 0;j<6;j++){
System.out.print("*");
}
System.out.println();
}
外层控制行数,内层控制列数
例题:1.九九乘法表 2.输出100以内的质数
3.无限循环
for(;;){
...
if(){
break;
}
}
或者
while(ture)
...
if(){
break;
}
...
}
往往我们在无限循环结构内部提供循环的终止条件,使用break关键字。否则,此循环将无限制的执行下去,造成死循环,这是我们要避免的。
break & continue关键字
break:
使用在swith-case结构或者循环结构中
在循环结构中,一旦执行到break,就跳出当前循环
continue:
使用在循环结构中
一旦执行到continue,就跳出当次循环
for(int i = 1;i <= 10;i++){
if(i % 4 == 0){
//break; 123
continue;//123567910
}
System.out.println(i);
}
在嵌套循环中,使用带标签的break和continue。
lable:for(int i = 1;i < 5;i++){
for(int j = 1;j <= 10;i++){
if(i % 4 == 0){
//break able;
continue lable;
}
System.out.println(j);
}
System.out.println();
}
五.数组
1.数组:相同数据类型的数据的集合。
数组的使用:
1.数组的初始化
int[] score1 = new int[]{1,2,3};//静态初始化:在声明并初始化数组与给数组相应的元素赋值操作同时进行。
int[] score2 = new int[3];//动态初始化:在声明并初始化数组与给数组相应的元素赋值操作分开进行。
score2[0] = 1;
score2[1] = 2;
score2[2] = 3;
注意:不管是静态还是动态初始化数组,一定要在创建的时候,就指明数组的长度
2.如何引用数组元素:通过数组的下角标的方式,下角标从0开始,到n-1结束,n为数组长度。
3.数组的长度:通过数组的属性length来调用
4.如何遍历数组:
for(i = 0;i < score1.length;i++){
System.out.println(score1[i]);
}
5.关于数组元素的默认初始化值
1) byte short int lang 默认 0
2)float doule 默认 0.0
3)char 默认 空格
4)boolean 默认 false
5)引用变量 默认 null
二维数组
1.声明并初始化
①int[][] i = new int[4][3];
②int[][] j = new int[4][];
j[0] = new int[2];
...
j[3] = new int[2];
③int[][] arr = new int [][]{(1,2,3)(4,5)(6)};
2.如何来引用二维数组的元素:arr[1][0] = 12;
3二维数组的长度:arr.length;
4.遍历二维数组:
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();
}
数组常见异常
1.数组下标越界的异常:java.lang.ArrayIndexOutOfBoundsException
2.空指针的异常:NullPointerException
数组常见算法问题
1.求数组元素的最大值、最小值、和、平均数
2.数组的复制和反转
复制:
int[] arr1;
int[] arr2;
arr1 = new int[]{1,2,3,4,5,6};
arr2 = new int[arr1.length];
for(int i = 0;i < arr2.length;i++){
arr2[i] = arr1[i];
}
反转:
for(int i = 0;i < arr.length/2;i++){
int temp = arr[i];
arr[i] = arr[arr.length-1-i];
arr[arr.length-1-i]; = temp;
}
for(int x = 0,y< = arr.length-1;x < y;x++,y--){
int temp =arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
拓展:String str = "abcdefg";
数组的排序:
插入排序
直接插入排序、折半插入排序、Shell排序
交换排序
冒泡排序、快速排序(分区交换排序)
选择排序
简单选择排序、堆排序
归并排序
基数排序
冒泡排序使数组元素从小到大排序:
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]){
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
使用直接选择排序使数组元素从小到大排序:
for(int i = 0;i < arr.length-1;i++){
int t = i;
for(int j = i+1;j < arr.length;j++){
if(arr[t] > arr[j]){
t = j;
}
}
if(t! = i){
int temp = arr[t];
arr[t] = arr[i];
arr[i] = temp;
}
}
Arrays工具类:Arrays.sort(arr);
本文出自 “阿成的博客” 博客,转载请与作者联系!