Julia 基本语法

Julia 基本语法全解析(中文版)

目标:从零基础到能写出清晰、高效的 Julia 代码
涵盖变量、数据类型、运算、控制流、函数、容器、宏等核心语法


1. 变量与命名规则

x = 10
name = "Julia"
π = 3.14159

命名规范

规则示例
变量名:小写 + 下划线user_count, max_value
常量:全大写PI = 3.14, MAX_RETRIES = 5
类型:大驼峰MyType, Point2D
函数:小写calculate_sum()
支持 Unicodeα = 0.05, ∑ = sum

提示:用 Tab 补全希腊字母,如 \alpha + Tab → α


2. 基本数据类型

类型示例说明
Int6442整数(默认 64 位)
Float643.14浮点数(默认)
Booltrue, false布尔值
Char'A', '中'字符(单引号)
String"Hello"字符串(双引号)
Nothingnothing空值
Missingmissing缺失值
typeof(42)      # Int64
typeof(3.14)    # Float64
typeof("hi")    # String

3. 基本运算符

运算符号示例结果
加减+, -5 + 38
乘除*, /10 / 33.333...
整除÷\div+Tab10 ÷ 33
取余%10 % 31
^2^101024
比较==, !=, <, >, <=, >=5 == 5.0true
逻辑&&, ||, !true && falsefalse

注意:= 是赋值,== 是相等判断


4. 字符串操作

# 字符串插值
name = "Alice"
"Hello, $name!"        # → "Hello, Alice!"

# 连接
"Hi " * "there"        # → "Hi there"

# 多行字符串
poem = """
床前明月光,
疑是地上霜。
"""

# 常用函数
length("Julia")        # 5
uppercase("hi")        # "HI"
split("a,b,c", ",")    # ["a", "b", "c"]
join(["a","b"], "-")   # "a-b"

5. 控制流

5.1 if 语句

x = 10
if x > 0
    println("正数")
elseif x < 0
    println("负数")
else
    println("零")
end

三元运算符(简洁版):

x > 0 ? "正" : "非正"

5.2 for 循环

# 遍历范围
for i in 1:5
    println(i)
end

# 遍历数组
for fruit in ["苹果", "香蕉", "橙子"]
    println(fruit)
end

# 使用 enumerate 获取索引
for (i, val) in enumerate([10, 20, 30])
    println("$i: $val")
end

5.3 while 循环

n = 1
while n <= 5
    println(n)
    n += 1
end

5.4 循环控制

for i in 1:10
    if i % 2 == 0
        continue    # 跳过本次
    end
    if i > 5
        break       # 跳出循环
    end
    println(i)
end

6. 容器类型

6.1 数组 Array(最常用)

# 一维数组
arr = [1, 2, 3, 4]

# 类型指定
ints = Int[1, 2, 3]
floats = Float64[1.0, 2.0]

# 索引从 1 开始!
arr[1] = 10
arr[end]           # 最后一个元素

# 切片
arr[2:3]           # [2, 3]

# 二维数组(矩阵)
matrix = [1 2 3; 4 5 6]  # 2×3 矩阵

# 常用函数
push!(arr, 5)      # 添加元素
pop!(arr)          # 删除末尾
length(arr)        # 长度
size(matrix)       # (2, 3)

6.2 元组 Tuple(不可变)

t = (1, "hi", 3.14)
t[1]               # 1
# t[1] = 2        # 错误!不可修改

6.3 字典 Dict

phonebook = Dict("Alice" => "123", "Bob" => "456")
phonebook["Alice"]         # "123"
phonebook["Charlie"] = "789"

haskey(phonebook, "Bob")   # true
keys(phonebook)            # ["Alice", "Bob", "Charlie"]
values(phonebook)          # ["123", "456", "789"]

6.4 集合 Set(无重复)

s = Set([1, 2, 2, 3])      # Set{Int64} with 3 elements: {1,2,3}
push!(s, 4)
union(s, [3, 4, 5])        # {1,2,3,4,5}

7. 函数定义

7.1 标准写法

function add(x, y)
    return x + y
end

7.2 简洁写法(单表达式)

add(x, y) = x + y
square(x) = x^2

7.3 匿名函数

f = x -> x^2
map(x -> x^2, [1,2,3])     # [1, 4, 9]

7.4 多重派发(Julia 杀手锏)

greet(x::String) = println("Hello, $x!")
greet(x::Int)    = println("Number: $x")

greet("Julia")   # Hello, Julia!
greet(42)        # Number: 42

7.5 可选参数与默认值

function power(x, n=2)
    return x^n
end

power(3)     # 9
power(3, 3)  # 27

7.6 可变参数

function sum_all(nums...)
    return sum(nums)
end

sum_all(1, 2, 3, 4)   # 10

8. 常用内置函数

函数用途
println(x)打印并换行
print(x)打印不换行
typeof(x)查看类型
length(arr)容器长度
size(arr)数组维度
rand(n)生成 n 个 [0,1) 随机数
zeros(3,3)3×3 零矩阵
ones(5)长度 5 的全 1 数组
collect(1:10)范围转数组

9. 宏(Macros)

@ 开头,编译期执行

@time sleep(1)          # 计时
@show x                 # 显示变量名和值
@which sin(3.14)        # 查看函数定义位置
@assert 1 + 1 == 2      # 断言

10. 综合示例:统计数组

function stats(arr)
    if isempty(arr)
        return nothing
    end

    mn = minimum(arr)
    mx = maximum(arr)
    avg = mean(arr)
    std_dev = std(arr)

    println("最小: $mn, 最大: $mx")
    println("平均: $(round(avg, digits=2))")
    println("标准差: $(round(std_dev, digits=2))")

    return (min=mn, max=mx, mean=avg, std=std_dev)
end

data = [3, 1, 4, 1, 5, 9, 2, 6]
stats(data)

输出:

最小: 1, 最大: 9
平均: 3.88
标准差: 2.8

语法速查表

语法示例
注释# 单行注释
多行注释#= ... =#
数组[1, 2, 3]
矩阵[1 2; 3 4]
范围1:10, 1:2:10
推导式[x^2 for x in 1:5]
广播sin.(arr)
管道arr |> sum |> sqrt

小练习(立即上手)

  1. 写函数判断是否为素数
  2. 实现斐波那契数列(递归 + 迭代)
  3. 统计字符串中各字符出现次数(用 Dict
  4. 生成 100 个随机数,画直方图(需 Plots

推荐学习路径

阶段内容
1 天变量、运算、控制流
2 天数组、函数、多重派发
3 天包管理、绘图、数据处理
1 周写一个小项目(如 CSV 分析)

恭喜!你已掌握 Julia 核心语法!

下一站:


需要我:

  • 生成 可运行的练习答案
  • 写一个 完整小项目(如词频统计)?
  • 讲解 广播 .管道 |> 深入用法?

随时提问!

文章已创建 2305

发表回复

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

相关文章

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

返回顶部