第一章 运算符

1.1 自增自减运算符

基本用法:(掌握)

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

代码示例:

  1. int a = 1;
  2. //后++
  3. a++;//把变量里面的值+1,执行完毕之后,变量里面的值就是2
  4. System.out.println(a);//2
  5. //先++
  6. ++a;//把变量里面的值+1,执行完毕之后,变量里面的值就是3
  7. System.out.println(a);//3
  8. //后--
  9. a--;
  10. System.out.println(a);//2
  11. //先--
  12. --a;
  13. System.out.println(a);//1

扩展用法:(了解)

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

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

运算规则:

先++:

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

后++:

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

面试题举例:

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

应用场景一:

  1. 当过生日的时候,记录age的变量要自增。
  2. 变量在合适的时候需要自增一次。

应用场景二:

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

应用场景三:

  1. 统计数量的时候。
  2. 在一开始,我们可以定义一个变量记录0
  3. 把所有参与统计的数据,一个一个进行对比,如果满足,变量就自增一次。
  4. 当所有参与统计的数据全部统计完毕,那么变量就表示最终的次数。
  5. 举例:
  6. 1 ~ 100 之间有多少个偶数?
  7. 代码中,我们可以从1开始去数到100。如果遇到一个偶数,那么统计的变量就需要自增一次。
  8. 100个数全部统计完毕之后,变量的值就是最终的结果。
  9. 具体的代码我们会在后面学习完循环的时候写,现在知道一下应用场景即可。

1.2 赋值运算符

分类:

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

代码示例:

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

1.3 比较运算符

概念:

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

分类:

  1. ==:判断左右是否相等
  2. !=:判断左右是否不相等
  3. >:判断左边是否大于右边
  4. >=:判断左边是否大于等于右边
  5. <:判断左边是否小于右边
  6. <=:判断左边是否小于等于右边

注意点:

  1. 关系运算符的结果只能是布尔类型的,要么是true,要么是false。在后面实际开发中,我们会根据两种情况来执行不同的代码。
  2. 用户登录,正确true,登录成功
  3. 错误false,登录失败
  4. ==千万不能写成一个=

练习:

需求:

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

代码示例:

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

1.4 逻辑运算符

1.4.1 而且和或者

分类:

  1. & 逻辑与,建议读作并且、而且。
  2. 表示需要同时满足左边和右边才可以。
  3. | 逻辑或,建议读作或者。
  4. 表示两边的条件只要满足其中一个就可以了。

代码示例:

  1. //& 而且
  2. //规则:两边都为真,结果才是真。只要有一个为假,结果就是假
  3. System.out.println(true & true);//true
  4. System.out.println(false & true);//false
  5. System.out.println(true & false);//false
  6. System.out.println(false & false);//false
  7. // | 或者
  8. //规则:两边都为假,结果才是假,只要有一个为真,结果就是真
  9. System.out.println(true | true);//true
  10. System.out.println(false | true);//true
  11. System.out.println(true | false);//true
  12. System.out.println(false | false);//false

应用场景一:

  1. 用户在登录的时候,需要用户名和密码这两个同时输入正确了,那么才是可以的。
  2. 此时就是两个条件同时满足,用并且。

应用场景二:

  1. 丈母娘跟女婿提要求:需要有房子,或者有车子就可以穿走我的小棉袄。
  2. 此时就是两个条件中只要满足其中一个即可,用或者

1.2.2 非/取反

运算规则:

  1. 改变truefalse的结果。
  2. 如果是true,取反之后变成false
  3. 如果是false,取反之后变成true

代码示例:

  1. System.out.println(true);//true
  2. System.out.println(!true);//false
  3. System.out.println(!false);//true

建议:

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

代码示例:

  1. System.out.println(!!true);

1.4 短路逻辑运算符

分类:
  1. && 短路且、短路与
  2. || 短路或

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

&&:

  1. 左边为true,那么右边会参与计算。
  2. 左边为false,那么右边不会参与计算。

||:

  1. 左边为true,那么右边不会参与计算。
  2. 左边为false,那么右边会参与计算。

常用的逻辑运算符:

  1. && || !

练习:

  1. 数字6是一个真正伟大的数字,键盘录入两个整数。
  2. 如果其中一个为 6,最终结果输出true
  3. 如果它们的和为 6的倍数。
  4. 最终结果输出true
  5. 其他情况都是false

代码示例:

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

1.5 三元运算符

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

格式:

  1. 关系表达式 表达式1 表达式2

注意点:

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

执行流程:

  1. 先执行关系表达式。
  2. 如果结果为真,执行表达式1,此时表达式1的结果就是整个三元运算符的结果。
  3. 如果结果为假,执行表达式2,此时表达式2的结果就是整个三元运算符的结果。

代码示例:

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

1.6 练习 - 两只老虎

需求:

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

代码示例:

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

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

需求:

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

代码示例:

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

1.8 运算符的优先级

小括号优先于所有。

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

第二章 流程控制语句

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

2.1 流程控制语句分类

  1. 顺序结构
  2. 分支结构(if, switch)
  3. 循环结构(for, while, dowhile)

2.2 顺序结构

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

顺序结构执行流程图:

day03笔记 - 基础语法 - 图1

2.3 分支结构:if语句

if语句格式1

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

