当前位置: 首页 > news >正文

3 运算符与表达式

运算符:对字面量或者变量进行操作的符号
表达式:用运算符把字面量或者变量连接起来符合java语法的式子就可以称作表达式

                不同运算符连接的表达式体现的是不同类型的表达式

int a = 10;
int b = 20;
int c = a + b;

  +:运算符,并且是算术运算符

  a+b:是表达式,由于+是算术运算符,所以表达式叫算术表达式

算术运算符

+

-
*        

/

除 :整数相除,结果只能得到整数,要想得到带有小数的结果,就需要有小数参与运算

%

取余:作用是用来取余数的,如果操作数都是整数,结果是整数,操作数有一个是小数,结果都是小数

%有什么用?

         %目前能想到的场景,可以进行奇数偶数的判断,任何一个数%2的结果,不是0就是1

public class ArithmeticOperator {public static void main(String[] args) {System.out.println(5/2); // 2 整数相除,结果只能得到整数System.out.println(5/2.0); //2.5 要想得到带有小数的结果,就需要有小数参与运算System.out.println(5.0/2.0); //2.5 要想得到带有小数的结果,就需要有小数参与运算System.out.println(5.0/2); //2.5 要想得到带有小数的结果,就需要有小数参与运算System.out.println("_________________________________________");System.out.println(5%2); //1System.out.println(5%2.0); //1.0System.out.println(5.0%2.0); //1.0System.out.println(5.0%2); //1.0}
}

需求:键盘录入一个三位数,将其拆分为个位,十位,百位,打印在后台

个位的计算:数值%10123除以10(商12,余数为3)
十位的计算:数值/10%10123除以10(商12,余数为3,整数相除只能等于整数)12除以10(商1,余数为2)
百位的计算:数值/10/10%10123除以10(商12,余数为3,整数相除只能等于整数)12除以10(商1,余数为2)1除以10(商0,余数为1)
千位的计算:数值/10/10/10%10
import java.util.Scanner;
public class ArithmeticOperatorTest {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请输入一个三位数:");int num = sc.nextInt();int ge = num%10;int shi = num/10%10;int bai = num/10/10%10;System.out.println("个位数:" + ge);System.out.println("十位数:" + shi);System.out.println("百位数:" + bai);}
}

自增自减运算符

        ++ :让变量自身的值+1

         -- :让变量自身的值-1

        只能操作变量

        使用方式有两种
1.单独使用  一句代码中,只做++ 或者 --,单独使用时,++ 或者 -- 在变量的前面还是后面没有区别
2.参加运算
如果放在变量的前面,先对变量进行+1或者-1,再拿变量的值进行运算,当++ 或者--,在前面时,先运算再赋值
如果放在变量的后面,先拿变量的值进行运算,再对变量的值进行 +1或者-1,当++或者--,在后面是,先赋值在运算

public class AutodecrementOperator {public static void main(String[] args) {int x = 10;int y = x++; // y = 10;x=11int z = ++y;//  y =11;z=11System.out.println("x的值:" + x);System.out.println("y的值: " + y);System.out.println("z的值:" + z);System.out.println("______________________________");int a = 3;//        4       4      5*10int b = (++a) + (a++) +(a*10);System.out.println("a的值" + a);//5System.out.println("b的值" + b);//58}
}

字符串的拼接

     + 当加号操作当中,遇到了字符串,这时+号就是字符串连接符,而不是算术运算符

赋值运算符

     

        赋值运算符是编程中用于给变量赋值的操作符,主要包括以下几种:

  1. =:基本赋值运算符
    将右边的值赋给左边的变量
    示例:a = 10; 表示将整数值10赋值给变量a

  2. +=:加法赋值运算符
    执行步骤:

    • 先计算左边变量和右边值的和
    • 然后将结果赋给左边的变量
      等价于:a = a + b
      示例:a += 5; 相当于 a = a + 5;
  3. -=:减法赋值运算符
    执行步骤:

