顺序结构:程序从上到下逐行地执行,中间没有任何判断和跳转
根据条件,选择性地执行某段代码(if.....else 和 switch 两种语句)
if语句练习:
public static void main(String[] args){ /** * 判断小明的期末成绩 int score = 90; if(score == 100) { System.out.println("奖励一辆BWM"); } else if (score > 80 && score <=90) { System.out.println("一台iPhone5s"); } else if (score >= 60 && score <= 80 ) { System.out.println("一本参考书"); } else { System.out.println("Nothing"); } */ /*对下列代码,若有输出,指出输入结果*/ int a = 4; int y = 1; if( a > 2){ if(y > 2){ System.out.println(a + y); System.out.println("atguigu"); } } else { System.out.println("x is " + a); } }switch语句练习
public static void main(String[] args ){ //例子 int i = 123; switch (i) { case 0: System.out.println("zero"); break; case 1: System.out.println("one"); break; case 2: System.err.println("two"); break; default: System.out.println("default"); break; } /*输入季节,输出季节特色 */ String season = "abc"; switch(season){ case "spring": System.out.println("春暖花开"); break; case "summer": System.out.println("夏日炎炎"); break; case "autumn": System.out.println("秋高气爽"); break; case "winter": System.out.println("冬雪皑皑"); break; default: System.out.println("季节输入有误!,请重新输入:"); break; } }注意:
switch(表达式)中的表达式的返回值必须是以下几种类型之一:byte、short、char、int、枚举,String;
case 子句中的值必须是常量,且所有case子句中的值应是不同的;
default子句是可任选的,当没有匹配的case时,执行default;
break语句用来执行完一个case分支后使程序跳出switch语句;如果没有break,程序会顺序执行到switch结尾;
switch语句和if语句的对比
如果判断的具体数值不多,且符合byte、short、int、char,虽然两个语句都可以使用,建议使用switch语句,因为效率高;
其他情况:对区间判断,对结果为Boolean类型判断,使用if,if的使用范围更广;
循环语句功能:在某些条件满足的情况下,反复执行特定代码的功能;
循环语句的四个组成部分:
初始化部分
循环条件部分
循环体部分
迭代部分
循环语句分类:
for循环
while循环
do while 循环
语法格式:for(初始化表达式; 布尔值测试表达式; 更改表达式){ 语句或语句块}
例子: for(int i = 1;i < 10;i++){ System.out.println(i); }for语句练习
public static void main(String[] agrs){ /**编写程序FooBizBaz.java,从1循环到150并在每行打印一个值, * 另外在每个3的倍数行上打印出“foo”,在每个5的倍数行上打印“biz”, * 在每个7的倍数行上打印输出“baz”。 for(int i = 1;i < 151;i++){ String str = ""; str += i; if(i % 3 == 0){ str += "foo"; } if(i % 5 == 0){ str += "biz"; } if(i % 7 == 0){ str += "baz"; } System.out.println(str); } */ /** //计算1--100的和 int a = 0; for(int i = 1;i < 101;i++){ a += i; } System.out.println(a); */ /*打印1~100之间所有奇数的和 int r = 0; for(int i = 1;i < 101;i++){ if(i % 2 != 0){ r += i; } } System.out.println(r); */ /** * 打印1~100之间所有是7的倍数的整数的个数及总和(体会设置计数器的思想) int y = 0; int res = 0; for(int i = 1;i <= 100;i++){ if(i % 7 == 0){ y++; res += i; } } System.out.println(y); System.out.println(res); */ }
将一个循环放在另一个循环体内,就形成了嵌套循环。其中:for、while、do..while 均可以作为外层循环和内层循环;
实质上,嵌套循环就是把内层循环当成外层循环的循环体,当只有内层循环的循环体为false时,才会完全跳出循环体,才可结束外层循环的当次循环,开始下一次的循环;
设外层循环的次数为m次,内层为n次,则内层循环体实际上需要执行m*n次
例子: public static void main(String args[]){ //打印9*9乘法表 for(int i =1 ;i <= 9; i++){ for(int j = 1;j <= i;j++){ System.out.print(j + "*" + i + "=" +(i * j)+"\t"); } System.out.println(); } /* //打印1--100之间的质数(质数:大于1的自然数且只能被1和本身整除) for(int i = 1;i < 101;i++){ int m =0; for(int j = 1; j <= i;j++){ if(i % j == 0){ m++; } } if(m == 2){ System.out.println(i); } } */ }
break语句:终止当前所在的循环(结束本层循环)
continue语句:终止当前循环,进入下次循环
return:结束一个方法(当一个方法执行到一个return语句时,这个方法将被结束)
注意:return直接结束整个方法,不管这个方法return处于多少层循环之内,都将被结束;
例题
public static void main(String args[]){ /**特殊流程控制语句 * break语句:用于终止当前所在的 循环(结束本层循环); * continue:用于结束当前这次循环,直接进入下一次循环 * return:结束一个方法,当一个方法执行到一个return 语句时,这个方法结束 * 注意:break--只能用于switch语句和循环语句 * continue--只能用于循环语句 * */ //嵌套循环 System.out.println("完整的循环结果"); for(int i = 1;i < 5;i++){ for(int j = 1;j < 4;j++){ System.out.print(i); //print():输入结果不自动换行 System.out.print(j); //println():输入结果自动换行 System.out.println(); } } System.out.println(); System.out.println(); //break:终止当前所在的循环 System.out.println("测试break语句:结束当前所在循环"); for(int i = 1;i < 5;i++){ for(int j = 1;j < 4;j++){ if(j == 2){ break; } System.out.print(i); System.out.print(j); System.out.println(); } } System.out.println(); System.out.println(); //continue:结束本次循环,进入下一次循环 System.out.println("测试continue语句:结束本次循环,进入下次循环"); for(int i = 1;i < 5;i++){ for(int j = 1;j < 4;j++){ if(j == 2){ continue; } System.out.print(i); System.out.print(j); System.out.println(); } } System.out.println(); System.out.println(); //return:终止方法 System.out.println("测试return语句:直接终止这个方法"); for(int i = 1;i < 5;i++){ for(int j = 1;j < 4;j++){ if(j == 2){ return; } System.out.print(i); System.out.print(j); System.out.println(); } } }##
声明方式: type var[] 或 type[] var;
一维数组初始化:
动态初始化:数组声明且为数组元素分配空间与赋值的操作分开进行,如:int arr[] = new int[10];
静态初始化:在定义数组的同时就为数组元素分配空间并赋值, 如: int a[] = new int[]{1,2,3,4}
数组的引用
定义并用运算符new为之分配空间后,才可以引用数组中的每个元素;
数组元素的引用方式:数组名[ 数组元素下标 ](数组元素下标可以是整型常量或整型表达式;数组元素下标从0 开始)
每个数组都有一个属性length 指明它的长度
数组一旦初始化,其长度是不可变的
public static void main(String[] agrs){ /** * 数组--存放多个数据的集合*/ //一维数组 int a[]; int[] b; int arr[] = new int[5];//动态赋值 int[] arr1 =new int[]{1,2,3,4,5};//静态赋值 //数组下标从0开始 System.out.println(arr.length); System.out.println(arr1[1]); System.out.println(arr1[1*2]); System.out.println(arr[1]); }
二维数组:数组中的数组
格式(动态初始化)1:int [] [] arr = new int [3] [2];(三个一维数组,每一个一维数组中有两个元素)
格式(动态初始化)2:int [] [] arr = new int [3] [];
格式(静态初始化)3:int[] [] arr = new int [] []{{1,2,3},{2,7},{1,2,3}};
public static void main(String[] args){ int[][] arr = new int[][]{ {3,8,2}, {2,7}, {9,0,1,6} }; int len = arr.length; int res = 0; for(int i = 0; i < len; i++){ int arr0[] = arr[i]; int llen = arr0.length; for(int j = 0;j < llen;j++){ res +=arr0[j]; } } System.out.println(res); }