03-Java运算符和流程控制语句


第一章 运算符

1.1 自增自减运算符

基本用法:(掌握)

​ 不管是写在前面,还是写在后面,只要单独写一行,结果就是一样的。

代码示例:

int a = 1;

//后++
a++;//把变量里面的值+1,执行完毕之后,变量里面的值就是2
System.out.println(a);//2

//先++
++a;//把变量里面的值+1,执行完毕之后,变量里面的值就是3
System.out.println(a);//3

//后--
a--;
System.out.println(a);//2

//先--
--a;
System.out.println(a);//1

扩展用法:(了解)

先++和后++,以后在实际开发中,我们基本上都是单独写成一行的。

如果实际参与了计算,一般在代码里面是不会写的。

运算规则:

先++:

​ 先加后用

int a = 1;
int b = ++a;
// 先把变量a的值1,自增变成2.
// 再把2拿出来使用,赋值给变量b
所以,程序运行完毕之后,a为2,b为2

后++:

​ 先用后加

int a = 1;
int b = a++;
// 先把变量a的值进行使用,赋值给变量b
// 然后变量a再进行自增
所以,程序运行完毕之后,a为2,b为1

面试题举例:

public class Test {
    public static void main(String[] args) {
        int x = 10;
        
        //后++,先用后加
        //先把x的值10拿出来用,赋值给y,然后x再进行自增变成11
        //当这行代码执行完毕之后,x = 11 y = 10
        int y = x++;
        
        //先++,先加后用
        //先把x的值进行自增,变成12,再把自增之后的值拿出来用。赋值给z
        //当这行代码执行完毕之后,x = 12 z = 12
        int z = ++x;
        
        //因为x自增了两次就是12
        System.out.println("x:" + x);//12
        System.out.println("y:" + y);//10
        System.out.println("z:" + z);//12
    }
}

应用场景一:

​ 当过生日的时候,记录age的变量要自增。

​ 变量在合适的时候需要自增一次。

应用场景二:

​ 商城项目中的购物车,也需要用到自增,自减运算符。

应用场景三:

​ 统计数量的时候。

​ 在一开始,我们可以定义一个变量记录0

​ 把所有参与统计的数据,一个一个进行对比,如果满足,变量就自增一次。

​ 当所有参与统计的数据全部统计完毕,那么变量就表示最终的次数。

​ 举例:

​ 1 ~ 100 之间有多少个偶数?

​ 代码中,我们可以从1开始去数到100。如果遇到一个偶数,那么统计的变量就需要自增一次。

​ 当100个数全部统计完毕之后,变量的值就是最终的结果。

​ 具体的代码我们会在后面学习完循环的时候写,现在知道一下应用场景即可。

1.2 赋值运算符

分类:

符号 说明
= 把等号的右边赋值给左边。int a = 10;
+= 把左边和右边进行相加,结果赋值给左边,对右边没有任何影响。
-= 把左边和右边进行相减,结果赋值给左边,对右边没有任何影响。
*= 把左边和右边进行相乘,结果赋值给左边,对右边没有任何影响。
/= 把左边和右边进行相除,结果赋值给左边,对右边没有任何影响。
%= 把左边和右边进行相除,把余数赋值给左边,对右边没有任何影响。

代码示例:

//赋值运算符
//基本的赋值运算符 =

//其他赋值运算符
//+= -= *= /= %=
//以+=为例
int a = 10;
int b = 20;
//就表示把左右进行相加,把结果赋值给左边的,对右边没有任何影响
//相当于 a = a + b;
a += b;
System.out.println(a);//30
System.out.println(b);//20

1.3 比较运算符

概念:

​ 比较运算符,又叫做关系运算符,其实就是做了一个判断而已。

分类:

==:判断左右是否相等
!=:判断左右是否不相等
>:判断左边是否大于右边
>=:判断左边是否大于等于右边
<:判断左边是否小于右边
<=:判断左边是否小于等于右边

注意点:

​ 关系运算符的结果只能是布尔类型的,要么是true,要么是false。在后面实际开发中,我们会根据两种情况来执行不同的代码。