执行流程:

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

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

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

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

day03笔记 - 基础语法 - 图2

示例:

  1. public class IfDemo {
  2. public static void main(String[] args) {
  3. System.out.println("开始");
  4. //定义两个变量
  5. int a = 10;
  6. int b = 20;
  7. //需求:判断a和b的值是否相等,如果相等,就在控制台输出:a等于b
  8. if(a == b) {
  9. System.out.println("a等于b");
  10. }
  11. //需求:判断a和c的值是否相等,如果相等,就在控制台输出:a等于c
  12. int c = 10;
  13. if(a == c) {
  14. System.out.println("a等于c");
  15. }
  16. System.out.println("结束");
  17. }
  18. }

练习1:老丈人选女婿

需求:

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

代码示例:

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

练习2:考试奖励

需求:

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

代码示例:

  1. //分析:
  2. //1.键盘录入一个整数,表示小明的考试名次
  3. Scanner sc = new Scanner(System.in);
  4. System.out.println("请输入小明的名次");
  5. int rank = sc.nextInt();
  6. //2.对小明的考试成绩进行判断即可
  7. if(rank == 1){
  8. System.out.println("小红成为了小明的女朋友");
  9. }

第一种格式的细节:
  1. 如果我们要对一个布尔类型的变量进行判断,不要写==,直接把变量写在小括号中即可。

  2. 如果大括号中的语句体只有一条,那么大括号可以省略不写
    如果大括号省略了,那么if只能控制距离他最近的那一条语句。
    建议:自己不要去写,如果别人这么写了,你要能看懂即可。

if语句格式2

  1. 格式:
  2. if (关系表达式) {
  3. 语句体1;
  4. } else {
  5. 语句体2;
  6. }

执行流程:

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

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

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

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

day03笔记 - 基础语法 - 图3

示例:

  1. public class IfDemo02 {
  2. public static void main(String[] args) {
  3. System.out.println("开始");
  4. //定义两个变量
  5. int a = 10;
  6. int b = 20;
  7. //需求:判断a是否大于b,如果是,在控制台输出:a的值大于b,否则,在控制台输出:a的值不大于b
  8. if(a > b) {
  9. System.out.println("a的值大于b");
  10. } else {
  11. System.out.println("a的值不大于b");
  12. }
  13. System.out.println("结束");
  14. }
  15. }

练习1:吃饭

需求:

  1. 键盘录入一个整数,表示身上的钱。
  2. 如果大于等于100块,就是网红餐厅。
  3. 否则,就吃经济实惠的沙县小吃。

代码示例:

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

练习2:影院选座

需求:

  1. 在实际开发中,电影院选座也会使用到if判断。
  2. 假设某影院售卖了100张票,票的序号为1~100
  3. 其中奇数票号坐左侧,偶数票号坐右侧。
  4. 键盘录入一个整数表示电影票的票号。
  5. 根据不同情况,给出不同的提示:
  6. 如果票号为奇数,那么打印坐左边。
  7. 如果票号为偶数,那么打印坐右边。

代码示例:

  1. //分析:
  2. //1.键盘录入票号
  3. Scanner sc = new Scanner(System.in);
  4. System.out.println("请输入票号");
  5. int ticket = sc.nextInt();
  6. if(ticket >= 1 && ticket <= 100){
  7. //合法
  8. //2.对票号进行判断
  9. if (ticket % 2 == 0) {
  10. //偶数
  11. System.out.println("坐右边");
  12. } else {
  13. //奇数
  14. System.out.println("坐左边");
  15. }
  16. }else{
  17. //票号不合法
  18. System.out.println("票号不合法");
  19. }

if语句格式3

  1. 格式:
  2. if (关系表达式1) {
  3. 语句体1;
  4. } else if (关系表达式2) {
  5. 语句体2;
  6. }
  7. else {
  8. 语句体n+1;
  9. }

执行流程:

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

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

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

④…

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

day03笔记 - 基础语法 - 图4

练习1:考试奖励

需求:

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

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

分析:

  1. ①小明的考试成绩未知,可以使用键盘录入的方式获取值
  2. ②由于奖励种类较多,属于多种判断,采用if...else...if格式实现
  3. ③为每种判断设置对应的条件
  4. ④为每种判断设置对应的奖励

代码示例:

  1. //95~100 自行车一辆
  2. //90~94 游乐场玩一天
  3. //80 ~ 89 变形金刚一个
  4. //80 以下 胖揍一顿
  5. //1.键盘录入一个值表示小明的分数
  6. Scanner sc = new Scanner(System.in);
  7. System.out.println("请输入小明的成绩");
  8. int score = sc.nextInt();
  9. //2.对分数的有效性进行判断
  10. if(score >= 0 && score <= 100){
  11. //有效的分数
  12. //3.对小明的分数进行判断,不同情况执行不同的代码
  13. if(score >= 95 && score <= 100){
  14. System.out.println("送自行车一辆");
  15. }else if(score >= 90 && score <= 94){
  16. System.out.println("游乐场玩一天");
  17. }else if(score >= 80 && score <= 89){
  18. System.out.println("变形金刚一个");
  19. }else{
  20. System.out.println("胖揍一顿");
  21. }
  22. }else{
  23. //无效的分数
  24. System.out.println("分数不合法");
  25. }