3.JAVA基础
1.流程控制语句
流程控制语句分为顺序结构,选择结构,循环控制结构
顺序结构是程序中最简单最基本的流程控制,没有特定的语法结构(默认),按照代码的先后顺序依次执行
总的来说:从上往下一次执行
选择结构(分支结构)
有特定的语法规则,代码能执行具体的逻辑运算进行判断,逻辑运算的结果有两个,所以产生选择执行不同的代码
java语言提供了两只选择结构语句:if语句与switch语句
2.if语句
if语句:用于处理判断,(如何。。否则)
第一种格式:
if(关系表达式){
语句体
}
如果关系表达式结果为true,则执行语句体,否则不执行语句体
第二种格式:
if(关系表达式){
语句体1
}else{
语句体2
}
如果关系表达式结果为true,则语句体1,否则执行语句体2
if(关系表达式){
语句体1
}else if(关系表达式2){
语句体2
}else{
语句体3
}
首先判断关系表达式1的结果如果为true,则执行语句体1,否则判断关系表达式2
在做一个程序的基本测试的时候,一定要考虑三个数据
正确数据,错误数据,边界数据,一定要对这三个数据都有处理
例1:
/*
* if语句的第一种格式
* if(关系表达式){
* 语句体
* }
* 执行流程:
* 首先判断关系表达式的结果是true还是false
* 如果是true就执行语句体
* 如果是false就不执行语句体
*
* 如果 则
* */
public class SelectDemo {
public static void main(String[] args) {
int x = 3;
// 如果是真就会执行里面的输出语句(语句体)
if (x == 3) {
System.out.println("x的值是3");
}
// 如果是假,不会执行里面的输出语句(语句体)
if(x == 5){// false
System.out.println("x的值是5");
}
// 因为他也是最基本的顺序结构,所以执行完if后会执行输出语句
System.out.println("over");
}
}
例2:
/*
* if语句注意事项:
* 1.比较表达式无论简单还是复杂,结果必须是boolean类型
* 2.if语句控制的语句体如果是一条语句,大括号可以省略;如果是多条语句,就不能省略,建议永远不要省略
* 3.分号:代表结束,一般来说有左括号就没有分号,有分号就没有左括号
* */
public class IfDemo {
public static void main(String[] args) {
int x = 10;
// 需求:判断x的值是不是10,如果是则输出提示
if (x == 10) {
System.out.println("x等于10");
}
// 需求:判断x是否大于5小于20
if (x > 5 && x < 20) {
System.out.println("x大于5小于20");
}
System.out.println("----------------");
int y = 100;
if(y == 100){
System.out.println("y等于100");
}
System.out.println("over");
int z = 1000;
if(z != 1000);// 分号代表结束,所以这个地方就代表if语句结束了,其实这里是有语句体的,只不过是空语句
{// 代码块,暂时可以当做正常的程序执行
System.out.println("z的值不是1000");
}
// 严格按照格式来,准保你不会错处
/*
* if(x==5){
* }
* */
}
}
例3:
/*
* if(关系表达式){
* 语句体1
* }else{
* 语句体2
* }
*
* 执行流程:
* 首先判断关系表达式看其结果是true还是false
* 如果是true则执行语句体1
* 如果是false则执行语句体2
* 不管是执行语句体1还是语句体2都不影响其他代码的运行
* */
public class IfDeme2 {
public static void main(String[] args) {
// 判断两个数据是否相等
int a = 10;
int b = 20;
if(a == b){
System.out.println("a等于b");
}else{
System.out.println("a不等于b");
}
}
}
例4:
/*
* 需求:键盘录入成绩,判断并输出成绩的等级
* 100-90 优秀
* 89-80 好
* 79-70 良
* 69-60 及格
* 59-0 不及格
*
* 分析:
* 键盘录入成绩就要使用Scanner对象录入数据
* 用if语句判断成绩是否在100-90之间
* 如果是则输出优秀
* 否则继续判断下一个等级是否成立
* 如果都不是那么就提示成绩输入错误
*
* 步骤:
* a.创建Scanner对象,键盘录入数据
* b.用if语句判断成绩是否在100-90之间
* 如果是则输出优秀
* 否则继续判断下一个等级是否成立
* 如果都不是那么就提示成绩输入错误
* */
public class IfDemo3 {
public static void main(String[] args) {
// a.创建Scanner对象,键盘录入数据
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的考试成绩");
int score = sc.nextInt();
// b.用if语句判断成绩是否在100-90之间
if (score <= 100 && score >= 90) {// true
// 如果是则输出优秀
System.out.println("优秀");
} else if (score <= 89 && score >= 80) {
System.out.println("好");
} else if (score <= 79 && score >= 70) {
System.out.println("良");
} else if (score <= 69 && score >= 60) {
System.out.println("及格");
} else if (score <= 59 && score >= 0) {
System.out.println("不及格");
} else {
// 如果都不是那么就提示成绩输入错误
System.out.println("成绩输入错误");
}
}
}
例5:
public class IfDemo4 {
public static void main(String[] args) {
int a = 10;
int b = 20;
int c = 30;
int max;
// max = a > b ? (a > c ? a : c) : (b > c ? b : c);
// System.out.println("max:" + max);
// if语句嵌套
if (a > b) {
if (a > c) {
max = a;
} else {
max = c;
}
} else {
if (b > c) {
max = b;
} else {
max = c;
}
}
System.out.println("max:" + max);
}
}
例6:
/*
* 需求:键盘录入 判断一个数是奇数还是偶数
* 分析:
* 除以二除不断的则是奇数 %2=1
* 除以二除的断则是偶数 %2=0
* 步骤:
* a.创建Scanner对象,接收用户录入的数据
* b.判断这个数模二等于0吗?
* 如果等于0则是偶数
* 如果不等于0则奇数
* */
public class IfTest {
public static void main(String[] args) {
// a.创建Scanner对象,接收用户录入的数据
Scanner sc = new Scanner(System.in);
System.out.println("请输入要判断的值");
int x = sc.nextInt();
// b.判断这个数模二等于0吗?
if(x%2 == 0){
// 如果等于0则是偶数
System.out.println("这个数是偶数");
}else{
// 如果不等于0则奇数
System.out.println("这个数是奇数");
}
}
}
例7:
/*
* 需求:求两个数的最大值
* 分析:
* 拿第一个数和第二个进行比较
* 如果第一个数大于第二个数则第一个数是最大值
* 否则第二个数是最大值
* 步骤:
* a.判断第一个数是否大于第二个数
* 如果是则第一个数是最大值
* 如果不是则第二个数是最大值
* */
public class IfTest2 {
public static void main(String[] args) {
int a = 1;
int b = 2;
int max;
// a.判断第一个数是否大于第二个数 a = b
if(a>b){// true
max = a;
}else{// false
max = b;
}
System.out.println("max:"+max);
// 用三元改进
max = a>b?a:b;
System.out.println("max:"+max);
/*
* 三目运算符可以用来改进一些if语句,但是不是所有的都可以改进,因为三目运算符是一个运算符,运算符的操作完成后是要有一个结果的
* 所有说三目运算符能够实现的,都可以用if语句实现 ,if语句能实现的不一定能用三目运算符改进
*
* 什么时候用三目运算符,什么时候用if呢?
* 如果是需要得出一个结果值的逻辑处理,用三目
* 如果是复杂点的逻辑判断用if
* */
}
}
2.switch语句
switch(表达式int类型){
case 值1:
语句块;
break;
case 值2:
语句块;
break;
default:
语句块;
break;
}
格式解释:
switch:表示这个是switch选择结构
表达式:表示这个地方的取值是有限定的
byte,short,int,char
jdk5以后可是枚举,jdk7以后可以是字符串
case:后面跟的是也要和表达式进行比较的值
语句块:要执行的代码块
break:表示中断,结束,可以控制switch语句的结束
default:当所有的值都和表达式不匹配的时候,就执行default控制的语句,其实他就相当于if语句里面的else
执行流程
首先计算出表达式的值,任何和case的值依次比较,一旦拥有对应的值就执行相应的语句,再执行过程遇到break就会结束
注意事项:
case后面只能常量,不能是变量,而且多个case的值不能出现相同的
break可以省略,但是不建议,因为结构可能不是我们想要的,会出现一个一个现象:case穿透
default可以省略,但是不建议,因为它的作用是对不正确的情况给出提示
switch结束条件:遇到break,执行到末尾结束
例:
public class SwitchDemo {
public static void main(String[] args) {
System.out.println("魔镜魔镜,这个世界上最帅的人是谁?");
System.out.println("1:一个,2:coco,3:小冉");
Scanner sc = new Scanner(System.in);
int x = sc.nextInt();
// 做单选题功能
switch (x) {
case 1:
System.out.println("选择正确,你这个魔镜是真的");
break;
case 2:
System.out.println("就问你抗不抗摔");
break;
case 3:
System.out.println("就问你抗不抗摔");
break;
default:
System.out.println("没有该选项");
break;
}
}
}
3.语句的使用
if语法的使用场景:
1.针对结构是boolean类型的判断
2.针对一个范围的判断
3.针对几个常量值的判断
switch语句
1.针对选择的时候进行判断,经典:单选。针对常量值的判断