    • 先计算左边变量减去右边值的差
    • 然后将结果赋给左边的变量
      等价于:a = a - b
      示例:balance -= withdrawal; 可用于银行账户扣款场景
  4. *=:乘法赋值运算符
    执行步骤:

    • 先计算左边变量和右边值的乘积
    • 然后将结果赋给左边的变量
      等价于:a = a * b
      示例:price *= 1.1; 可用于价格上调10%的计算
  5. /=:除法赋值运算符
    执行步骤:

    • 先计算左边变量除以右边值的商
    • 然后将结果赋给左边的变量
      等价于:a = a / b
      示例:average /= count; 常用于计算平均值
  6. %=:取模赋值运算符
    执行步骤:

    • 先计算左边变量除以右边值的余数
    • 然后将结果赋给左边的变量
      等价于:a = a % b
      示例:seconds %= 60; 可用于将总秒数转换为分钟和秒数

应用场景:

  • 游戏开发中角色属性的实时更新
  • 金融计算中的累计利息计算
  • 科学计算中的迭代运算
  • 数据处理中的聚合统计

注意事项:

  1. 运算符左右两边需要有明确的值或变量
  2. 除法和取模运算时右边值不能为0
  3. 复合赋值运算符比简单赋值运算符执行效率更高

关系运算符

关系运算符是编程中用于比较两个值的基本运算符,这些运算符的运算结果都是布尔类型(boolean),即只能返回true或false。以下是各种关系运算符的详细说明:

  1. 相等运算符(==): 用于判断两个操作数的值是否相等。例如:

    • 5 == 5 返回true
    • 3 == 5 返回false
    • "hello" == "hello" 返回true 注意:在比较字符串时,实际上是比较字符串的内容而非对象引用
  2. 不等运算符(!=): 用于判断两个操作数的值是否不相等。例如:

    • 5 != 3 返回true
    • 5 != 5 返回false
    • "abc" != "def" 返回true
  3. 大于运算符(>): 用于判断左操作数是否大于右操作数。例如:

    • 10 > 5 返回true
    • 5 > 10 返回false
    • 5 > 5 返回false
  4. 大于等于运算符(>=): 用于判断左操作数是否大于或等于右操作数。例如:

    • 10 >= 5 返回true
    • 5 >= 10 返回false
    • 5 >= 5 返回true
  5. 小于运算符(<): 用于判断左操作数是否小于右操作数。例如:

    • 3 < 5 返回true
    • 5 < 3 返回false
    • 5 < 5 返回false
  6. 小于等于运算符(<=): 用于判断左操作数是否小于或等于右操作数。例如:

    • 3 <= 5 返回true
    • 5 <= 3 返回false
    • 5 <= 5 返回true

 逻辑运算符

在Java编程中,逻辑运算符是用于连接布尔类型的表达式或值的重要工具。它们可以将多个条件组合成一个整体逻辑表达式,从而构建更复杂的判断条件。以下是Java中主要的逻辑运算符及其详细说明:

  1. 逻辑与(&)

    • 表示"并且"的关系
    • 运算规则:遇false则false
    • 特点:没有短路效果,无论左边表达式的结果是true还是false,右边表达式都会执行
    • 示例:(a > 5) & (b < 10) 只有当a大于5且b小于10时,整个表达式才为true
  2. 逻辑或(|)

    • 表示"或者"的关系
    • 运算规则:遇true则true
    • 特点:没有短路效果,无论左边表达式的结果是true还是false,右边表达式都会执行
    • 示例:(x == 0) | (y == 0) 只要x等于0或者y等于0,整个表达式就为true
  3. 逻辑非(!)

    • 表示"取反"操作
    • 一元运算符,只需要一个操作数
    • 示例:!(age < 18) 等同于判断age是否大于等于18
  4. 逻辑异或(^)

    • 表示"相同为false,不同为true"
    • 当两个操作数相同时返回false,不同时返回true
    • 示例:(a > b) ^ (c > d) 当两个比较结果相同时返回false,不同时返回true
  5. 短路与(&&)

