Scanner
- 接收字符串的两种方式:next方式接收和nextLine方式接收
public class Demo01 {
public static void main(String[] args) {
//创建一个扫描器对象,用于接收键盘数据
Scanner scanner0 = new Scanner(System.in);
System.out.println("使用next方式接收:");
//判断用户有没有输入字符串
if(scanner0.hasNext()){
//使用next方式接收
String str =scanner0.next();
System.out.println("输出的内容为:"+str);
}
Scanner scanner1 = new Scanner(System.in);
System.out.println("使用nextLine方式接收:");
if(scanner1.hasNextLine()){
//使用nextLine方式接收
String str1 =scanner1.nextLine();
System.out.println("输出的内容为:"+str1);
}
//凡是属于IO流的类如果不关闭会一直占用资源,养成习惯,用完就关掉
scanner0.close();
scanner1.close();
}
}
- next():
- 一定要读取到有效字符后才可以结束输入
- 对输入有效字符之前遇到的空白,next()方法会自动将其去掉
- 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符
- next()不能得到带有空格的字符串
- nextLine():
- 以Enter为结束符,nextLine()方法返回的是输入回车之前所有的字符
- 可以获得空白
Java的基本结构
1.顺序结构
- 语句与语句之间,框与框之间是按从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的,它是任何一个算法都离不开的一种基本算法结构。
2.选择结构
-
if单选择结构
if(布尔表达式){ //如果布尔表达式为true将执行语句 }
-
if双选择结构
if(布尔表达式){ //如果布尔表达式的值为true }else{ //如果布尔表达式的值为false }
-
多选择结构
if(布尔表达式 1){ //如果布尔表达式 1的值为true执行代码 }else if(布尔表达式 2){ //如果布尔表达式 2的值为true执行代码 }else if(布尔表达式 3){ //如果布尔表达式 3的值为true执行代码 }else{ //如果以上布尔表达式都不为true执行代码 }
-
嵌套的if结构
嵌套的if…else语句
if(布尔表达式 1){ //如果布尔表达式 1的值为true执行代码 if(布尔表达式 2){ //如果布尔表达式 2的值为true执行代码 } }
-
switch多选择结构
public static void main(String[] args) { char grade = 'c'; switch (grade){ case 'a': System.out.println("优秀"); break; case 'b': System.out.println("良好"); break; case 'c': System.out.println("及格"); break; case 'd': System.out.println("不及格"); break; default: System.out.println("未知"); } }
case穿透现象,当你不使用break进行终止,则会像顺序结构在第一个满足case条件后的所有语句都会被执行,知道执行到break语句;
default,为预设的默认值,当没有执行到匹配的case语句时执行;
在javaSE 7 开始switch支持String类型。
3.循环结构
-
while循环
while(布尔表达式){ //循环内容 }
-
只要布尔表达式为true,循环就会一直执行下去。
-
我们大多数情况时会让循环停止下来的,我也需要一个让表达式失效的方式来结束循环
-
少部分情况需要循环一直执行,比如服务器的请求响应监听等
-
循环条件一直为true就会造成无线循环,我们正常的业务编程中应该尽量避免死循环。会影响程序性能或者造成程序卡死奔溃
-
-
do…while循环
do{ //循环语句 }while (布尔表达式)
- do…while先执行后判断
- do…while 循环语句至少会执行一次;
-
for循环
for(初始化;布尔表达式;更新){ //代码语句 }
- for循环语句时支持迭代的一种通用结构,时最有效,最灵活的循环结构。
- for循环执行的次数实在执行前就确定的
-
嵌套for循环,打印九九乘法表,打印三角形
- 九九乘法表
public class ForDemo { public static void main(String[] args) { for(int j=1;j<=9;j++) { for(int i=1;i<=j;i++){//每行的内容打印 System.out.print(j+"*"+i+"="+(i*j)+"\t"); } System.out.println(); } } }
- 打印三角形
public class TestDemo { public static void main(String[] args) { for(int i=1;i<=5;i++){ for(int j=5;j>=i;j--) System.out.print(" "); for (int j=1;j<=i;j++) System.out.print("*"); for (int j=1;j<i;j++) System.out.print("*"); System.out.println(); } } }
-
增强for循环
for(声明语句:表达式){ //代码语句 } public class ForDemo { public static void main(String[] args) { int[] arr={1,2,3,4,5}; for(int x:arr){ System.out.println(x); } } }
- 声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与次视数组元素的值相等
- 表达式:表达式是要访问的数组名,或是返回值为数组的方法
break 与 continue
-
break
- break在任何循环语句的主体部分,都可用break控制循环的流程。
- break用于强行退出循环,不执行循环中剩余的语句
-
continue
- continue语句在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定