​ 用户登录,正确true,登录成功

​ 错误false,登录失败

​ ==千万不能写成一个=

练习:

需求:

​ 您和您的约会对象在餐厅里面正在约会。
​ 键盘录入两个整数,表示你和你约会对象衣服的时髦度。(手动录入0~10之间的整数,不能录其他)
​ 如果你的时髦程度大于你对象的时髦程度,相亲就成功,输出true。
​ 否则输出false。

代码示例:

//分析:
//1.键盘录入两个整数
Scanner sc = new Scanner(System.in);
System.out.println("请输入你衣服的时髦度");
int fashtion1 = sc.nextInt();
System.out.println("请输入约会对象衣服的时髦度");
int fashtion2 = sc.nextInt();
//2.比较一下即可
boolean result = fashtion1 > fashtion2;
System.out.println(result);

1.4 逻辑运算符

1.4.1 而且和或者

分类:

​ & 逻辑与,建议读作并且、而且。

​ 表示需要同时满足左边和右边才可以。

​ | 逻辑或,建议读作或者。

​ 表示两边的条件只要满足其中一个就可以了。

代码示例:

//& 而且
//规则:两边都为真,结果才是真。只要有一个为假,结果就是假
System.out.println(true & true);//true
System.out.println(false & true);//false
System.out.println(true & false);//false
System.out.println(false & false);//false

// |  或者
//规则:两边都为假,结果才是假,只要有一个为真,结果就是真
System.out.println(true | true);//true
System.out.println(false | true);//true
System.out.println(true | false);//true
System.out.println(false | false);//false

应用场景一:

​ 用户在登录的时候,需要用户名和密码这两个同时输入正确了,那么才是可以的。

​ 此时就是两个条件同时满足,用并且。

应用场景二:

​ 丈母娘跟女婿提要求:需要有房子,或者有车子就可以穿走我的小棉袄。

​ 此时就是两个条件中只要满足其中一个即可,用或者

1.2.2 非/取反

运算规则:

​ 改变true和false的结果。

​ 如果是true,取反之后变成false

​ 如果是false,取反之后变成true

代码示例:

System.out.println(true);//true
System.out.println(!true);//false
System.out.println(!false);//true

建议:

​ 最多只能用一次。用多了没有任何意义。

代码示例:

System.out.println(!!true);

1.4 短路逻辑运算符

分类:

​ && 短路且、短路与

​ || 短路或

特点:

​ 只要左边能确定表达式最终的结果,那么右边不会参与计算。

&&:

​ 左边为true,那么右边会参与计算。

​ 左边为false,那么右边不会参与计算。

||:

​ 左边为true,那么右边不会参与计算。

​ 左边为false,那么右边会参与计算。

常用的逻辑运算符:

​ && || !

练习:

​ 数字6是一个真正伟大的数字,键盘录入两个整数。

​ 如果其中一个为 6,最终结果输出true。

​ 如果它们的和为 6的倍数。

​ 最终结果输出true。

​ 其他情况都是false。

代码示例:

//1.键盘录入两个整数
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数");
int a = sc.nextInt();
System.out.println("请输入第二个整数");
int b = sc.nextInt();
//2.a==6 || b==6 || (a + b) % 6 == 0
//三个条件选一个
boolean result = (a == 6) || (b == 6) || ((a + b) % 6 == 0);
System.out.println(result);

1.5 三元运算符

三元运算符又叫三元表达式,还有其他名字:问号冒号表达式,三目运算符。

格式:

​ 关系表达式 ? 表达式1 : 表达式2 ;

注意点:

​ 三元运算符的结果一定要被使用,可以赋值给一个变量,或者直接打印输出。

执行流程:

​ 先执行关系表达式。

​ 如果结果为真,执行表达式1,此时表达式1的结果就是整个三元运算符的结果。

​ 如果结果为假,执行表达式2,此时表达式2的结果就是整个三元运算符的结果。

代码示例:

int a = 10;
int b = 20;
//利用三元表达式求a和b之间的较大值
int max = a > b ? a : b ;
System.out.println(max);


System.out.println(a > b ? a : b);

