Julia

📅 2026/7/15 21:29:30
Julia
一、简介Juliahttps://julialang.org/ 是一个面向科学计算的高性能动态高级程序设计语言。Julia 最初是为了满足高性能数值分析和计算科学的需要而设计的不需要解释器速度快。优势性能天花板媲美 C/Fortran告别 “两语言鸿沟”。这是 Julia 最核心卖点解决了科学计算领域长久的痛点Python、Matlab 写业务逻辑简单但循环、数值运算极慢C/C 速度快但开发繁琐、语法厚重工程上常要「Python 写上层 C 写底层」两套代码维护成本极高。Julia 基于LLVM 即时编译 (JIT)代码运行前编译为机器码原生循环、矩阵运算速度接近 C、Fortran无需手动写底层扩展。原生精细数值类型支持正好对应你截图里的 Int8/UInt8/Int16…Int128/UInt128/Bool定点、无符号、超大整数零开销高精度数值计算无溢出隐式转换坑。示例百万次循环求和Python 要几秒Julia 微秒级完成。专为科学、数值计算原生设计顶级矩阵 / 线性代数支持完善高精度与多精度数值丰富科学计算生态原生并行、分布式、GPU 加速无缝调用其他语言兼容现有生态安装从 https://julialang.org/downloads/ 下载 Windows Julia 通过 MSIX App Installer. 安装程序。默认安装在 C:\Users\xxx\AppData\Local\Programs目录下。交互式命令窗口终端中输入 julia 进入执行julia命令和函数。.jl文件二、基础语法数据类型整数类型Int8、Int16、Int32、Int64、Int128、UInt8、UInt16、UInt32、UInt64、UInt128浮点类型Float16、Float32、Float64字符串StringBoola多行字符串 RUNOOB包含了单个引号数组# 一维数组arr[1,2,3]# 不同类型arr[1,RUNOOB,2.5,pi]# 指定类型arrInt64[1,2,3]arr2String[Taobao,RUNOOB,GOOGLE]arr2[1]# 指定数组类型及维度arrayArray{Int64}(undef,3)# 表示一维数组数组有 3 个元素arrayArray{Int64}(undef,3,3,3)# 表示 3 维数组每个维度数组有 3 个元素# 二维数组[12;34][1:23:4]元组tupl(5,10,15,20,25,30)# 创建一个元组tupl((1,2),(3,4))# 创建二维元组# 元组命名names_shape(:corner1,:corner2)values_shape((100,100),(200,200))shape_item2NamedTuple{names_shape}(values_shape)shape_item2.corner1 shape_item2.corner2字典juliaDDict(A1,B2)Dict{String,Int64}with2entries:B2A1first_dictDict(string(x)sind(x)forx0:5:360)haskey(first_dict,A)D[C]3keys(first_dict)values(first_dict)forkvinfirst_dict println(kv)end集合var_siteSet()push!(var_site,Wiki)in(Runoob,var_site)ASet{String}([red,green,blue,black])BSet([red,orange,yellow,green,blue,indigo,violet])# 并集union(A,B)# 交集intersect(A,B)# 差集setdiff(A,B)日期和时间Date表示日期精确到日只显示日期。DateTime表示日期和时间精确到毫秒。DateTime表示日时间精确到纳秒代表一天 24 小时中的特定时刻。importDates juliaimportDates juliarightnowDates.Time(Dates.now())# 时间08:41:15.917juliathedayDates.Date(2022,5,6)# 日期2022-05-06juliatoday_dateDates.today()2022-05-11juliaDates.now(Dates.UTC)2022-05-11T00:44:20.136# 格式化时间juliaDates.DateTime(20220429 120000,yyyymmdd HHMMSS)2022-04-29T12:00:00juliaDates.DateTime(19/04/2022 17:42,dd/mm/yyyy HH:MM)2022-04-19T17:42:00三、函数function functionname(args)expression expression expression...expression endfunction f(x,y)xy end f(2,3)四、流程控制复合表达式begin 和 ;。条件表达式if-elseif-else 和 ?: (三元运算符)。短路运算逻辑运算符 与和 ||或以及链式比较。循环语句循环while 和 for。异常处理try-catch、error 和 throw。begin … end 表达式可以按顺序计算若干子表达式并返回最后一个子表达式的值juliazbegin x1y2xy end3ifboolean_expression1/*当布尔表达式1为真时执行*/elseif boolean_expression2/*当布尔表达式2为真时执行*/elseif boolean_expression3/*当布尔表达式3为真时执行*/else/*当上面条件都不为真时执行*/ifxy println(x is less than y)elseif xy println(x is greater than y)elseprintln(x is equal to y)end三元运算符juliax1;y2;juliaprintln(xy ?less than:not less than)less than juliax1;y0;juliaprintln(xy ?less than:not less than)notless thanJulia 中的 和 || 运算符分别对应于逻辑 “与” 和 “或” 操作。在表达式 a b 中子表达式 b 仅当 a 为 true 的时候才会被执行如果 a 为 false 则直接返回 false。在表达式 a || b 中子表达式 b 仅在 a 为 false 的时候才会被执行如果 a 为 true 直接返回 a。juliai1;juliawhilei5println(i)globali1end12345juliafori1:5println(i)end12345juliaforiin[1,4,0]println(i)end140juliafors ∈[foo,bar,baz]println(s)end foo bar bazjuliai1;juliawhiletrue println(i)ifi5breakendglobali1end12345juliaforj1:1000println(j)ifj5breakend end12345推导式[表达式for变量in列表][out_exp_resforout_expininput_list]或者[表达式for变量in列表if条件][out_exp_resforout_expininput_listifcondition]julia[X^2forXin1:5]5-element Array{Int64,1}:1491625遍历数组juliaa[a,b,c];juliafor(index,value)inenumerate(a)println($index $value)end1a2b3c juliaarrrand(0:9,4,4)4×4Array{Int64,2}:7658869463072324julia[xforxinenumerate(arr)]4×4Array{Tuple{Int64,Int64},2}:(1,7)(5,6)(9,5)(13,8)(2,8)(6,6)(10,9)(14,4)(3,6)(7,3)(11,0)(15,7)(4,2)(8,3)(12,2)(16,4)异常处理juliatrysqrt(ten)catch e println(你需要输入一个数字)end 你需要输入一个数字 fopen(file)try# operate on file ffinallyclose(f)end juliaf(x)x0? exp(-x):throw(DomainError(x,argument must be nonnegative))f(generic functionwith1method)juliaf(1)0.36787944117144233juliaf(-1)ERROR:DomainErrorwith-1:argument must be nonnegative Stacktrace:[1]f(::Int64)at./none:1五、文件读写# 打开文件如果文件不存在就创建 runoob-file.txtioopen(runoob-file.txt,w);# 写入文件内容write(io,Hello world!\nRunoob Julia Test);txtreadlines(file,keeptrue)# 关闭文件close(io);open(./runoob-test/julia/runoob-file.txt)dofile# 执行文件操作end# 打开文件open(runoob-file.txt)dofile# 逐行读取文件内容forlnineachline(file)# 输出字符串长度与字符串println($(length(ln)), $(ln))end end