    • 表示"并且"的关系
    • 具有短路效果:当左边表达式为false时,右边表达式不会执行
    • 效率更高,是实际开发中最常用的与运算
    • 示例:(user != null) && (user.getName().equals("Admin")) 可以避免NullPointerException
  6. 短路或(||)

    • 表示"或者"的关系
    • 具有短路效果:当左边表达式为true时,右边表达式不会执行
    • 效率更高,是实际开发中最常用的或运算
    • 示例:(score >= 90) || (specialTalent == true) 如果分数已经大于等于90,就不会检查特殊才能

在实际编程中,短路运算符(&&和||)比非短路运算符(&和|)更常用,因为它们可以提高程序效率并避免不必要的计算。特别是在可能引发异常的判断中(如检查对象是否为null后再调用其方法),使用短路运算符可以避免程序崩溃。

三元运算符(三目运算符 )

基本语法格式

判断条件 ? 值1 : 值2;

执行流程说明

  1. 条件评估阶段

    • 首先计算判断条件的值
    • 这个条件可以是任何能返回布尔值的表达式(如比较运算、逻辑运算等)
  2. 结果选择阶段

    • 如果条件评估结果为true
      • 整个表达式将返回值1
      • 值2部分不会被执行
    • 如果条件评估结果为false
      • 整个表达式将返回值2
      • 值1部分不会被执行

实际应用示例

// 简单示例
let age = 20;
let status = (age >= 18) ? "成年人" : "未成年人";// 嵌套使用示例
let score = 85;
let grade = (score >= 90) ? "A" : (score >= 80) ? "B" : (score >= 70) ? "C" : "D";

注意事项

  • 该运算符是JavaScript中唯一需要三个操作数的运算符
  • 表达式中的值1值2可以是任意类型的值或表达式
  • 虽然可以嵌套使用,但过度嵌套会降低代码可读性

http://www.lryc.cn/news/605252.html

相关文章:

  • 【CVPR2025】FlowRAM:用区域感知与流匹配加速高精度机器人操作策略学习
  • 架构实战——架构重构内功心法第一式(有的放矢)
  • 《Computational principles and challenges in single-cell data integration》
  • SpringMVC 6+源码分析(一)初始化流程
  • 2021 年 NOI 最后一题题解
  • 项目文档太多、太混乱怎么解决
  • C语言高级(构造数据类型)
  • 2020 年 NOI 最后一题题解
  • REST、GraphQL、gRPC、tRPC深度对比
  • 订阅区块,部署合约,加载合约
  • 颐顿机电携手观远BI数据:以数据驱动决策,领跑先进制造智能化升级
  • 流程制造的数字孪生:从黑箱生产到全息掌控
  • Linux c网络专栏第四章io_uring
  • Linux零基础Shell教学全集(可用于日常查询语句,目录清晰,内容详细)(自学尚硅谷B站shell课程后的万字学习笔记,附课程链接)
  • Baumer工业相机堡盟工业相机如何通过YoloV8的深度学习模型实现汽车牌照的位置识别(C#代码,UI界面版)
  • 大厂主力双塔模型实践与线上服务
  • SSRF漏洞基础
  • 爬虫验证码处理:ddddocr 的详细使用(通用验证码识别OCR pypi版)
  • Redis 中 key 的过期策略 和 定时器的两种实现方式
  • cocos打包web端需要注意的地方
  • Apache HTTP Server 2.4.50 路径穿越漏洞(CVE-2021-42013)
  • Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现裂缝的检测识别(C#代码UI界面版)
  • 生成式推荐网络架构汇总
  • Java注解与反射:从自定义注解到框架设计原理
  • CHI - Transaction介绍(4) - 原子操作
  • 工厂方法模式:从基础到C++实现
  • Spring Boot 数据源配置中为什么可以不用写 driver-class-name
  • 1. ESP开发之实体按键(KEYPADBUTTON)控制LVGL控件
  • 一文掌握最新版本Monocle3单细胞轨迹(拟时序)分析
  • 【Unity】在构建好的项目里创建自定义文件夹