一、流程控制
1、顺序结构,默认流程顺序,使用最多的
public class HelloWorld { public static void main(String[] args) { System.out.println(1); System.out.println(2); } } 结果:1、2
2、分支结构,通过开关改变流程执行顺序,if、switch等
1)if的几种分支结构
(1) 第一种情况单分支if else
如果只有一条执行语句可省略{}
public class HelloWorld { public static void main(String[] args) { // if(条件){ //如果只有一条执行语句可省略{} // 执行语句1; // }else{ // 执行语句2; // } if (true){ System.out.println("HelloWorld"); }else{ System.out.println("Sorry"); } } } 结果:HelloWorld
(2)只有单分支 if
public class HelloWorld { public static void main(String[] args) { // if(条件){ //如果只有一条执行语句可省略{} // 执行语句1; // } if (true){ System.out.println("HelloWorld"); } } } 结果:HelloWorld
(3)第二种情况多重分支
public class HelloWorld { public static void main(String[] args) { // if(条件1){ //如果只有一条执行语句可省略{} ①条件1为真,运行语句;②条件1为假,判断条件2,依次类推,直到n;③所有条件都为假,执行else里面的语句n+1 // 执行语句1; // }else if (条件2){ // 执行语句2; // } else if (条件3){ // 执行语句2; // }else if (条件n){ // 执行语句n; // }else{ // 执行语句n+1; // } double score = 50.5; if (score>=90){ System.out.println("成绩优异"); }else if(score>=80){ System.out.println("良"); }else if(score>=60){ System.out.println("及格"); }else{ System.out.println("不及格"); } } } 结果:不及格
2)switch分支
表达式只能是char、short、int、String类型
①a首先和3比较;
②然后再和5比较,有对应的值则执行里面语句,然后break跳出分支;
③没有匹配上则执行default里面语句;
注意点:case 表达式值不能相同;break不能丢,如果没写,会继续进行下一个case的表达式值匹配
public class HelloWorld { public static void main(String[] args) { // switch(表达式){ //表达式只能是char、short、int、String类型 // case 表达式值1: 执行语句1; // break; // case 表达式值2: 执行语句2; // break; // default:执行语句3; int a = 5; switch (a){ //a首先和3比较,然后再和5比较,有对应的值则执行里面语句,然后break跳出分支,没有则匹配上执行default里面语句 case 3: System.out.println("我是3"); break; case 5: System.out.println("我是5"); break; default: System.out.println("我是上面没有查找打结果"); } } } 结果:我是5
3)if和switch异同点
(1)相同点:都可以做分支控制
(2)不同点:if做区间数据比较合适,例如:根据分数评级;switch适合值的匹配,比较直接;
3、循环结构,for、while、do…while
1)for循环
①执行初始值 ②判断是否满足执行条件,满足则执行 ③执行迭代条件
public class HelloWorld { public static void main(String[] args) { // for (数据类型 初始值; 执行条件; 迭代条件) { // 循环执行语句; // } for (int i = 0; i < 3; i++) { System.out.println("结果:HelloWorld"); } } } 结果:HelloWorld 结果:HelloWorld 结果:HelloWorld
例如:水仙花
public class HelloWorld { public static void main(String[] args) { for (int i = 100; i < 1000; i++) { if (narcissus(i) == i) { System.out.println("水仙花是: " + i + "\t"); } } } public static int narcissus(int i) { int hun = i / 100; int ten = i / 10 % 10; int ind = i % 10; int result = hun * hun * hun + ten * ten * ten + ind * ind * ind; return result; } } 水仙花是: 153 水仙花是: 370 水仙花是: 371 水仙花是: 407
2)while循环
①初始化语句 ②判断是否满足执行条件,满足则执行 ③执行迭代条件 看着是不是眼熟,和for循环一样,只是写法有区别
public class HelloWorld { public static void main(String[] args) { // 初始化语句; // while (执行条件){ // 执行语句; // 迭代语句; // } int i = 0; while ( i < 3) { System.out.println("结果:HelloWorld"); i++; } } } 结果:HelloWorld 结果:HelloWorld 结果:HelloWorld
3)for和while异同点技巧
(1)相同点:都用于循环,两者可以等价使用,先判断后执行
(2)不同点:for迭代变量只能在循环体内使用;while的迭代变量可以在循环体外使用;
(3)使用技巧:知道循环次数用for,不知道用while
4)do…while循环
public class HelloWorld { public static void main(String[] args) { // 初始化语句; // do{ //任何情况下都会先执行do里面的语句一次 // 执行语句; // 迭代语句; // }while (执行条件); int i = 0; do{ System.out.println("结果:HelloWorld"); i++; } while( i < 3); } } 结果:HelloWorld 结果:HelloWorld 结果:HelloWorld
4、特殊循环
1)for死循环
public class HelloWorld { public static void main(String[] args) { for(;;){ System.out.println("死循环"); } } }
2)while死循环
public class HelloWorld { public static void main(String[] args) { while (true){ System.out.println("死循环"); } } }
3)do…while死循环
public class HelloWorld { public static void main(String[] args) { do{ System.out.println("死循环"); } while (true); } }
4)多层循环,2层为例9*9乘法表
public class HelloWorld { public static void main(String[] args) { 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(); } } }
5、跳出循环break、continue
1)break:跳出并结束当前循环
2)continue:跳出当前循环,进入下一次循环
一份代码完成两个循环好做比较
public class HelloWorld { public static void main(String[] args) { for (int i = 0; i < 10; i++) { if(i == 5){ break; } System.out.print(i + "\t"); } System.out.println(); System.out.println("==================continue分割线===================="); for (int i = 0; i < 10; i++) { if(i == 5){ continue; } System.out.print(i + "\t"); } } }
二、初识Java的API(Application Programming Interface)
1、包名
import java.util.Scanner;
2、用法
import java.util.Scanner; public class HelloWorld { public static void main(String[] args) { Scanner scan = new Scanner(System.in); String next = scan.next(); System.out.println("打印内容: "+next); } }
3、随机从1-100生成数和用户输入做比较大小,相等退出,案例:
import java.util.Random; import java.util.Scanner; public class HelloWorld { public static void main(String[] args) { while (true) { Random rd = new Random(); int rdNum = rd.nextInt(100)+1; Scanner scan = new Scanner(System.in); System.out.print("请您输入整型数字: "); int numInput = scan.nextInt(); if (numInput > rdNum) { System.out.println("随机数是:" + rdNum); System.out.println("用户输入是:" + numInput); System.out.println("用户输入大"); } else if (numInput < rdNum) { System.out.println("随机数是:" + rdNum); System.out.println("用户输入是:" + numInput); System.out.println("用户输入小"); } else { System.out.println("随机数是:" + rdNum); System.out.println("用户输入是:" + numInput); System.out.println("输入一样大,结束游戏"); break; } } } }