【JAVA学习】005_键盘录入Scanner&条件判断if/switch&局部代码块
前言
记录一个小白的Java学习之旅……
一、键盘录入
键盘录入实现步骤:
第一步:导包
import java.util.Scanner;
注意:写在package的下面,写在class的上面
第二步:创建对象
Scanner sc = new Scanner(System.in);
第三步:调用方法
int i = sc.nextInt();
package com;
import java.util.Scanner;
public class demo11 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); // 创建对象
System.out.println("输入一个数字:");
int i = sc.nextInt(); // 调用方法,定义变量结果数据为数字
System.out.println("输入一个字符串:");
String str = sc.next(); // 调用方法,定义变量结果数据为字符串
System.out.println("输入一个short:");
Short ss = sc.nextShort(); // 调用方法,定义变量结果数据为short
System.out.println("输入一个double:");
Double dd = sc.nextDouble(); // 调用方法,定义变量结果数据为double
System.out.println("输入一个float:");
Float ff = sc.nextFloat(); // 调用方法,定义变量结果数据为float
System.out.println(i + "……" + str + "……" + ss + "……" + dd + "……" + ff);
}
}
输出结果:
输入一个数字:
1
输入一个字符串:
aa
输入一个short:
1
输入一个double:
2
输入一个float:
3
1……aa……1……2.0……3.0
二、条件判断
if语句
格式一:if(){}
if(条件表达式){
语句体;
}
if(条件表达式) 一条有效语句;
执行流程:
如果程序执行到if语句的时候,会去看条件表达式的结果是true还是false
如果是true,就会进入到if语句中,执行里面的语句体内容
如果是false,就不会进入到if语句中,就不会执行里面的语句体内容
public class demo12 {
public static void main(String[] args) {
int i = 1;
int j = 2;
if (i < j){
System.out.println(i + " < " + j); // 1 < 2
}
boolean b = true;
if (b == false){
System.out.println(b + "……B1"); // 不满足条件,不执行
}
if (b = false){
System.out.println(b + "……B2"); // 修改b值为false,不满足条件,不执行
}
System.out.println(b + "……B3"); // false……B3
boolean c = false;
if (c){
System.out.println(c + "……C1"); // 修改b值为false,不满足条件,不执行
}
System.out.println(c + "……C2"); // false……C2
if(3 > 2) System.out.println("3 > 2"); // 3 > 2 // 当if语句中只有一条有效语句的时候,花括号是可以省略不写的
if(3 < 2)
System.out.println("1111"); // 不满足条件,不执行
System.out.println("2222"); // 2222 // 同上面的if语句没有关系
if(3 < 2)
int d = 1; // 编译报错:【java: 此处不允许使用变量声明】,此处相当于两条有效语句:int d; d = 1;
}
}
格式二:if(){}else{}
if(条件表达式){
语句体;
}else{
语句体;
}
执行流程:
如果程序执行到if语句的时候,会去看条件表达式的结果是true还是false
如果是true,就会进入到if语句中,执行里面的语句体内容
如果是false,就不会进入到if语句中,会进入到else中,执行里面的语句体内容
public class demo13 {
public static void main(String[] args) {
int i = 1;
int j = 2;
if (i > j){
System.out.println("i = " + i + " 最大"); // 不满足条件,不执行语句
}else{
System.out.println("j = " + j + " 最大"); // j = 2 最大 // 满足条件,执行语句
}
}
}
格式三:if(){}else if(){}else{}
if(条件表达式){
语句体;
}else if(条件表达式){
语句体;
} ……
else{
语句体;
}
执行流程:
如果程序执行到if语句的时候,会去看条件表达式的结果是true还是false
如果是true,就会进入到if语句中,执行里面的语句体内容
如果是false,就会继续往下走,看else if的条件表达是的结果是true还是false
……
package com;
public class demo14 {
public static void main(String[] args) {
int i = 5;
if (i > 7){
System.out.println("i = " + i + " , i > 7");
} else if (i > 6) {
System.out.println("i = " + i + " , i > 6");
} else if (i > 5) {
System.out.println("i = " + i + " , i > 5");
} else if (i > 4) {
System.out.println("i = " + i + " , i > 4"); // i = 5 , i > 4
} else {
System.out.println("i = " + i + " , i > 3"); // 在上一步,if判断已经结束,不会执行该语句
}
}
}
注意:else可以省略不写(不建议)
package com;
public class demo15 {
public static void main(String[] args) {
int i = 5;
if (i > 7){
System.out.println("i = " + i + " , i > 7");
} else if (i > 6) {
System.out.println("i = " + i + " , i > 6");
} else if (i > 5) {
System.out.println("i = " + i + " , i > 5");
} else if (i > 4) {
System.out.println("i = " + i + " , i > 4"); // i = 5 , i > 4
}
}
}
public class demo16 {
public static void main(String[] args) {
int i = 5;
int a;
if (i > 7){
a = 1;
} else if (i > 6) {
a = 2;
} else if (i > 5) {
a = 3;
} else if (i > 4) {
a = 4;
}else{
a = 5;
}
System.out.println(a); // 4
}
}
public class demo17 {
public static void main(String[] args) {
int i = 5;
int a;
if (i > 7){
a = 1;
} else if (i > 6) {
a = 2;
} else if (i > 5) {
a = 3;
} else if (i > 4) {
a = 4;
}
System.out.println(a); // 编译报错:【java: 可能尚未初始化变量a】
}
}
switch语句
格式:
switch(表达式){
case 取值1: 语句体; break; case 取值2: 语句体; break; case 取值3: case 取值4: 语句体; break; …… default: 语句体; break;
}
执行流程:
当程序执行到switch的时候,会进入到switch,会找第一个case进行匹配,如果匹配成功,就进入到case中执行里面的语句体内容和break;如果没有匹配成功,会继续往下走,找第二个case继续匹配……
如上,满足case取值3或case取值4时,会执行相同的语句体和break
如果所有的case都不匹配,最后会执行default中的语句体和break
public class demo18 {
public static void main(String[] args) {
int i = 3;
switch (i){
case 1:
System.out.println("i1 = " + i);
break;
case 2:
System.out.println("i2 = " + i);
break;
case 3:
System.out.println("i3 = " + i); // i3 = 3
break;
case 4:
System.out.println("i4 = " + i);
break;
default:
System.out.println("i5 = " + i);
break;
}
}
}
注意:
switch中的表达式的数据类型可以为:
byte,short,int,char,string,枚举
default可以放在任意一行,但是不管放在哪一行,都会先找第一个case去匹配,如果所有case都不匹配,才会执行default
public class demo19 { public static void main(String[] args) { int i = 5; switch (i){ case 1: System.out.println("i1 = " + i); break; case 2: System.out.println("i2 = " + i); break; default: System.out.println("i5 = " + i); // i5 = 5 break; case 3: System.out.println("i3 = " + i); break; case 4: System.out.println("i4 = " + i); break; } } }
default可以省略不写(不建议)
不写default,即默认为: default: break;
break可以省略不写(不建议)
public class demo20 { public static void main(String[] args) { int i = 3; switch (i){ case 1: System.out.println("i1 = " + i); break; case 2: System.out.println("i2 = " + i); case 3: System.out.println("i3 = " + i); // i3 = 3 // 满足条件,执行该语句 case 4: System.out.println("i4 = " + i); // i4 = 3 // 上个case满足条件后未执行break,switch语句未结束,执行case4 default: System.out.println("i5 = " + i); // i5 = 3 // switch语句未结束,执行default break; } } }
switch结束标记:
1) break; 2) 遇到结尾 }
何时使用if和switch
如果是判断某个区间范围,推荐使用if
如果是判断某几个数据,推荐使用switch
三、局部代码块
代码块
由一对花括号括起来的,就称为代码块
{
代码;
}
局部代码块
写在main(程序执行入口)里面的代码块,就称为局部代码块
public class demo21 {
public static void main(String[] args) {
int i;
// 局部代码块
{
i = 1;
int j = 2;
}
// 局部代码块
{
int j = 3;
}
System.out.println(i); // 1
// System.out.println(j); // 3 // 变异报错,找不到变量j
}
}
局部代码块作用:
能够让变量更早的在内存中消失,节省内存空间