【JAVA BASICS】Day03 运算符:算术、关系、逻辑、赋值、字符串连接、条件、分支结构......


Day03目标

  • 掌握算术运算符

  • 掌握关系运算符、逻辑运算符

  • 掌握赋值运算符、字符串连接运算符、条件运算符

  • 理解分支结构的应用场景

  • 掌握三种分支结构:if,if…else…,if… else if…

  • 预计代码量:课上:180行;课下:360行


运算符:

算术运算符:

  • 算术运算符是进行算术运算的运算符,包括“+,-,*,/,%, ++, --”

    • %:取模/取余,商之后剩下的数即为余数,余数为0即为整除
    System.out.println(5 % 2); // 1,商2余1
    System.out.println(2 % 5); // 2,商0余2
    System.out.println(8 % 2); // 0,商4余0
    System.out.println(0 % 5); // 0,商0余0
    
    • ++/–:自增1/自减1,即在本身基础之上增1/减1(a = a + 1 和 a = a - 1)

    • ++/–可以写在变量前,也可以写在变量后(a++ 或 ++a,要分两种不同情况来理解

      • 情况1:++/-- 单独使用时,写前写后没区别
      int a = 5, b = 5;
      a++; // 相当于 a = a + 1
      ++b; // 相当于 b = b + 1
      System.out.println(a); // 输出解果:6
      System.out.println(b); // 输出解果:6
      
      • 情况2:++/-- 被使用时,写前写后有关系
      int a = 5, b = 5;
      int c = a++; // 先将a++的值赋值给c,后a自增变为6
      int d = ++b; // 先b自增变为6,再将6赋值给d
      System.out.println(a); // 6
      System.out.println(b); // 6
      System.out.println(c); // 5
      System.out.println(d); // 6
      
    • –与++同理:

      • 单独使用时,写前面和谐在后面都一样,都是自减1
      int a = 5, b = 5;
      a--;
      --b;
      System.out.println(a); // 4
      System.out.println(b); // 4
      
      • 被使用时,写在前和写在后不一样
      int a = 5, b = 5;
      int c = a--; // 先将a++的值赋值给c,后a自增变为4
      int d = --b; // 先b自减变为4,再将4赋值给d
      System.out.println(a); // 4
      System.out.println(b); // 4
      System.out.println(c); // 5
      System.out.println(d); // 4
      

关系运算符

  • 关系运算符时进行关系运算的运算符

    • (大于)、<(小于)

    • =(大于等于)、<=(小于等于)

    • ==(等于)、!=(不等于)

  • 关系运算的结果为boolean型,关系成立则为true,反之则为false

int a = 5, b = 10, c = 6;
boolean b1 = a > b; // b1的值为false
boolean b2 = c <= b; // b2的值为true

注:一般结合算数运算一同运算,先进行关系运算,后进行逻辑运算,最后做赋值运算

逻辑运算符

  • 逻辑运算符时进行逻辑运算的运算符

    • 常用于多条件运算之中(考试及格并且**出勤率达到80%**才能顺利毕业)
  • &&:逻辑与(并且、同时满足所有条件)

条件1 考试及格了吗?truetruefalsefalse
&&
条件2 出勤率够80%吗?truefalsetruefalse
结果:能否毕业?truefalsefalsefalse
  • ||:逻辑或(或者),有真则为真,见true则true
条件1 有现金吗?truetruefalsefalse
条件2 有微信吗truefalsetruefalse
结果:能否结账truetruetruefalse
  • !:逻辑非(取反),非真则假,非假则真
!falsetrue
下雨了吗?truefalse

短路与和短路或

  • &&:短路与(并且),两边都为真则真,见到false则false

    • 第一个条件为false时,则发生短路(后面无论多少条件都不再执行)
    int a = 5, b = 10, c = 5;
    boolean b3 = a > b && c++ > 2; // 由于前面的条件是false,但是发生了短路,导致系统不再执行条件2(c++),所以不进行自增
    System.out.println(b3); // false && true = false
    System.out.println(c); // 结果:5,且无论有几次都为5,是由于短路与造成的
    
  • ||:短路或(或者),有真则为真,见true则true

    • 当第一个条件为true时,不再执行后面的条件,直接返回true
    int a = 5, b = 10, c = 5;
    boolean b3 = a < b || c++ < 2; // 由于前面的条件是true,但是发生了短路,导致系统不再执行条件2(c++),所以不进行自增
    System.out.println(b3); // true && false = true
    System.out.println(c); // 结果:5,且无论有几次都为5,是由于短路或造成的
    
  • 当“与”或“或”不写成“&&”和“||”,而写成:“&”和“|”时,则不再短路。但是,在实际开发过程通常使用短路

赋值运算符

  • 赋值运算符是用于给变量赋值的运算符

    • 简单赋值运算符

      =

    • 扩展赋值运算符

      +=、-=、*=、/=、%=在本身基础上做操作,本身自带强转功能(转成被赋值的变量的数据类型)

      int a = 5;
      a += 10; // 相当于a = (int)(a + 10)
      System.out.println(a); // 15
      

字符串连接运算符

  • 字符串连接运算符是进行字符串连接的运算符

    • +

    • 若两边位数字,则做加法运算

    • 若两边出现了字符串,则做字符串连接

      • 字符串:一串字符,放在双引号中,长度没有限制
int age = 39;
System.out.println("age=");  // 输出结果:age=
System.out.println(age); // 输出结果:39

// 此时我想把他们两个连接到一块,于是引入字符串连接运算符
System.out.println("age=" + age); // 输出结果:age=39 

条件运算符

  • 条件运算符,也叫三目运算符

  • 语法:

    • boolean 表达式 ? 表达式1 : 表达式2
  • 执行过程:

    • 整个条件运算是有值的,它的值要么是表达式1的值,要么是表达式2的值

    • 如果boolean表达式 → true → 返回表达式1的值

    • 如果boolean表达式 → false → 返回表达式2的值

    int num = 5;
    int flag = num > 0 ? 1 : -1;
    System.out.println(flag); // 1
    
    int a = 8, b = 5;
    int max = a > b ? a : b;
    

分支结构

分支结构的应用

  • 任何复杂的程序逻辑,都可以通过三种结构来实现:

    • 顺序结构:从上向下逐行执行,每一句都必须执行;

    • 分支结构:有条件的执行某语句,而并非是每一句都必须执行;

    • 循环结构:…(Day04再说)

分支结构的分类

  • 分支结构共分为四类:

    • if结构:1条路;

    • if…else结构:2条路;

    • if…else if结构:多条路;

    • switch…case结构:…(Day04再说)

  • 更好的理解:

    • 需求1:满500打8折 —— if结构

    • 需求2:满500打8折 ,不满500打9折 —— if…else结构

    • 需求3:满1000打7折,满500不满1000打8折,不满500打9折 —— if…else if结构

if结构

  • 语法:

    if (boolean) {
      // 语句块
    }
    
  • if结构案例:

    // 满500打8折
    double price = 300.0; // 消费金额
    if(price >= 500) { // boolean看是否达到500元
      price *= 0.8; // true执行内部语句块:打八折
    }
    System.out.println(price); // 打印最终价格
    

if…else结构

  • 语法:
if (boolean) {
  // 语句块1
} else {
  // 语句块2
}

注意:语句块1和语句块2,必走其中之一

  • if…else结构案例:
// 满500打8折,不满打9折
double price = 600.0; // 消费金额
if (price >= 500.0) {
  price *= 0.8; // 打8折
} else {
  price *= 0.9; // 打9折 
}
System.out.println("最终金额为:" + price);

if…else if结构

  • 语法:
if (boolean-1) {
  // 语句块1
} else if (boolean-2) {
  // 语句块2
} else if (boolean-3) {
  // 语句块3
} else{
  // 语句块4
}
  • if…else if结构案例
// 满2000打5折,满1000不满2000打7折,满500不满1000打8折,不满500打9折
double price = 6000.0;
if (price >= 2000) {
  price *= 0.5;
} else if (price >= 1000 && price < 2000) { // price < 2000 没有用,如果可以再上一个if结构中已经推出了循环
  price *= 0.7;
} else if (price >= 500 && price < 1000) { // // price < 1000 没有用,如果可以再上一个if结构中已经推出了循环
  price *= 0.8;
} else if (price <500) { //  if (price <500) 没有用,因为上面已经筛干净了,没有必要增加冗余代码
  price *= 0.9;
}
System.out.println("最终金额为:" + price);
  • 12
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值