第一章 运算符
1.1 自增自减运算符
基本用法:(掌握)
不管是写在前面,还是写在后面,只要单独写一行,结果就是一样的。
代码示例:
int a = 1;//后++a++;//把变量里面的值+1,执行完毕之后,变量里面的值就是2System.out.println(a);//2//先++++a;//把变量里面的值+1,执行完毕之后,变量里面的值就是3System.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 = 10int y = x++;//先++,先加后用//先把x的值进行自增,变成12,再把自增之后的值拿出来用。赋值给z//当这行代码执行完毕之后,x = 12 z = 12int z = ++x;//因为x自增了两次就是12System.out.println("x:" + x);//12System.out.println("y:" + y);//10System.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);//30System.out.println(b);//20
1.3 比较运算符
概念:
比较运算符,又叫做关系运算符,其实就是做了一个判断而已。
分类:
==:判断左右是否相等!=:判断左右是否不相等>:判断左边是否大于右边>=:判断左边是否大于等于右边<:判断左边是否小于右边<=:判断左边是否小于等于右边
注意点:
关系运算符的结果只能是布尔类型的,要么是true,要么是false。在后面实际开发中,我们会根据两种情况来执行不同的代码。用户登录,正确true,登录成功错误false,登录失败==千万不能写成一个=
练习:
需求:
您和您的约会对象在餐厅里面正在约会。<br />键盘录入两个整数,表示你和你约会对象衣服的时髦度。(手动录入0~10之间的整数,不能录其他)<br />如果你的时髦程度大于你对象的时髦程度,相亲就成功,输出true。<br />否则输出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);//trueSystem.out.println(false & true);//falseSystem.out.println(true & false);//falseSystem.out.println(false & false);//false// | 或者//规则:两边都为假,结果才是假,只要有一个为真,结果就是真System.out.println(true | true);//trueSystem.out.println(false | true);//trueSystem.out.println(true | false);//trueSystem.out.println(false | false);//false
应用场景一:
用户在登录的时候,需要用户名和密码这两个同时输入正确了,那么才是可以的。此时就是两个条件同时满足,用并且。
应用场景二:
丈母娘跟女婿提要求:需要有房子,或者有车子就可以穿走我的小棉袄。此时就是两个条件中只要满足其中一个即可,用或者
1.2.2 非/取反
运算规则:
改变true和false的结果。如果是true,取反之后变成false如果是false,取反之后变成true
代码示例:
System.out.println(true);//trueSystem.out.println(!true);//falseSystem.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 顺序结构
顺序结构是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。
顺序结构执行流程图:

2.3 分支结构:if语句
if语句格式1
格式:if (关系表达式) {语句体;}
执行流程:
①首先计算关系表达式的值
②如果关系表达式的值为true就执行语句体
③如果关系表达式的值为false就不执行语句体
④继续执行后面的语句内容

示例:
public class IfDemo {public static void main(String[] args) {System.out.println("开始");//定义两个变量int a = 10;int b = 20;//需求:判断a和b的值是否相等,如果相等,就在控制台输出:a等于bif(a == b) {System.out.println("a等于b");}//需求:判断a和c的值是否相等,如果相等,就在控制台输出:a等于cint 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("小红成为了小明的女朋友");}
第一种格式的细节:
如果我们要对一个布尔类型的变量进行判断,不要写==,直接把变量写在小括号中即可。
如果大括号中的语句体只有一条,那么大括号可以省略不写
如果大括号省略了,那么if只能控制距离他最近的那一条语句。
建议:自己不要去写,如果别人这么写了,你要能看懂即可。
if语句格式2
格式:if (关系表达式) {语句体1;} else {语句体2;}
执行流程:
①首先计算关系表达式的值
②如果关系表达式的值为true就执行语句体1
③如果关系表达式的值为false就执行语句体2
④继续执行后面的语句内容

示例:
public class IfDemo02 {public static void main(String[] args) {System.out.println("开始");//定义两个变量int a = 10;int b = 20;//需求:判断a是否大于b,如果是,在控制台输出:a的值大于b,否则,在控制台输出:a的值不大于bif(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。

练习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("分数不合法");}
