运算符

运算符


运算符类型

  1. 算术运算符:用于基本的数学运算。
    • 加(+
    • 减(-
    • 乘(*
    • 除(/
    • 模(%):求余数
    • 自增(++):变量值加一
    • 自减(--):变量值减一
  2. 关系运算符:用于比较两个值,并根据比较结果返回布尔值 truefalse
    • 大于(>
    • 小于(<
    • 大于等于(>=
    • 小于等于(<=
    • 等于(==
    • 不等于(!=
  3. 逻辑运算符:用于布尔逻辑运算。
    • 逻辑与(&&):两个条件都为 true 时结果才为 true
    • 逻辑或(||):两个条件中至少有一个为 true 结果就为 true
    • 逻辑非(!):反转布尔值,truefalsefalsetrue
  4. 位运算符:直接对操作数的位执行操作。
    • 位与(&
    • 位或(|
    • 位异或(^
    • 位非(~):反转所有位
    • 位左移(<<):向左移动位
    • 位右移(>>):向右移动位,有符号
    • 位无符号右移(>>>):向右移动位,无符号
  5. 赋值运算符:用于给变量赋值。
    • 简单赋值(=
    • 加等于(+=):加法和赋值的组合
    • 减等于(-=):减法和赋值的组合
    • 乘等于(*=):乘法和赋值的组合
    • 除等于(/=):除法和赋值的组合
    • 模等于(%=):求余数和赋值的组合
    • 位与等于(&=
    • 位或等于(|=
    • 位异或等于(^=
    • 位左移等于(<<=
    • 位右移等于(>>=
    • 位无符号右移等于(>>>=
  6. 条件运算符(三元运算符):基于条件执行操作,是 ?: 的形式。
    • 格式:condition ? value_if_true : value_if_false
  7. 成员访问运算符:用于访问对象的成员(方法和字段)。
    • .:访问类或对象的成员
  8. 数组长度运算符:用于获取数组的长度。
    • .length
  9. 类型转换运算符:用于显式类型转换。
    • (类型):将括号内的表达式转换为指定的类型
  10. 实例检查运算符:用于检查对象是否是特定类的实例。
    • instanceof
  11. 字符串连接运算符:用于连接字符串。
    • +:当用于字符串和非字符串类型时,会将非字符串类型转换为字符串,然后进行连接。

i++与++i的区别

i++(后缀递增运算符):

  • 行为i++ 首先返回变量 i 的原始值,然后将 i 的值增加 1。
  • 使用场景:当你需要在表达式中使用变量的原始值,并且之后可以增加变量的值时。

++i(前缀递增运算符):

  • 行为++i 首先将变量 i 的值增加 1,然后返回新的值。
  • 使用场景:当你需要在表达式中使用变量的新值时。

代码示例:

int i = 5;
int a = i++; // a = 5, i = 6
int b = ++i; // i = 7, b = 7

System.out.println("a = " + a + ", i = " + i); // 输出 a = 5, i = 7
System.out.println("b = " + b + ", i = " + i); // 输出 b = 7, i = 7

区别总结:

  • 返回值i++ 返回递增前的值,而 ++i 返回递增后的值。
  • 表达式求值:在表达式中,i++ 先使用原始值,再进行递增;++i 先进行递增,再使用新值。

&与&&的区别

  1. 逻辑与运算符 &
    • & 是一个二元运算符,用于按位与(bitwise AND)操作。当它用于整数或字符等基本数据类型时,它会对两个数值的二进制位进行逐位与操作。
    • 它也可以用于布尔逻辑运算,但通常不推荐,因为 & 在布尔上下文中可能会产生副作用,并且容易与位运算混淆。
  2. 逻辑与运算符 &&
    • && 是一个短路与运算符,用于布尔逻辑运算。它用于连接两个布尔表达式,只有当两个操作数都为 true 时,结果才为 true
    • && 具有短路特性,即如果第一个操作数为 false,那么整个表达式的结果已经确定为 false,因此第二个操作数不会被求值。这可以防止不必要的计算和潜在的异常。

区别总结

  • 短路与非短路&& 具有短路特性,而 & 不具有。
  • 使用场景& 通常用于位运算,&& 用于布尔逻辑。
  • 副作用:使用 & 进行布尔逻辑运算时,如果第一个操作数为 false,第二个操作数总是被求值,可能会产生副作用或异常。

|与||的区别

  1. 逻辑或运算符 ||
    • || 是一个二元运算符,用于布尔逻辑运算。
    • 它用于连接两个布尔表达式,如果至少有一个操作数为 true,则整个表达式的结果为 true
    • || 具有短路特性,即如果第一个操作数为 true,那么整个表达式的结果已经确定为 true,因此第二个操作数不会被求值。这可以防止不必要的计算和潜在的异常。
  2. 按位或运算符 |
    • | 是一个二元运算符,用于按位或(bitwise OR)操作。
    • 当它用于整数或字符等基本数据类型时,它会对两个数值的二进制位进行逐位或操作。
    • 它也可以用于布尔逻辑运算,但通常不推荐,因为 | 在布尔上下文中可能会产生副作用,并且容易与位运算混淆。

区别总结:

  • 短路与非短路|| 具有短路特性,而 | 不具有。
  • 使用场景|| 用于布尔逻辑运算,| 通常用于位运算。
  • 副作用:使用 | 进行布尔逻辑运算时,如果第一个操作数为 true,第二个操作数总是被求值,可能会产生副作用或异常。

>与>>的区别

  1. 大于运算符 >
    • > 是一个关系运算符,用于比较两个数值或对象。
    • 它返回一个布尔值(truefalse),表示左侧的值是否大于右侧的值。
    • 这个运算符可以用于整数、浮点数、字符以及实现了 Comparable 接口的对象。
  2. 右移位运算符 >>
    • >> 是一个按位运算符,用于将操作数的各个位向右移动指定的位数。
    • 它是二元运算符,需要两个操作数:一个是要被移位的数值,另一个是指定移动位数的数值。
    • 右移位运算符有两种变体:带符号右移(>>)和无符号右移(>>>)。

区别总结

  • 操作类型> 用于比较操作,返回布尔值;>> 用于按位操作,返回数值。
  • 用途> 用于比较两个值的大小;>> 用于按位移动数值的位。
  • 结果> 的结果是一个布尔值;>> 的结果是一个数值。
posted @ 2024-08-01 18:45  糊涂图-4060  阅读(37)  评论(0)    收藏  举报