1.6 练习 – 两只老虎

需求:

​ 动物园里有两只老虎,体重分别为通过键盘录入获得,请用程序实现判断两只老虎的体重是否相同。

代码示例:

//分析:
//1,键盘录入
Scanner sc = new Scanner(System.in);
System.out.println("请录入第一只老虎的体重");
int weight1 = sc.nextInt();
System.out.println("请录入第二只老虎的体重");
int weight2 = sc.nextInt();
//2.比较
// String result = 体重1 == 体重2 ? "相同"  : "不相同";
String result = weight1 == weight2 ? "相同" : "不相同";
System.out.println(result);

1.7 练习-求三个值的较大值

需求:

​ 一座寺庙里住着三个和尚,已知他们的身高分别为150cm、210cm、165cm,请用程序实现获取这三个和尚的最高身高。

代码示例:

//1.定义三个变量记录和尚的身高
int height1 = 150;
int height2 = 165;
int height3 = 210;
//2.求出任意两个数字的较大值
int temp = height1 > height2 ? height1 : height2;
//3.再拿着这个较大值跟第三个数进行比较,求出三个数字的最大值
int max = temp > height3 ? temp : height3;
System.out.println(max);

1.8 运算符的优先级

小括号优先于所有。

想要让谁先运行,就把谁给括起来就可以了。

第二章 流程控制语句

在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。所以,我们必须清楚每条语句的执行流程。而且,很多时候要通过控制语句的执行顺序来实现我们想要的功能。

2.1 流程控制语句分类

​ 顺序结构

​ 分支结构(if, switch)

​ 循环结构(for, while, do…while)

2.2 顺序结构

顺序结构是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。

顺序结构执行流程图:

03-Java运算符和流程控制语句

2.3 分支结构:if语句

if语句格式1

格式:
if (关系表达式) {
    语句体;	
}

执行流程:

①首先计算关系表达式的值

②如果关系表达式的值为true就执行语句体

③如果关系表达式的值为false就不执行语句体

④继续执行后面的语句内容

03-Java运算符和流程控制语句

示例:

public class IfDemo {
	public static void main(String[] args) {
		System.out.println("开始");	
		//定义两个变量
		int a = 10;
		int b = 20;	
		//需求:判断a和b的值是否相等,如果相等,就在控制台输出:a等于b
		if(a == b) {
			System.out.println("a等于b");
		}		
		//需求:判断a和c的值是否相等,如果相等,就在控制台输出:a等于c
		int c = 10;
		if(a == c) {
			System.out.println("a等于c");
		}		
		System.out.println("结束");
	}
}
练习1:老丈人选女婿

需求:

​ 键盘录入女婿的酒量,如果大于2斤,老丈人给出回应,否则没有任何回应

代码示例:

//分析:
//1.键盘录入女婿的酒量
Scanner sc = new Scanner(System.in);
System.out.println("请输入女婿的酒量");
int wine = sc.nextInt();//5
//2.对酒量进行一个判断即可
if(wine > 2) {
    System.out.println("不错哟,小伙子!");
}
练习2:考试奖励

需求:

​ 键盘录入一个整数,表示小明的考试名次,如果名次为1,小红可以当小明的女朋有了。

代码示例:

//分析:
//1.键盘录入一个整数,表示小明的考试名次
Scanner sc = new Scanner(System.in);
System.out.println("请输入小明的名次");
int rank = sc.nextInt();
//2.对小明的考试成绩进行判断即可
if(rank == 1){
    System.out.println("小红成为了小明的女朋友");
}
第一种格式的细节:
  1. 如果我们要对一个布尔类型的变量进行判断,不要写==,直接把变量写在小括号中即可。

  2. 如果大括号中的语句体只有一条,那么大括号可以省略不写

    如果大括号省略了,那么if只能控制距离他最近的那一条语句。

    建议:自己不要去写,如果别人这么写了,你要能看懂即可。

if语句格式2

格式:
if (关系表达式) {
    语句体1;	
} else {
    语句体2;	
}

执行流程:

①首先计算关系表达式的值

②如果关系表达式的值为true就执行语句体1

