Julia 基本运算符

Julia 基本运算符全解析(中文版)

“运算符即函数” —— Julia 的运算符统一、高效、可重载


一、Julia 运算符总览

类别运算符优先级(高→低)
幂运算^1
一元运算+ - ! ~2
乘除* / ÷ % &3
加减+ -4
位移<< >> >>>5
关系< > <= >= == != === !==6
逻辑&& ||7
赋值= += -= *= /= //= \= ^= %= |= &= $= <<= >>= >>>=8

优先级相同 → 从左到右


二、算术运算符(Arithmetic)

运算符含义示例结果
+加法3 + 47
-减法10 - 37
*乘法2 * 510
/除法(浮点)10 / 33.333...
÷\div+Tab整除10 ÷ 33
%取模10 % 31
^2 ^ 101024
10 ÷ 3    # 3
10 % 3    # 1
2 ^ 3     # 8

注意/ 总是返回 Float64,即使整数相除


三、比较运算符(Comparison)

运算符含义示例结果
==相等5 == 5.0true
!=不等3 != 4true
<小于3 < 5true
>大于5 > 3true
<=小于等于5 <= 5true
>=大于等于5 >= 3true
===相同(值+类型)5 === 5.0false
!==不相同5 !== 5.0true
5 == 5.0     # true(值相等)
5 === 5.0    # false(类型不同)

四、逻辑运算符(Logical)

运算符含义短路示例
&&逻辑与true && false → false
||逻辑或true || false → true
!逻辑非!true → false
x = 10
x > 0 && x < 100    # true
x < 0 || x > 5      # true

短路求值&& 左边 false 就不算右边,|| 左边 true 就不算右边


五、位运算符(Bitwise)

运算符含义示例
&按位与5 & 3 → 1
|按位或5 | 3 → 7
xor按位异或5 ⊻ 3 → 6
~按位取反~5 → -6
<<左移1 << 3 → 8
>>右移(带符号)8 >> 2 → 2
>>>右移(无符号)-8 >>> 2 → 4611686018427387896
5 & 3    # 101 & 011 = 001 → 1
5 | 3    # 101 | 011 = 111 → 7
5 ⊻ 3    # 101 ⊻ 011 = 110 → 6

六、链式比较(Chained Comparison)—— 超实用!

x = 5
1 < x <= 10    # true
0 <= x < 100   # true

等价于:1 < x && x <= 10


七、赋值运算符

运算符含义示例
=赋值x = 10
+=加赋值x += 5
-=减赋值x -= 3
*=乘赋值x *= 2
/=除赋值x /= 2
//=有理数除x //= 3//2
^=幂赋值x ^= 2
x = 10
x += 5    # x = 15
x *= 2    # x = 30

八、点运算(Broadcasting)—— 向量化神器

运算符含义示例
.+逐元素加[1,2] .+ [10,20] → [11,22]
.*逐元素乘
.^逐元素幂
.f()逐元素函数sin.([0, π/2, π])
x = [1, 2, 3]
x .^ 2          # [1, 4, 9]
sin.(x)         # [sin(1), sin(2), sin(3)]

@. 宏:自动为所有运算加 .

@. x^2 + 2x + 1   # 等价于 x.^2 . .+ 2.*x .+ 1

九、管道运算符 |> —— 函数链式调用

# 传统写法
round(sqrt(abs(-5.5)))

# 管道写法(更清晰)
-5.5 |> abs |> sqrt |> round

读作:“把 -5.5 传给 abs,再传给 sqrt,再传给 round”


十、特殊运算符

运算符含义示例
$字符串插值"x = $x"
in成员判断3 in [1,2,3]
isa类型判断x isa Int
...展开f(1, 2, 3... )
:范围1:10
3 in 1:5          # true
x isa Number      # true
f(args...)        # 接收任意参数

十一、运算符优先级表(从高到低)

# 1. 幂
2^3^2    # = 2^(3^2) = 512

# 2. 一元
-x^2      # = -(x^2)

# 3. 乘除
2 + 3 * 4    # = 2 + 12 = 14

# 4. 加减
10 / 2 + 3   # = 5.0 + 3 = 8.0

# 5. 比较链
1 < x <= 10

# 6. 逻辑
true || false && true   # = true || (false && true) = true

十二、运算符速查表

类别运算符
算术+ - * / ÷ % ^
比较== != < > <= >= === !==
逻辑&& || !
位运算& | ⊻ ~ << >> >>>
赋值= += -= *= /= //= ^=
广播.+ .* .^ .f()
管道|>
其他$ in isa ... :

十三、小练习(立即上手)

  1. 计算 (2 + 3) * 4^2
  2. 判断 x 是否在 [10, 20, 30]
  3. 用管道计算 sin(cos(0))
  4. 用广播计算 [1,2,3] 的平方和立方
  5. 写函数 is_even(x) 用位运算

答案示例

# 1. 算术
(2 + 3) * 4^2    # 80

# 2. 成员判断
x = 20
x in [10, 20, 30]    # true

# 3. 管道
0 |> cos |> sin

# 4. 广播
x = [1, 2, 3]
x .^ 2   # [1, 4, 9]
x .^ 3   # [1, 8, 27]

# 5. 位运算
is_even(x) = (x & 1) == 0
is_even(4)   # true

十四、性能建议

建议说明
÷ 代替 floor(Int, x/y)更快
避免 == 浮点数isapprox
逻辑短路 && ||避免不必要计算
广播 .向量化,避免循环
3.0 ≈ 3.0000000001    # true(容差)

恭喜!你已精通 Julia 所有基本运算符!

现在你可以:

  • 写出清晰优雅的数学表达式
  • 管道组织复杂计算
  • 广播实现向量化
  • 位运算优化性能

下一站推荐

主题为什么学
控制流 if for while逻辑结构
函数与多重派发核心特性
数组操作数据处理
@元编程

需要我:

  • 生成 运算符优先级思维导图
  • 写一个 计算器 REPL(支持所有运算符)?
  • 演示 自定义运算符(如 ±)?

随时告诉我!

文章已创建 2302

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部