在上一篇中,学习了基本运算符的使用以及小练习
SE运算符
运算符小练习
在本篇中会学习循环控制等一系列知识
顺序结构:就是按照代码书写的顺序一条条往下执行
public static void main(String[] args) { System.out.println("aaa");//aaa System.out.println("bbb");//bbb }
输出aaa bbb 若调换顺序:
public static void main(String[] args){ System.out.println("bbb"); System.out.println("aaa"); }
则输出bbb aaa,这种则称为顺序结构
分支结构:分支是根据判断条件的结果(真或假)而选择的向前路径的运行方式
public static void main(String[] args) { int a=10; if (a==10){ //判断条件(布尔表达式) System.out.println("hello word"); //代码块 } }
只有一个if语句,上述代码为单分支
public static void main(String[] args) { int a=10; if(a==10){ System.out.println(a); System.out.println("hello word"); }else{ System.out.println("hello hello"); } }
注:在if语句中不写大括号默认只会执行一条语句
public static void main(String[] args) { int a=10; if(a>10){ System.out.println(a); System.out.println("hello word"); }else if(a==10){ System.out.println("hello hello"); }else{ System.out.println("hello"); }
注:悬垂else会使代码的可读性变差
public static void main(String[] args) { int a=10; int b=20; if(a==10) if(b==10) System.out.println("aaa"); else System.out.println("bbb"); }
最终结果输出“bbb”,这种称为悬垂else(不要省略括号来避免发生)
public static void main(String[] args) { int a=1; switch(a) { case 1: System.out.println("1"); break; //在switch中大部分语句都需要带break,如果失去那么会失去分支的特性 case 2: System.out.println("2"); break; default : System.out.println("输入错误"); break; } }
switch中会有一条或多条case语句来选择,若都不满足则会执行default语句
switch语句中通常情况下case语句中要带break
不带break,则会继续执行到下一个break,才能跳出。
面试题:不能作为switch的参数的是??
在经过一些列测试后得出:
不能做参数的有
1.long类型
2.float类型 double类型
3.boolean类型
注:字符、字符串、枚举是可以作为参数的
循环:重复的做一件事情
public static void main(String[] args) { int i=0; while(i<10){ //布尔表达式 System.out.println(i); //代码块(一行或多行) i++; } }
public static void main(String[] args) { for(int i=0;i<10;i++){ //布尔表达式 System.out.println(i); //代码块(一行或多行) } }
执行顺序:
表达式一 -》表达式二 -》语句块 -》表达式三 -》表达式二 -》语句块 -》表达式三 -》……
do while循环先执行语句块,后执行判断条件
public static void main21(String[] args) { //do while int i=5; do { System.out.println(i); i--; }while(i>=0); //特点:至少执行一次。 }
break 跳转,跳出循环
public static void main(String[] args){ //break int i=1; while(i<=5){ System.out.println(i); if(i==3){ break; //当i==3的时候,进入if,break跳出while循环 } //输出为;1 2 3 i++; } }
break作用会跳出整个循环,故结果看到三后的数字全部没有进行打印
continue 跳出本次循环
public static void main8(String[] args){ int i=1; while(i<=5){ if(i==3){ //当i==3的时候,进入if,continue跳出本次while循环 i++; continue; } System.out.println(i); //输出为:1 2 4 5 i++; } }
continue的作用是跳出本次循环,故结果看到只有在3时未进行打印
public static void main(String[] args) { int a=10; System.out.println("hello word"); System.out.printf("%d",a); //格式化输出,同c语言 }
方法一:System.in.read()从键盘输入(不常用)
public static void main23(String[] args) throws IOException { System.out.println("Enter a char"); //一般不使用 char i=(char)System.in.read(); //win键+Alt键+回车,自动提示解决方案。 System.out.println(i); }
方法二:
使用Scanner这个类来做输入
Scanner在import java.util.Scanner; 这个包内
public static void main24(String[] args) { Scanner scanner=new Scanner(System.in); System.out.println("年龄:"); int age=scanner.nextInt(); System.out.println(age); System.out.println("价格:"); double agr=scanner.nextDouble(); System.out.println(agr); System.out.println("姓名:"); //注:字符串放到最后会提前结束 bug 先输入字符后输入数字 String agq=scanner.nextLine(); System.out.println(agq); }
注:在输入的时候有一定的bug,字符串不能放到最后,不然最后一次输入时不能进行输入
next和nextLine的区别:
nextLine和next可以同时打印字符串,
next:遇到空格结束
nextLine:打印一行