③如果关系表达式的值为false就执行语句体2

④继续执行后面的语句内容

03-Java运算符和流程控制语句

示例:

public class IfDemo02 {
	public static void main(String[] args) {
		System.out.println("开始");		
		//定义两个变量
		int a = 10;
		int b = 20;
		//需求:判断a是否大于b,如果是,在控制台输出:a的值大于b,否则,在控制台输出:a的值不大于b
		if(a > b) {
			System.out.println("a的值大于b");
		} else {
			System.out.println("a的值不大于b");
		}		
		System.out.println("结束");
	}
}
练习1:吃饭

需求:

​ 键盘录入一个整数,表示身上的钱。

​ 如果大于等于100块,就是网红餐厅。

​ 否则,就吃经济实惠的沙县小吃。

代码示例:

//分析:
//1.键盘录入一个整数。表示身上的钱。
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数表示身上的钱");
int money = sc.nextInt();
//2.对钱进行判断
if(money >= 100){
    System.out.println("吃网红餐厅");
}else{
    System.out.println("福建大酒店");
}
练习2:影院选座

需求:

​ 在实际开发中,电影院选座也会使用到if判断。

​ 假设某影院售卖了100张票,票的序号为1~100。

​ 其中奇数票号坐左侧,偶数票号坐右侧。

​ 键盘录入一个整数表示电影票的票号。

​ 根据不同情况,给出不同的提示:

​ 如果票号为奇数,那么打印坐左边。

​ 如果票号为偶数,那么打印坐右边。

代码示例:

//分析:
//1.键盘录入票号
Scanner sc = new Scanner(System.in);
System.out.println("请输入票号");
int ticket = sc.nextInt();
if(ticket >= 1 && ticket <= 100){
    //合法
    //2.对票号进行判断
    if (ticket % 2 == 0) {
        //偶数
        System.out.println("坐右边");
    } else {
        //奇数
        System.out.println("坐左边");
    }
}else{
    //票号不合法
    System.out.println("票号不合法");
}

if语句格式3

格式:
if (关系表达式1) {
    语句体1;	
} else if (关系表达式2) {
    语句体2;	
} 
…
else {
    语句体n+1;
}

执行流程:

①首先计算关系表达式1的值

②如果值为true就执行语句体1;如果值为false就计算关系表达式2的值

③如果值为true就执行语句体2;如果值为false就计算关系表达式3的值

④…

⑤如果没有任何关系表达式为true,就执行语句体n+1。

03-Java运算符和流程控制语句

练习1:考试奖励

需求:

​ 小明快要期末考试了,小明爸爸对他说,会根据他不同的考试成绩,送他不同的礼物,

假如你可以控制小明的得分,请用程序实现小明到底该获得什么样的礼物,并在控制台输出。

分析:

​ ①小明的考试成绩未知,可以使用键盘录入的方式获取值

​ ②由于奖励种类较多,属于多种判断,采用if…else…if格式实现

​ ③为每种判断设置对应的条件

​ ④为每种判断设置对应的奖励

代码示例:

//95~100 自行车一辆
//90~94   游乐场玩一天
//80 ~ 89 变形金刚一个
//80 以下  胖揍一顿

//1.键盘录入一个值表示小明的分数
Scanner sc = new Scanner(System.in);
System.out.println("请输入小明的成绩");
int score = sc.nextInt();
//2.对分数的有效性进行判断
if(score >= 0 && score <= 100){
    //有效的分数
    //3.对小明的分数进行判断,不同情况执行不同的代码
    if(score >= 95 && score <= 100){
        System.out.println("送自行车一辆");
    }else if(score >= 90 && score <= 94){
        System.out.println("游乐场玩一天");
    }else if(score >= 80 && score <= 89){
        System.out.println("变形金刚一个");
    }else{
        System.out.println("胖揍一顿");
    }
}else{
    //无效的分数
    System.out.println("分数不合法");
}

原创文章,作者:,如若转载,请注明出处:https://blog.ytso.com/273755.html

(0)
上一篇 2022年7月12日
下一篇 2022年7月12日

相关推荐

发表回复

登录后才能评论