[{"data":1,"prerenderedAt":5430},["ShallowReactive",2],{"search-docs":3,"doc-\u002Fother\u002Fjava\u002Fcore\u002Fbasic-grammar":886},[4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,72,76,80,84,88,92,96,100,104,108,112,116,120,124,128,132,136,140,144,148,152,156,159,162,165,169,172,175,178,182,186,190,194,198,202,206,210,214,218,222,226,230,234,238,242,246,250,254,258,262,266,269,273,277,281,285,288,291,294,298,301,304,307,310,313,316,319,322,325,329,332,336,340,344,348,352,356,359,362,365,368,371,374,377,380,383,386,389,393,396,399,402,405,408,411,414,417,420,424,428,432,435,438,442,446,450,454,458,462,466,470,474,477,480,483,487,491,494,497,500,504,507,511,515,518,521,524,527,530,533,536,539,542,545,548,551,554,557,560,563,566,569,572,575,579,583,587,591,595,599,603,606,610,614,617,620,623,626,629,633,637,640,643,646,649,652,655,658,661,664,667,670,673,676,679,682,685,688,691,694,697,700,703,706,709,712,716,720,724,728,732,736,740,744,748,752,756,760,764,768,772,775,779,783,787,790,793,796,799,802,805,808,811,814,818,822,825,829,832,835,838,841,844,848,851,854,858,862,865,869,873,876,879,882],{"path":5,"title":6,"description":7},"\u002Fabout\u002Fauthor","作者相关","只想纯粹的做一个程序员...",{"path":9,"title":10,"description":11},"\u002Fabout\u002Fjourney","心路历程","",{"path":13,"title":14,"description":15},"\u002Fai\u002Fagent\u002Fframeworks","Agent 框架","主流 Agent 框架：LangChain、LlamaIndex、AutoGen、CrewAI",{"path":17,"title":18,"description":19},"\u002Fai\u002Fagent\u002Fhooks","Agent Hooks 与自动化","Claude Agent 的 Hooks 生命周期、事件类型、典型自动化场景",{"path":21,"title":22,"description":23},"\u002Fai\u002Fagent\u002Fintroduction","AI Agent 概述","AI Agent 核心概念：感知、规划、执行、记忆",{"path":25,"title":26,"description":27},"\u002Fai\u002Fagent\u002Fpractice","Agent 实战","AI Agent 实战：构建自主任务执行系统",{"path":29,"title":30,"description":31},"\u002Fai\u002Fagent\u002Fsdk","Claude Agent SDK 开发","使用 Claude Agent SDK 构建自定义 AI Agent：架构、API、生命周期",{"path":33,"title":34,"description":35},"\u002Fai\u002Fagent\u002Fsubagents","Subagents 子代理","用 Subagents 分解复杂任务、并发执行、隔离上下文",{"path":37,"title":38,"description":39},"\u002Fai\u002Fagent\u002Ftool-use","工具调用","AI Agent 工具调用：Function Calling、Tool Use 原理与实践",{"path":41,"title":42,"description":43},"\u002Fai\u002Ffundamentals\u002Fdeep-learning","深度学习入门","深度学习基础知识：前向传播、反向传播、损失函数、优化器",{"path":45,"title":46,"description":47},"\u002Fai\u002Ffundamentals\u002Fml-basics","机器学习基础","机器学习核心概念：监督学习、无监督学习、强化学习",{"path":49,"title":50,"description":51},"\u002Fai\u002Ffundamentals\u002Fneural-networks","神经网络原理","神经网络架构：CNN、RNN、注意力机制",{"path":53,"title":54,"description":55},"\u002Fai\u002Fgetting-started","AI 学习路线","AI 技术学习路线图，从基础到实战的完整指南",{"path":57,"title":58,"description":59},"\u002Fai\u002Fllm\u002Ffine-tuning","模型微调","大模型微调技术：LoRA、QLoRA、全量微调、RLHF",{"path":61,"title":62,"description":63},"\u002Fai\u002Fllm\u002Fintroduction","大模型概述","大语言模型发展历程、核心能力与主流模型对比",{"path":65,"title":66,"description":67},"\u002Fai\u002Fllm\u002Flocal-deploy","本地部署","大模型本地部署：Ollama、vLLM、llama.cpp",{"path":69,"title":70,"description":71},"\u002Fai\u002Fllm\u002Ftransformer","Transformer 架构","Transformer 架构详解：自注意力机制、位置编码、多头注意力",{"path":73,"title":74,"description":75},"\u002Fai\u002Fmcp\u002Fclient","MCP Client 开发","MCP Client 开发指南：连接、调用、集成",{"path":77,"title":78,"description":79},"\u002Fai\u002Fmcp\u002Fdebugging","MCP 调试与排错","MCP Server 开发与集成过程中的常见问题、日志分析、诊断工具",{"path":81,"title":82,"description":83},"\u002Fai\u002Fmcp\u002Fintroduction","MCP 概述","Model Context Protocol 协议概述：架构、核心概念、应用场景",{"path":85,"title":86,"description":87},"\u002Fai\u002Fmcp\u002Fserver","MCP Server 开发","MCP Server 开发指南：资源、工具、提示词的实现",{"path":89,"title":90,"description":91},"\u002Fai\u002Fmcp\u002Ftools","MCP Tools 深入","深入理解 MCP Tools：与 Resources\u002FPrompts 的差异、Schema 设计、Annotations 与权限控制",{"path":93,"title":94,"description":95},"\u002Fai\u002Fprompt\u002Fadvanced","高级 Prompt 模式","高级 Prompt 设计模式：Tree-of-Thought、自我反思、多轮对话策略",{"path":97,"title":98,"description":99},"\u002Fai\u002Fprompt\u002Fbasics","Prompt 基础","Prompt Engineering 入门：基本概念、角色设定、输出格式控制",{"path":101,"title":102,"description":103},"\u002Fai\u002Fprompt\u002Ftechniques","提示词技巧","常用提示词技巧：Few-shot、Chain-of-Thought、ReAct",{"path":105,"title":106,"description":107},"\u002Fai\u002Frag\u002Fembedding","文本嵌入","文本嵌入模型：Embedding 原理、模型选择、相似度计算",{"path":109,"title":110,"description":111},"\u002Fai\u002Frag\u002Fintroduction","RAG 概述","检索增强生成（RAG）架构原理、优势与应用场景",{"path":113,"title":114,"description":115},"\u002Fai\u002Frag\u002Fpractice","RAG 实战","RAG 应用实战：文档问答系统、知识库搭建",{"path":117,"title":118,"description":119},"\u002Fai\u002Frag\u002Fvector-database","向量数据库","主流向量数据库对比：Milvus、Pinecone、Chroma、Weaviate",{"path":121,"title":122,"description":123},"\u002Fai\u002Fskills\u002Fbest-practices","Skill 最佳实践","编写高质量 Skill 的设计原则、常见陷阱与优化技巧",{"path":125,"title":126,"description":127},"\u002Fai\u002Fskills\u002Fcreating","创建自定义 Skill","从零编写一个可被 Agent 自动发现和调用的 Skill",{"path":129,"title":130,"description":131},"\u002Fai\u002Fskills\u002Fintroduction","Agent Skills 概述","Claude Agent Skills 概念、工作原理、与 Tools\u002FMCP 的区别",{"path":133,"title":134,"description":135},"\u002Fgolang\u002Fadvanced\u002Fconcurrency","Go - 并发深入","深入理解 Go 并发编程的核心机制。",{"path":137,"title":138,"description":139},"\u002Fgolang\u002Fadvanced\u002Fgc","Go - 垃圾回收","理解 Go 的垃圾回收机制，掌握 GC 调优方法。",{"path":141,"title":142,"description":143},"\u002Fgolang\u002Fadvanced\u002Fgmp","Go - GMP 调度模型","GMP 是 Go 运行时调度器的核心模型，理解它对于编写高性能 Go 程序至关重要。",{"path":145,"title":146,"description":147},"\u002Fgolang\u002Fadvanced\u002Fgo-concurrency","Go - 并发编程","Go 的并发是其核心特性之一，通过 Goroutine 和 Channel 实现。",{"path":149,"title":150,"description":151},"\u002Fgolang\u002Fadvanced\u002Fmemory","Go - 内存模型","理解 Go 的内存分配机制和内存模型。",{"path":153,"title":154,"description":155},"\u002Fgolang\u002Fadvanced\u002Fprofiling","Go - 性能分析","掌握 Go 的性能分析工具：pprof、trace、benchmark。",{"path":157,"title":158,"description":11},"\u002Fgolang\u002Fcore\u002Fgo-basic","Go - 基础语法",{"path":160,"title":161,"description":11},"\u002Fgolang\u002Fcore\u002Fgo-composite","Go - 复合类型",{"path":163,"title":164,"description":11},"\u002Fgolang\u002Fcore\u002Fgo-control","Go - 流程控制",{"path":166,"title":167,"description":168},"\u002Fgolang\u002Fcore\u002Fgo-error","Go - 错误处理","Go 使用显式的错误返回值来处理错误，而不是异常机制。",{"path":170,"title":171,"description":11},"\u002Fgolang\u002Fcore\u002Fgo-function","Go - 函数",{"path":173,"title":174,"description":11},"\u002Fgolang\u002Fcore\u002Fgo-install","Go - 环境搭建",{"path":176,"title":177,"description":11},"\u002Fgolang\u002Fcore\u002Fgo-interface","Go - 接口",{"path":179,"title":180,"description":181},"\u002Fgolang\u002Fcore\u002Fgo-module","Go - 包管理","Go Modules 是 Go 1.11 引入的官方依赖管理方案，Go 1.16 后成为默认模式。",{"path":183,"title":184,"description":185},"\u002Fgolang\u002Fdistributed\u002Fgrpc","Go - gRPC","gRPC 是 Google 开发的高性能 RPC 框架，使用 Protocol Buffers 作为序列化协议。",{"path":187,"title":188,"description":189},"\u002Fgolang\u002Fdistributed\u002Fmicroservice","Go - 微服务","微服务架构的核心组件：服务发现、负载均衡、熔断降级。",{"path":191,"title":192,"description":193},"\u002Fgolang\u002Fdistributed\u002Fmq","Go - 消息队列","使用 Go 操作 Kafka 和 RabbitMQ。",{"path":195,"title":196,"description":197},"\u002Fgolang\u002Fdistributed\u002Fredis","Go - Redis","使用 go-redis 操作 Redis，实现缓存、分布式锁等功能。",{"path":199,"title":200,"description":201},"\u002Fgolang\u002Fengineering\u002Fconfig","Go - 配置管理","使用 viper 进行配置管理，支持多种配置格式和配置中心。",{"path":203,"title":204,"description":205},"\u002Fgolang\u002Fengineering\u002Fdocker","Go - Docker 部署","使用 Docker 容器化部署 Go 应用。",{"path":207,"title":208,"description":209},"\u002Fgolang\u002Fengineering\u002Fkubernetes","Go - Kubernetes 部署","在 Kubernetes 上部署和管理 Go 应用。",{"path":211,"title":212,"description":213},"\u002Fgolang\u002Fengineering\u002Flogging","Go - 日志系统","使用 zap 和 logrus 构建高性能结构化日志系统。",{"path":215,"title":216,"description":217},"\u002Fgolang\u002Fengineering\u002Ftesting","Go - 单元测试","Go 内置了强大的测试框架，掌握测试是编写高质量代码的基础。",{"path":219,"title":220,"description":221},"\u002Fgolang\u002Fstdlib\u002Fbufio","bufio","在 Go 语言中，bufio 包提供了带缓冲的 I\u002FO 操作，能够提高读写性能。以下是一些常用的 bufio 包 API 及其详细说明：",{"path":223,"title":224,"description":225},"\u002Fgolang\u002Fstdlib\u002Fcontainer","container","在Go语言标准库中，container 包提供了几种常用的数据结构实现，这些数据结构对于高效地管理和操作数据非常有用。以下是 container 包中主要的数据结构：",{"path":227,"title":228,"description":229},"\u002Fgolang\u002Fstdlib\u002Fcrypto","crypto","在 Go 语言中，crypto 包提供了一组用于加密和解密的功能。以下是一些常用的 crypto 包及其子包的 API 及其详细说明：",{"path":231,"title":232,"description":233},"\u002Fgolang\u002Fstdlib\u002Fencoding-csv","encoding\u002Fcsv","在 Go 语言中，encoding\u002Fcsv 包提供了对 CSV（逗号分隔值）文件进行读写的功能。以下是一些常用的 encoding\u002Fcsv 包的 API 及其详细说明：",{"path":235,"title":236,"description":237},"\u002Fgolang\u002Fstdlib\u002Fencoding-json","encoding\u002Fjson","在 Go 语言中，encoding\u002Fjson 包提供了对 JSON 数据进行编码和解码的功能。以下是一些常用的 encoding\u002Fjson 包的 API 及其详细说明：",{"path":239,"title":240,"description":241},"\u002Fgolang\u002Fstdlib\u002Fencoding-xml","encoding\u002Fxml","在 Go 语言中，encoding\u002Fxml 包提供了对 XML 数据进行编码和解码的功能。以下是一些常用的 encoding\u002Fxml 包的 API 及其详细说明：",{"path":243,"title":244,"description":245},"\u002Fgolang\u002Fstdlib\u002Fflag","flag","在Go语言中，flag 包是用于处理命令行参数的标准库，它提供了一种简单而直接的方式来解析和使用命令行参数。下面是关于 flag 包的一些基本介绍和常用功能：",{"path":247,"title":248,"description":249},"\u002Fgolang\u002Fstdlib\u002Ffmt","fmt","在 Go 语言的标准库中，fmt 包是非常重要的，它提供了处理格式化输入和输出的基本工具。以下是一些 fmt 包内常用的API：",{"path":251,"title":252,"description":253},"\u002Fgolang\u002Fstdlib\u002Fhttp","net\u002Fhttp","在 Go 语言中，net\u002Fhttp 包提供了用于构建 HTTP 客户端和服务器的强大工具。以下是一些常用的 net\u002Fhttp 包的 API 及其详细说明：",{"path":255,"title":256,"description":257},"\u002Fgolang\u002Fstdlib\u002Fio","io","在 Go 语言中，io 包提供了基本的输入输出功能。以下是一些常用的 io 包的 API 及其详细说明：",{"path":259,"title":260,"description":261},"\u002Fgolang\u002Fstdlib\u002Flog","log","在 Go 语言中，log 包提供了简单的日志记录功能。以下是一些常用的 log 包的 API 及其详细说明：",{"path":263,"title":264,"description":265},"\u002Fgolang\u002Fstdlib\u002Fmath","math","在 Go 语言中，math 包提供了基本的数学函数和常量。以下是一些常用的 math 包的 API 及其详细说明：",{"path":267,"title":268,"description":11},"\u002Fgolang\u002Fstdlib\u002Fnet","net",{"path":270,"title":271,"description":272},"\u002Fgolang\u002Fstdlib\u002Fos","os","在Go语言中，os 包是一个非常重要且常用的标准库，它提供了与操作系统交互的功能，包括文件操作、环境变量管理、进程管理等。下面是一些 os 包中常用的功能和API：",{"path":274,"title":275,"description":276},"\u002Fgolang\u002Fstdlib\u002Fsort","order","在 Go 语言中，sort 包提供了对切片和用户定义的集合进行排序的函数。它实现了常见的排序算法，如快速排序（Quicksort）和堆排序（Heapsort），并且为自定义集合提供了接口，使得用户可以根据特定的需求进行排序。",{"path":278,"title":279,"description":280},"\u002Fgolang\u002Fstdlib\u002Fstrconv","strconv","在 Go 语言中，strconv 包提供了字符串和基本数据类型之间的转换函数，例如将整数转换为字符串、字符串转换为整数，以及其他类型之间的转换。这些功能非常有用，特别是在处理用户输入或从外部数据源读取数据时。",{"path":282,"title":283,"description":284},"\u002Fgolang\u002Fstdlib\u002Ftime","time","在 Go 语言中，time 包提供了处理时间和日期的功能。以下是一些常用的 time 包的 API 及其详细说明：",{"path":286,"title":287,"description":11},"\u002Fgolang\u002Fweb\u002Fgin\u002Ferror","Gin - 错误处理",{"path":289,"title":290,"description":11},"\u002Fgolang\u002Fweb\u002Fgin\u002Ffile","Gin - 文件处理",{"path":292,"title":293,"description":11},"\u002Fgolang\u002Fweb\u002Fgin\u002Fmiddleware","Gin - 中间件",{"path":295,"title":296,"description":297},"\u002Fgolang\u002Fweb\u002Fgin\u002Fquickstart","Gin - 快速开始","Gin 是目前最流行的 Go Web 框架，以高性能和简洁 API 著称。",{"path":299,"title":300,"description":11},"\u002Fgolang\u002Fweb\u002Fgin\u002Frequest","Gin - 请求处理",{"path":302,"title":303,"description":11},"\u002Fgolang\u002Fweb\u002Fgin\u002Fresponse","Gin - 响应处理",{"path":305,"title":306,"description":11},"\u002Fgolang\u002Fweb\u002Fgin\u002Frouter","Gin - 路由",{"path":308,"title":309,"description":11},"\u002Fgolang\u002Fweb\u002Fgin\u002Fvalidation","Gin - 参数校验",{"path":311,"title":312,"description":11},"\u002Fgolang\u002Fweb\u002Fgorm\u002Fassociation","GORM - 关联关系",{"path":314,"title":315,"description":11},"\u002Fgolang\u002Fweb\u002Fgorm\u002Fcrud","GORM - CRUD 操作",{"path":317,"title":318,"description":11},"\u002Fgolang\u002Fweb\u002Fgorm\u002Fmodel","GORM - 模型定义",{"path":320,"title":321,"description":11},"\u002Fgolang\u002Fweb\u002Fgorm\u002Fperformance","GORM - 日志与性能",{"path":323,"title":324,"description":11},"\u002Fgolang\u002Fweb\u002Fgorm\u002Fquery","GORM - 高级查询",{"path":326,"title":327,"description":328},"\u002Fgolang\u002Fweb\u002Fgorm\u002Fquickstart","GORM - 快速开始","GORM 是 Go 语言最流行的 ORM 库，功能强大，使用简单。",{"path":330,"title":331,"description":11},"\u002Fgolang\u002Fweb\u002Fgorm\u002Ftransaction","GORM - 事务与 Hook",{"path":333,"title":334,"description":335},"\u002Finterview\u002Fbasic","计算机基础面经","本章节汇总了面试中常见的通用技术概念，不局限于特定语言或数据库，是考察技术内功的关键考点。",{"path":337,"title":338,"description":339},"\u002Finterview\u002Fgolang","Golang 面试题","Go 语言面试高频考点，覆盖基础语法、数据结构、并发编程、内存管理、GC、调度器等核心知识。",{"path":341,"title":342,"description":343},"\u002Finterview\u002Fk8s","Kubernetes 面试题","Kubernetes（K8s）面试高频考点，覆盖架构原理、核心资源、网络存储、调度策略、运维监控等核心知识。",{"path":345,"title":346,"description":347},"\u002Finterview\u002Fmysql","MySQL 面试题","MySQL 数据库面试高频考点，覆盖索引、事务、锁、优化、主从复制等核心知识。",{"path":349,"title":350,"description":351},"\u002Finterview\u002Fredis","Redis 面试题","Redis 面试高频考点，覆盖数据结构、持久化、集群、缓存一致性、性能优化等核心知识。",{"path":353,"title":354,"description":355},"\u002Finterview\u002Frocketmq","RocketMQ 面试题","RocketMQ 面试高频考点，覆盖消息模型、可靠性、顺序消息、事务消息、存储与高可用等核心知识。",{"path":357,"title":358,"description":11},"\u002Fother\u002Fjava\u002Fcollection\u002Flist-arraylist","List - ArrayList 源码解析",{"path":360,"title":361,"description":11},"\u002Fother\u002Fjava\u002Fcollection\u002Flist-linkedlist","List - LinkedList 源码解析",{"path":363,"title":364,"description":11},"\u002Fother\u002Fjava\u002Fcollection\u002Flist-stack","List - Satck源码解析",{"path":366,"title":367,"description":11},"\u002Fother\u002Fjava\u002Fcollection\u002Flist-vectore","List - Vector 源码解析",{"path":369,"title":370,"description":11},"\u002Fother\u002Fjava\u002Fcollection\u002Fmap-hashmap","Map - HashMap 源码解析",{"path":372,"title":373,"description":11},"\u002Fother\u002Fjava\u002Fcollection\u002Fmap-linkedhashmap","Map - LinkedHashMap 源码解析",{"path":375,"title":376,"description":11},"\u002Fother\u002Fjava\u002Fcollection\u002Fmap-treemap","Map - TreeMap 源码解析",{"path":378,"title":379,"description":11},"\u002Fother\u002Fjava\u002Fcollection\u002Fqueue-deque","Queue - Deque 接口解析",{"path":381,"title":382,"description":11},"\u002Fother\u002Fjava\u002Fcollection\u002Fqueue-queue","Queue - Queue 接口解析",{"path":384,"title":385,"description":11},"\u002Fother\u002Fjava\u002Fcollection\u002Fset-hashset","Set - HashSet源码解析",{"path":387,"title":388,"description":11},"\u002Fother\u002Fjava\u002Fcollection\u002Fset-linkedhashset","Set - LinkedHashSet 源码解析",{"path":390,"title":391,"description":392},"\u002Fother\u002Fjava\u002Fcollection\u002Fset-treeset","Set - TreeSet源码解析","TreeSet 是一个 Set 集合接口的实现类，与 HashSet 类似，其底层也是通过维护了一个 TreeMap 对象来封装了一些实现方法，故本篇不再对 TreeSet 的底层原理进行详细说明，仅对常用 API 做简单介绍，如需了解 TreeMap 的底层实现原理，请移步 Map - HashMap 源码解析",{"path":394,"title":395,"description":11},"\u002Fother\u002Fjava\u002Fcore\u002Fannotation","Java核心 - 注解",{"path":397,"title":398,"description":11},"\u002Fother\u002Fjava\u002Fcore\u002Fbasic-grammar","Java核心 - 基础语法",{"path":400,"title":401,"description":11},"\u002Fother\u002Fjava\u002Fcore\u002Fclass-and-object","Java核心 - 面向对象",{"path":403,"title":404,"description":11},"\u002Fother\u002Fjava\u002Fcore\u002Fcommon-classes","Java核心 - 常用类",{"path":406,"title":407,"description":11},"\u002Fother\u002Fjava\u002Fcore\u002Fexception","Java核心 - 异常处理",{"path":409,"title":410,"description":11},"\u002Fother\u002Fjava\u002Fcore\u002Fgenerics","Java核心 - 泛型",{"path":412,"title":413,"description":11},"\u002Fother\u002Fjava\u002Fcore\u002Fjdk-env-path","Java核心 - 环境搭建",{"path":415,"title":416,"description":11},"\u002Fother\u002Fjava\u002Fcore\u002Freflection","Java核心 - 反射",{"path":418,"title":419,"description":11},"\u002Fother\u002Fjava\u002Fcore\u002Fstring","Java核心 - String 字符串",{"path":421,"title":422,"description":423},"\u002Fother\u002Fjava\u002Fio\u002Fbuffer-stream","Java IO - 缓冲流","缓冲流是对基本流的包装，通过内置缓冲区减少系统调用次数，大幅提升读写效率。",{"path":425,"title":426,"description":427},"\u002Fother\u002Fjava\u002Fio\u002Fbyte-stream","Java IO - 字节流","字节流是 Java IO 中最基本的流类型，以字节（byte）为单位进行数据读写，可以处理任意类型的文件。",{"path":429,"title":430,"description":431},"\u002Fother\u002Fjava\u002Fio\u002Fchar-stream","Java IO - 字符流","字符流以字符为单位进行读写，专门用于处理文本文件。相比字节流，字符流能够正确处理字符编码，避免中文乱码问题。",{"path":433,"title":434,"description":11},"\u002Fother\u002Fjava\u002Fio\u002Ffile","Java IO - File 类",{"path":436,"title":437,"description":11},"\u002Fother\u002Fjava\u002Fio\u002Fio-stream-system","Java IO - IO流概述",{"path":439,"title":440,"description":441},"\u002Fother\u002Fjava\u002Fio\u002Fnio","Java IO - NIO","NIO（New IO）是 JDK 1.4 引入的新 IO 模型，提供了更高效的 IO 操作方式，支持非阻塞 IO 和多路复用。",{"path":443,"title":444,"description":445},"\u002Fother\u002Fjava\u002Fjvm\u002Fclass-loading","类加载机制","类加载机制是 JVM 将 .class 文件加载到内存，并对数据进行校验、转换解析和初始化，最终形成可被 JVM 直接使用的 Java 类型的过程。",{"path":447,"title":448,"description":449},"\u002Fother\u002Fjava\u002Fjvm\u002Fgarbage-collection","垃圾回收","垃圾回收（Garbage Collection，GC）是 JVM 自动管理内存的机制，负责回收不再使用的对象所占用的内存。",{"path":451,"title":452,"description":453},"\u002Fother\u002Fjava\u002Fjvm\u002Fjvm-memory","JVM 内存结构","JVM 在执行 Java 程序时，会把它管理的内存划分为若干个不同的数据区域。这些区域有各自的用途、创建和销毁时间。",{"path":455,"title":456,"description":457},"\u002Fother\u002Fjava\u002Fjvm\u002Fjvm-tuning","JVM 调优","JVM 调优是优化 Java 应用性能的重要手段，主要包括参数配置、性能监控和问题排查。",{"path":459,"title":460,"description":461},"\u002Fother\u002Fjava\u002Fthread\u002Fatomic","原子类","Java 原子类（Atomic Classes）提供了一种无锁的线程安全方式，基于 CAS（Compare-And-Swap）操作实现。",{"path":463,"title":464,"description":465},"\u002Fother\u002Fjava\u002Fthread\u002Fcompletable-future","CompletableFuture","CompletableFuture 是 JDK 8 引入的异步编程工具，实现了 Future 和 CompletionStage 接口，支持函数式编程和链式调用。",{"path":467,"title":468,"description":469},"\u002Fother\u002Fjava\u002Fthread\u002Fconcurrent-collections","并发集合","Java 并发包提供了多种线程安全的集合类，用于替代传统的同步集合（如 Collections.synchronizedList）。",{"path":471,"title":472,"description":473},"\u002Fother\u002Fjava\u002Fthread\u002Fconcurrent-utils","并发工具类","Java 并发包提供了多种实用的并发工具类，用于控制线程之间的协调与同步。",{"path":475,"title":476,"description":11},"\u002Fother\u002Fjava\u002Fthread\u002Fsynchronized-lock","同步机制",{"path":478,"title":479,"description":11},"\u002Fother\u002Fjava\u002Fthread\u002Fthread-basic","线程基础",{"path":481,"title":482,"description":11},"\u002Fother\u002Fjava\u002Fthread\u002Fthread-pool","线程池",{"path":484,"title":485,"description":486},"\u002Fother\u002Fspring-series\u002Fspring\u002Fannotations-beans","Spring - 基于注解管理Bean","从 Java 5 开始，Java 增加了对注解（Annotation）的支持，它是代码中的一种特殊标记，可以在编译、类加载和运行时被读取，执行相应的处理。开发人员可以通过注解在不改变原有代码和逻辑的情况下，在源代码中嵌入补充信息。",{"path":488,"title":489,"description":490},"\u002Fother\u002Fspring-series\u002Fspring\u002Fimplement-ioc","Spring - 原理手写IoC","Spring 框架的 IOC 是基于 Java 反射机制实现的，在学习手写 IoC 之前，你需要具备一定的 Java 反射相关的知识，参考本站内的 Java 教程。",{"path":492,"title":493,"description":11},"\u002Fother\u002Fspring-series\u002Fspring\u002Fintroduction-case","Spring - 入门案例",{"path":495,"title":496,"description":11},"\u002Fother\u002Fspring-series\u002Fspring\u002Fspring-aop","Spring - 面向切面AOP",{"path":498,"title":499,"description":11},"\u002Fother\u002Fspring-series\u002Fspring\u002Fspring-aot","Spring - AOT提前编译",{"path":501,"title":502,"description":503},"\u002Fother\u002Fspring-series\u002Fspring\u002Fspring-data-validation","Spring - 数据校验","在开发中，我们经常遇到参数校验的需求，比如用户注册的时候，要校验用户名不能为空、用户名长度不超过20个字符、手机号是合法的手机号格式等等。如果使用普通方式，我们会把校验的代码和真正的业务处理逻辑耦合在一起，而且如果未来要新增一种校验逻辑也需要在修改多个地方。而spring validation允许通过注解的方式来定义对象校验规则，把校验和业务逻辑分离开，让代码编写更加方便。Spring Validation其实就是对Hibernate Validator进一步的封装，方便在Spring中使用。",{"path":505,"title":506,"description":11},"\u002Fother\u002Fspring-series\u002Fspring\u002Fspring-i18n","Spring - 国际化i18n",{"path":508,"title":509,"description":510},"\u002Fother\u002Fspring-series\u002Fspring\u002Fspring-ioc","Spring - IOC容器","IoC 是 Inversion of Control 的简写，译为“控制反转”，它不是一门技术，而是一种设计思想，是一个重要的面向对象编程法则，能够指导我们如何设计出松耦合、更优良的程序。",{"path":512,"title":513,"description":514},"\u002Fother\u002Fspring-series\u002Fspring\u002Fspring-junit","Spring - 单元测试JUnit","在之前的测试方法中，几乎都能看到以下的两行代码：",{"path":516,"title":517,"description":11},"\u002Fother\u002Fspring-series\u002Fspring\u002Fspring-resources","Spring - 资源操作",{"path":519,"title":520,"description":11},"\u002Fother\u002Fspring-series\u002Fspring\u002Fspring-summarize","Spring - Spring概述",{"path":522,"title":523,"description":11},"\u002Fother\u002Fspring-series\u002Fspring\u002Fspring-transaction","Spring - 事务",{"path":525,"title":526,"description":11},"\u002Fother\u002Fspring-series\u002Fspring\u002Fxml-beans","Spring - 基于XML管理Bean",{"path":528,"title":529,"description":11},"\u002Fother\u002Fspring-series\u002Fspringboot\u002Fspringboot-config","SpringBoot - 配置详解",{"path":531,"title":532,"description":11},"\u002Fother\u002Fspring-series\u002Fspringboot\u002Fspringboot-data","SpringBoot - 数据访问",{"path":534,"title":535,"description":11},"\u002Fother\u002Fspring-series\u002Fspringboot\u002Fspringboot-quickstart","SpringBoot - 快速入门",{"path":537,"title":538,"description":11},"\u002Fother\u002Fspring-series\u002Fspringboot\u002Fspringboot-web","SpringBoot - Web 开发",{"path":540,"title":541,"description":11},"\u002Fother\u002Fspring-series\u002Fspringcloud\u002Fspringcloud-config","SpringCloud - 配置中心",{"path":543,"title":544,"description":11},"\u002Fother\u002Fspring-series\u002Fspringcloud\u002Fspringcloud-discovery","SpringCloud - 服务注册与发现",{"path":546,"title":547,"description":11},"\u002Fother\u002Fspring-series\u002Fspringcloud\u002Fspringcloud-feign","SpringCloud - 服务调用",{"path":549,"title":550,"description":11},"\u002Fother\u002Fspring-series\u002Fspringcloud\u002Fspringcloud-gateway","SpringCloud - 服务网关",{"path":552,"title":553,"description":11},"\u002Fother\u002Fspring-series\u002Fspringcloud\u002Fspringcloud-introduction","SpringCloud - 微服务概述",{"path":555,"title":556,"description":11},"\u002Fother\u002Fspring-series\u002Fspringcloud\u002Fspringcloud-sentinel","SpringCloud - 服务保护",{"path":558,"title":559,"description":11},"\u002Fother\u002Fspring-series\u002Fspringmvc\u002Fspringmvc-databind","SpringMVC - 数据绑定与转换",{"path":561,"title":562,"description":11},"\u002Fother\u002Fspring-series\u002Fspringmvc\u002Fspringmvc-exception","SpringMVC - 异常处理",{"path":564,"title":565,"description":11},"\u002Fother\u002Fspring-series\u002Fspringmvc\u002Fspringmvc-interceptor","SpringMVC - 拦截器",{"path":567,"title":568,"description":11},"\u002Fother\u002Fspring-series\u002Fspringmvc\u002Fspringmvc-introduction","SpringMVC - 简介与环境搭建",{"path":570,"title":571,"description":11},"\u002Fother\u002Fspring-series\u002Fspringmvc\u002Fspringmvc-request","SpringMVC - 请求处理",{"path":573,"title":574,"description":11},"\u002Fother\u002Fspring-series\u002Fspringmvc\u002Fspringmvc-response","SpringMVC - 响应处理",{"path":576,"title":577,"description":578},"\u002Fproject\u002Frocket-leaf\u002Farchitecture","项目架构","Rocket-Leaf 的目录结构、模块划分、数据流向，以及各层之间的依赖关系。",{"path":580,"title":581,"description":582},"\u002Fproject\u002Frocket-leaf\u002Fbackend-layers","后端分层设计","Rocket-Leaf 的 model \u002F rocketmq \u002F service 三层结构，以及服务之间的依赖关系与设计取舍。",{"path":584,"title":585,"description":586},"\u002Fproject\u002Frocket-leaf\u002Fclient-manager","RocketMQ 客户端管理器","AdminClientManager 的多客户端池、默认连接懒加载、自动重连重试的设计与实现。",{"path":588,"title":589,"description":590},"\u002Fproject\u002Frocket-leaf\u002Fencryption","连接信息加密存储","AES-256-GCM + SHA-256 字段级派生密钥的实现，以及如何在不破坏兼容性的前提下为历史明文数据做透明迁移。",{"path":592,"title":593,"description":594},"\u002Fproject\u002Frocket-leaf\u002Ffrontend","前端结构与类型绑定","React + Vite 目录组织、自动生成的 Wails 绑定、api 薄封装与自定义 hooks 的职责划分。",{"path":596,"title":597,"description":598},"\u002Fproject\u002Frocket-leaf","项目简介","Rocket-Leaf 是一款基于 Wails v3 构建的跨平台 RocketMQ 桌面管理客户端，Go 后端 + React 前端。本文档系列拆解它的架构与关键实现。",{"path":600,"title":601,"description":602},"\u002Fproject\u002Frocket-leaf\u002Fwails-v3","Wails v3 入门","Wails v3 的核心概念、Service 绑定机制，以及 Rocket-Leaf 是如何用它把 Go 后端和 React 前端打通的。",{"path":604,"title":605,"description":11},"\u002Ftutorials\u002Fcloud\u002Fdocker\u002Fdocker-basic","Docker - 入门基础",{"path":607,"title":608,"description":609},"\u002Ftutorials\u002Fcloud\u002Fdocker\u002Fdocker-compose","Docker - Compose","在部署应用时，常常使用到不止一个容器，那么在部署容器的时候就需要一个一个进行部署，这样的部署过程也相对来说比较繁琐复杂，也容易出问题，那么有没有一种更为简单的方法呢？",{"path":611,"title":612,"description":613},"\u002Ftutorials\u002Fcloud\u002Fdocker\u002Fdocker-container-connection","Docker - 容器互联","在上一个章节中我们学习了 Docker 容器的端口映射，可以将 Docker 容器和本地以及网络中的端口进行连接起来。",{"path":615,"title":616,"description":11},"\u002Ftutorials\u002Fcloud\u002Fdocker\u002Fdocker-dockerfile","Docker - Dockerfile",{"path":618,"title":619,"description":11},"\u002Ftutorials\u002Fcloud\u002Fdocker\u002Fdocker-helloworld","Docker - HelloWorld",{"path":621,"title":622,"description":11},"\u002Ftutorials\u002Fcloud\u002Fdocker\u002Fdocker-install","Docker - 安装",{"path":624,"title":625,"description":11},"\u002Ftutorials\u002Fcloud\u002Fdocker\u002Fdocker-introduce","Docker - 简介",{"path":627,"title":628,"description":11},"\u002Ftutorials\u002Fcloud\u002Fdocker\u002Fdocker-object","Docker - 镜像、容器、仓库",{"path":630,"title":631,"description":632},"\u002Ftutorials\u002Fcloud\u002Fdocker\u002Fdocker-warehouse","Docker - 仓库管理","仓库是集中存放资源的地方，代码仓库是存放代码的，那么Docker 中的仓库就是存放 Docker 镜像的。",{"path":634,"title":635,"description":636},"\u002Ftutorials\u002Fcloud\u002Fdocker\u002Fdocker-web-containers","Docker - WEB应用实例","在之前的章节中，仅对普通容器进行了演示，但在实际中常常使用到 Docker 容器中的 WEB 应用程序。",{"path":638,"title":639,"description":11},"\u002Ftutorials\u002Fcloud\u002Fkubernetes\u002Fk8s-config","Kubernetes - ConfigMap 与 Secret",{"path":641,"title":642,"description":11},"\u002Ftutorials\u002Fcloud\u002Fkubernetes\u002Fk8s-helm","Kubernetes - Helm 包管理",{"path":644,"title":645,"description":11},"\u002Ftutorials\u002Fcloud\u002Fkubernetes\u002Fk8s-install","Kubernetes - 集群安装",{"path":647,"title":648,"description":11},"\u002Ftutorials\u002Fcloud\u002Fkubernetes\u002Fk8s-introduction","Kubernetes - 简介与架构",{"path":650,"title":651,"description":11},"\u002Ftutorials\u002Fcloud\u002Fkubernetes\u002Fk8s-kubectl","Kubernetes - kubectl 命令行工具",{"path":653,"title":654,"description":11},"\u002Ftutorials\u002Fcloud\u002Fkubernetes\u002Fk8s-monitoring","Kubernetes - 监控与日志",{"path":656,"title":657,"description":11},"\u002Ftutorials\u002Fcloud\u002Fkubernetes\u002Fk8s-network-security","Kubernetes - 网络与安全",{"path":659,"title":660,"description":11},"\u002Ftutorials\u002Fcloud\u002Fkubernetes\u002Fk8s-service","Kubernetes - Service 与 Ingress",{"path":662,"title":663,"description":11},"\u002Ftutorials\u002Fcloud\u002Fkubernetes\u002Fk8s-storage","Kubernetes - 持久化存储",{"path":665,"title":666,"description":11},"\u002Ftutorials\u002Fcloud\u002Fkubernetes\u002Fk8s-workload","Kubernetes - 工作负载资源",{"path":668,"title":669,"description":11},"\u002Ftutorials\u002Fcloud\u002Flinux\u002Flinux-bash","Linux - Bash 基础语法",{"path":671,"title":672,"description":11},"\u002Ftutorials\u002Fcloud\u002Flinux\u002Flinux-file-directory","Linux - 文件与目录操作",{"path":674,"title":675,"description":11},"\u002Ftutorials\u002Fcloud\u002Flinux\u002Flinux-network","Linux - 网络配置",{"path":677,"title":678,"description":11},"\u002Ftutorials\u002Fcloud\u002Flinux\u002Flinux-package","Linux - 软件包管理",{"path":680,"title":681,"description":11},"\u002Ftutorials\u002Fcloud\u002Flinux\u002Flinux-process","Linux - 进程管理",{"path":683,"title":684,"description":11},"\u002Ftutorials\u002Fcloud\u002Flinux\u002Flinux-scripts","Linux - 常用脚本示例",{"path":686,"title":687,"description":11},"\u002Ftutorials\u002Fcloud\u002Flinux\u002Flinux-service","Linux - 服务管理",{"path":689,"title":690,"description":11},"\u002Ftutorials\u002Fcloud\u002Flinux\u002Flinux-user-permission","Linux - 用户与权限管理",{"path":692,"title":693,"description":11},"\u002Ftutorials\u002Fcloud\u002Fnginx\u002Fnginx-https","Nginx - HTTPS 配置",{"path":695,"title":696,"description":11},"\u002Ftutorials\u002Fcloud\u002Fnginx\u002Fnginx-install","Nginx - 安装与配置",{"path":698,"title":699,"description":11},"\u002Ftutorials\u002Fcloud\u002Fnginx\u002Fnginx-loadbalance","Nginx - 负载均衡",{"path":701,"title":702,"description":11},"\u002Ftutorials\u002Fcloud\u002Fnginx\u002Fnginx-optimization","Nginx - 性能优化",{"path":704,"title":705,"description":11},"\u002Ftutorials\u002Fcloud\u002Fnginx\u002Fnginx-proxy","Nginx - 反向代理",{"path":707,"title":708,"description":11},"\u002Ftutorials\u002Fcloud\u002Fnginx\u002Fnginx-static","Nginx - 静态资源服务",{"path":710,"title":711,"description":11},"\u002Ftutorials\u002Fcloud\u002Fnginx\u002Fnginx-vhost","Nginx - 虚拟主机配置",{"path":713,"title":714,"description":715},"\u002Ftutorials\u002Fdatabase\u002Fmysql\u002Fmysql-architecture","MySQL 高可用架构","主从复制、读写分离、分库分表。",{"path":717,"title":718,"description":719},"\u002Ftutorials\u002Fdatabase\u002Fmysql\u002Fmysql-index","MySQL 索引","索引是帮助 MySQL 高效获取数据的有序数据结构。",{"path":721,"title":722,"description":723},"\u002Ftutorials\u002Fdatabase\u002Fmysql\u002Fmysql-lock","MySQL 锁","锁用于解决并发访问时的数据一致性问题。",{"path":725,"title":726,"description":727},"\u002Ftutorials\u002Fdatabase\u002Fmysql\u002Fmysql-optimize","MySQL 性能优化","SQL 优化是后端开发必备技能。",{"path":729,"title":730,"description":731},"\u002Ftutorials\u002Fdatabase\u002Fmysql\u002Fmysql-transaction","MySQL 事务","事务是一组不可分割的操作，要么全部成功，要么全部失败。",{"path":733,"title":734,"description":735},"\u002Ftutorials\u002Fdatabase\u002Fmysql\u002Fsql-advanced","SQL 进阶","多表查询、子查询、函数、视图、存储过程。",{"path":737,"title":738,"description":739},"\u002Ftutorials\u002Fdatabase\u002Fmysql\u002Fsql-basic","SQL 基础","SQL（Structured Query Language）是操作关系型数据库的标准语言。",{"path":741,"title":742,"description":743},"\u002Ftutorials\u002Fdatabase\u002Fredis\u002Fredis-advanced","Redis 进阶功能","事务、发布订阅、Lua 脚本、Pipeline。",{"path":745,"title":746,"description":747},"\u002Ftutorials\u002Fdatabase\u002Fredis\u002Fredis-basic","Redis 基础","Redis 安装配置与基本命令。",{"path":749,"title":750,"description":751},"\u002Ftutorials\u002Fdatabase\u002Fredis\u002Fredis-cluster","Redis 高可用","主从复制、哨兵、Cluster 集群。",{"path":753,"title":754,"description":755},"\u002Ftutorials\u002Fdatabase\u002Fredis\u002Fredis-datatype","Redis 数据类型","Redis 5 种基本数据类型 + 4 种特殊类型。",{"path":757,"title":758,"description":759},"\u002Ftutorials\u002Fdatabase\u002Fredis\u002Fredis-optimize","Redis 性能优化","内存优化、缓存问题、最佳实践。",{"path":761,"title":762,"description":763},"\u002Ftutorials\u002Fdatabase\u002Fredis\u002Fredis-persistence","Redis 持久化","Redis 提供 RDB 和 AOF 两种持久化方式。",{"path":765,"title":766,"description":767},"\u002Ftutorials\u002Fdatabase\u002Fredis\u002Fredis-principle","Redis 底层原理","数据结构、线程模型、网络模型。",{"path":769,"title":770,"description":771},"\u002Ftutorials\u002Fdev-idea\u002Fdesign-patterns\u002Fbehaiver-patterns\u002Fobserver-pattern","观察者模式","观察者模式属于行为型模式，定义了对象之间的一对多的依赖关系，在这种模式中，当一个对象的状态发生变化时，所有依赖于它的对象都会得到通知，并且执行相关操作。观察者模式又被成为“发布—订阅模式”，即发布者发生改变后，会通知所有订阅者。",{"path":773,"title":774,"description":11},"\u002Ftutorials\u002Fdev-idea\u002Fdesign-patterns\u002Fcreate-patterns\u002Ffactory-pattern","工厂模式",{"path":776,"title":777,"description":778},"\u002Ftutorials\u002Fdev-idea\u002Fdesign-patterns\u002Fcreate-patterns\u002Fsingleton-pattern","单例模式","单例模式是最常用的设计模式之一，他可以保证在整个应用中，某个类只存在一个实例化对象，即全局使用到该类的只有一个对象，这种模式在需要限制某些类的实例数量时非常有用，通常全局只需要一个该对象即可，如一些配置文件映射对象、数据库连接对象等。",{"path":780,"title":781,"description":782},"\u002Ftutorials\u002Fdev-idea\u002Fdesign-patterns\u002Fstructural-patterns\u002Fadapter-pattern","适配器模式","适配器模式是一种结构型模式，可以将一个类的接口转换成客户端所期望的另一种接口，适配器模式可以帮助开发人员在不修改现有代码的情况下，将不兼容的类组合在一起。",{"path":784,"title":785,"description":786},"\u002Ftutorials\u002Fdev-tools\u002Fgit\u002Fgit-basic-operations","Git 创建版本库","在 Git 上创建版本库有两种方式，一种是直接拷贝远程 Git 仓库到本地，另外一种是我们自己创建本地的版本库。",{"path":788,"title":789,"description":11},"\u002Ftutorials\u002Fdev-tools\u002Fgit\u002Fgit-branch-manage","Git 分支管理",{"path":791,"title":792,"description":11},"\u002Ftutorials\u002Fdev-tools\u002Fgit\u002Fgit-content-operations","Git 仓库内容操作",{"path":794,"title":795,"description":11},"\u002Ftutorials\u002Fdev-tools\u002Fgit\u002Fgit-introduce-install","Git 介绍和安装",{"path":797,"title":798,"description":11},"\u002Ftutorials\u002Fdev-tools\u002Fgit\u002Fgit-remote-manage","Git 远程管理",{"path":800,"title":801,"description":11},"\u002Ftutorials\u002Fdev-tools\u002Fgit\u002Fgit-workspace-index-repo","Git 工作原理",{"path":803,"title":804,"description":11},"\u002Ftutorials\u002Fdev-tools\u002Fhomebrew","HomeBrew 教程",{"path":806,"title":807,"description":11},"\u002Ftutorials\u002Fdev-tools\u002Fidea\u002Fshortcuts","快捷键",{"path":809,"title":810,"description":11},"\u002Ftutorials\u002Fdev-tools\u002Fmaven\u002Fintroduce-install-config","Maven - 介绍、安装、配置",{"path":812,"title":813,"description":11},"\u002Ftutorials\u002Ffront-end\u002Fvue3\u002Fbasic-knowledge","2. 基础知识",{"path":815,"title":816,"description":817},"\u002Ftutorials\u002Ffront-end\u002Fvue3\u002Fcomponent-communication","9. 组件通信","在前面的章节内，介绍了 Vue 中最核心的内容——组件的介绍和使用，和 Java 等编程语言相反，组件并不近似于这些变成语言中的类，类可以通过类或者其实例化的对象来相互交互，但 Vue 组件之间的作用域是相互独立的，这就意味着不同组件之间的数据无法相互引用。",{"path":819,"title":820,"description":821},"\u002Ftutorials\u002Ffront-end\u002Fvue3\u002Fcomputed","4. 计算属性","虽然直接在模板中使用表达式方便，但是如果在模板中添加很多逻辑，会让模板变的臃肿且难维护，耦合度较高。有没有一种简单的方式来实现呢？答案是有的。",{"path":823,"title":824,"description":11},"\u002Ftutorials\u002Ffront-end\u002Fvue3\u002Fcreate-vue-project","1. 环境搭建及安装",{"path":826,"title":827,"description":828},"\u002Ftutorials\u002Ffront-end\u002Fvue3\u002Flife-cycle","6. 生命周期","生命周期是指组件从创建、挂载、更新到销毁的整个过程中所经历的一系列阶段。在 Vue 中，每个组件都有自己的生命周期，可以通过生命周期钩子函数来监听和处理组件在不同阶段的行为和状态。",{"path":830,"title":831,"description":11},"\u002Ftutorials\u002Ffront-end\u002Fvue3\u002Fother-api","10. 其他 API",{"path":833,"title":834,"description":11},"\u002Ftutorials\u002Ffront-end\u002Fvue3\u002Fpinia","8. Pinia",{"path":836,"title":837,"description":11},"\u002Ftutorials\u002Ffront-end\u002Fvue3\u002Frouter","7. 路由",{"path":839,"title":840,"description":11},"\u002Ftutorials\u002Ffront-end\u002Fvue3\u002Ftemplate-grammar","3. 指令及模板语法",{"path":842,"title":843,"description":11},"\u002Ftutorials\u002Ffront-end\u002Fvue3\u002Fvue3-new-component","11. Vue3 新组件",{"path":845,"title":846,"description":847},"\u002Ftutorials\u002Ffront-end\u002Fvue3\u002Fwatch","5. 监视","Watch 是 Vue 提供的一个用于监视响应式数据变化并执行相应操作的 API，能够对响应式数据的变化做出一些操作的功能。Vue3 中的 Watch 支持多种用法，包括监视响应式对象、ref 对象、数组、函数等。",{"path":849,"title":850,"description":11},"\u002Ftutorials\u002Fmq\u002Fkafka\u002Fkafka-introduction","Kafka 简介与安装",{"path":852,"title":853,"description":11},"\u002Ftutorials\u002Fmq\u002Fkafka\u002Fkafka-producer-consumer","Kafka 生产者与消费者",{"path":855,"title":856,"description":857},"\u002Ftutorials\u002Fmq\u002Fkafka\u002Fkafka-springboot","Spring Boot 整合 Kafka","Spring Kafka 提供了对 Apache Kafka 的便捷集成。",{"path":859,"title":860,"description":861},"\u002Ftutorials\u002Fmq\u002Frabbitmq\u002Frabbitmq-exchange","RabbitMQ Exchange 详解","Exchange（交换机）是 RabbitMQ 的核心组件，负责接收生产者发送的消息，并根据规则将消息路由到一个或多个队列。",{"path":863,"title":864,"description":11},"\u002Ftutorials\u002Fmq\u002Frabbitmq\u002Frabbitmq-introduction","RabbitMQ 简介与安装",{"path":866,"title":867,"description":868},"\u002Ftutorials\u002Fmq\u002Frabbitmq\u002Frabbitmq-reliability","RabbitMQ 消息可靠性","消息可靠性是消息队列的核心要求，RabbitMQ 提供了多种机制来保证消息不丢失。",{"path":870,"title":871,"description":872},"\u002Ftutorials\u002Fmq\u002Frabbitmq\u002Frabbitmq-springboot","Spring Boot 整合 RabbitMQ","Spring AMQP 提供了对 RabbitMQ 的便捷集成，大大简化了开发工作。",{"path":874,"title":875,"description":11},"\u002Ftutorials\u002Fmq\u002Frocketmq\u002Frocketmq-client","RocketMQ 客户端使用",{"path":877,"title":878,"description":11},"\u002Ftutorials\u002Fmq\u002Frocketmq\u002Frocketmq-concepts","RocketMQ 核心概念",{"path":880,"title":881,"description":11},"\u002Ftutorials\u002Fmq\u002Frocketmq\u002Frocketmq-installation","RocketMQ 安装部署",{"path":883,"title":884,"description":885},"\u002Ftutorials\u002Fmq\u002Frocketmq\u002Frocketmq-message-type","RocketMQ 消息类型","RocketMQ 支持多种消息类型，满足不同业务场景需求。",{"id":887,"title":398,"body":888,"description":11,"extension":5425,"meta":5426,"navigation":925,"path":397,"seo":5427,"stem":5428,"__hash__":5429},"docs\u002Fother\u002Fjava\u002Fcore\u002Fbasic-grammar.md",{"type":889,"value":890,"toc":5383},"minimark",[891,895,899,1007,1012,1015,1019,1022,1045,1117,1120,1206,1209,1212,1430,1432,1444,1447,1450,1595,1732,1735,1738,1832,1835,1838,1887,1892,2002,2005,2164,2170,2173,2176,2288,2396,2399,2490,2493,2588,2649,2652,2755,2758,2853,2856,2910,2913,2916,3008,3012,3014,3018,3162,3166,3344,3348,3352,3571,3575,3692,3696,3945,3948,3951,4107,4110,4300,4303,4578,4582,4791,4794,4797,4827,4956,4959,4962,5116,5119,5122,5255,5258,5261,5379],[892,893,894],"h2",{"id":894},"注释",[896,897,898],"p",{},"Java 支持三种注释方式：",[900,901,905],"pre",{"className":902,"code":903,"language":904,"meta":11,"style":11},"language-java shiki shiki-themes github-light github-light github-dark","\u002F\u002F 单行注释：从 \u002F\u002F 开始到行尾\n\n\u002F*\n * 多行注释：\n * 可以跨越多行\n *\u002F\n\n\u002F**\n * 文档注释：\n * 用于生成 API 文档\n * @param args 命令行参数\n * @return 无返回值\n *\u002F\n","java",[906,907,908,920,927,933,939,945,951,956,962,968,974,991,1002],"code",{"__ignoreMap":11},[909,910,913,917],"span",{"class":911,"line":912},"line",1,[909,914,916],{"class":915},"sCsY4","\u002F\u002F 单行注释：从",[909,918,919],{"class":915}," \u002F\u002F 开始到行尾\n",[909,921,923],{"class":911,"line":922},2,[909,924,926],{"emptyLinePlaceholder":925},true,"\n",[909,928,930],{"class":911,"line":929},3,[909,931,932],{"class":915},"\u002F*\n",[909,934,936],{"class":911,"line":935},4,[909,937,938],{"class":915}," * 多行注释：\n",[909,940,942],{"class":911,"line":941},5,[909,943,944],{"class":915}," * 可以跨越多行\n",[909,946,948],{"class":911,"line":947},6,[909,949,950],{"class":915}," *\u002F\n",[909,952,954],{"class":911,"line":953},7,[909,955,926],{"emptyLinePlaceholder":925},[909,957,959],{"class":911,"line":958},8,[909,960,961],{"class":915},"\u002F**\n",[909,963,965],{"class":911,"line":964},9,[909,966,967],{"class":915}," * 文档注释：\n",[909,969,971],{"class":911,"line":970},10,[909,972,973],{"class":915}," * 用于生成 API 文档\n",[909,975,977,980,984,988],{"class":911,"line":976},11,[909,978,979],{"class":915}," * ",[909,981,983],{"class":982},"s8jYJ","@param",[909,985,987],{"class":986},"sP4rz"," args",[909,989,990],{"class":915}," 命令行参数\n",[909,992,994,996,999],{"class":911,"line":993},12,[909,995,979],{"class":915},[909,997,998],{"class":982},"@return",[909,1000,1001],{"class":915}," 无返回值\n",[909,1003,1005],{"class":911,"line":1004},13,[909,1006,950],{"class":915},[1008,1009,1011],"note",{"title":1010},"注释说明","\n- 注释不会被编译，不影响程序执行\n- 文档注释可以通过 javadoc 工具生成 HTML 文档\n- 良好的注释是代码可维护性的重要保障\n",[892,1013,1014],{"id":1014},"标识符与命名规范",[1016,1017,1018],"h3",{"id":1018},"标识符规则",[896,1020,1021],{},"标识符是程序员定义的名称（类名、变量名、方法名等），必须遵循以下规则：",[1023,1024,1025,1036,1039,1042],"ul",{},[1026,1027,1028,1029,1032,1033],"li",{},"只能包含字母、数字、下划线 ",[906,1030,1031],{},"_","、美元符 ",[906,1034,1035],{},"$",[1026,1037,1038],{},"不能以数字开头",[1026,1040,1041],{},"不能使用 Java 关键字",[1026,1043,1044],{},"严格区分大小写",[900,1046,1048],{"className":902,"code":1047,"language":904,"meta":11,"style":11},"\u002F\u002F 合法的标识符\nint age;\nString userName;\ndouble _value;\nint $count;\n\n\u002F\u002F 非法的标识符\n\u002F\u002F int 2name;    \u002F\u002F 不能以数字开头\n\u002F\u002F int class;    \u002F\u002F 不能使用关键字\n\u002F\u002F int my-name;  \u002F\u002F 不能包含连字符\n",[906,1049,1050,1055,1064,1069,1077,1084,1088,1093,1101,1109],{"__ignoreMap":11},[909,1051,1052],{"class":911,"line":912},[909,1053,1054],{"class":915},"\u002F\u002F 合法的标识符\n",[909,1056,1057,1060],{"class":911,"line":922},[909,1058,1059],{"class":982},"int",[909,1061,1063],{"class":1062},"sxrX7"," age;\n",[909,1065,1066],{"class":911,"line":929},[909,1067,1068],{"class":1062},"String userName;\n",[909,1070,1071,1074],{"class":911,"line":935},[909,1072,1073],{"class":982},"double",[909,1075,1076],{"class":1062}," _value;\n",[909,1078,1079,1081],{"class":911,"line":941},[909,1080,1059],{"class":982},[909,1082,1083],{"class":1062}," $count;\n",[909,1085,1086],{"class":911,"line":947},[909,1087,926],{"emptyLinePlaceholder":925},[909,1089,1090],{"class":911,"line":953},[909,1091,1092],{"class":915},"\u002F\u002F 非法的标识符\n",[909,1094,1095,1098],{"class":911,"line":958},[909,1096,1097],{"class":915},"\u002F\u002F int 2name;",[909,1099,1100],{"class":915},"    \u002F\u002F 不能以数字开头\n",[909,1102,1103,1106],{"class":911,"line":964},[909,1104,1105],{"class":915},"\u002F\u002F int class;",[909,1107,1108],{"class":915},"    \u002F\u002F 不能使用关键字\n",[909,1110,1111,1114],{"class":911,"line":970},[909,1112,1113],{"class":915},"\u002F\u002F int my-name;",[909,1115,1116],{"class":915},"  \u002F\u002F 不能包含连字符\n",[1016,1118,1119],{"id":1119},"命名规范",[1121,1122,1123,1140],"table",{},[1124,1125,1126],"thead",{},[1127,1128,1129,1134,1137],"tr",{},[1130,1131,1133],"th",{"align":1132},"left","类型",[1130,1135,1136],{"align":1132},"规范",[1130,1138,1139],{"align":1132},"示例",[1141,1142,1143,1161,1177,1193],"tbody",{},[1127,1144,1145,1149,1152],{},[1146,1147,1148],"td",{"align":1132},"类\u002F接口",[1146,1150,1151],{"align":1132},"大驼峰",[1146,1153,1154,1157,1158],{"align":1132},[906,1155,1156],{},"UserService","、",[906,1159,1160],{},"HashMap",[1127,1162,1163,1166,1169],{},[1146,1164,1165],{"align":1132},"方法\u002F变量",[1146,1167,1168],{"align":1132},"小驼峰",[1146,1170,1171,1157,1174],{"align":1132},[906,1172,1173],{},"getUserName",[906,1175,1176],{},"userId",[1127,1178,1179,1182,1185],{},[1146,1180,1181],{"align":1132},"常量",[1146,1183,1184],{"align":1132},"全大写+下划线",[1146,1186,1187,1157,1190],{"align":1132},[906,1188,1189],{},"MAX_VALUE",[906,1191,1192],{},"PI",[1127,1194,1195,1198,1201],{},[1146,1196,1197],{"align":1132},"包名",[1146,1199,1200],{"align":1132},"全小写",[1146,1202,1203],{"align":1132},[906,1204,1205],{},"com.example.service",[892,1207,1208],{"id":1208},"关键字",[896,1210,1211],{},"Java 中有 50 个关键字（含 2 个保留字）：",[1121,1213,1214,1223],{},[1124,1215,1216],{},[1127,1217,1218,1221],{},[1130,1219,1220],{"align":1132},"类别",[1130,1222,1208],{"align":1132},[1141,1224,1225,1255,1295,1311,1339,1358,1380,1417],{},[1127,1226,1227,1230],{},[1146,1228,1229],{"align":1132},"数据类型",[1146,1231,1232,1235,1236,1235,1239,1235,1241,1235,1244,1235,1247,1235,1249,1235,1252],{"align":1132},[906,1233,1234],{},"byte"," ",[906,1237,1238],{},"short",[906,1240,1059],{},[906,1242,1243],{},"long",[906,1245,1246],{},"float",[906,1248,1073],{},[906,1250,1251],{},"char",[906,1253,1254],{},"boolean",[1127,1256,1257,1260],{},[1146,1258,1259],{"align":1132},"流程控制",[1146,1261,1262,1235,1265,1235,1268,1235,1271,1235,1274,1235,1277,1235,1280,1235,1283,1235,1286,1235,1289,1235,1292],{"align":1132},[906,1263,1264],{},"if",[906,1266,1267],{},"else",[906,1269,1270],{},"switch",[906,1272,1273],{},"case",[906,1275,1276],{},"default",[906,1278,1279],{},"for",[906,1281,1282],{},"while",[906,1284,1285],{},"do",[906,1287,1288],{},"break",[906,1290,1291],{},"continue",[906,1293,1294],{},"return",[1127,1296,1297,1300],{},[1146,1298,1299],{"align":1132},"访问控制",[1146,1301,1302,1235,1305,1235,1308],{"align":1132},[906,1303,1304],{},"public",[906,1306,1307],{},"protected",[906,1309,1310],{},"private",[1127,1312,1313,1316],{},[1146,1314,1315],{"align":1132},"类相关",[1146,1317,1318,1235,1321,1235,1324,1235,1327,1235,1330,1235,1333,1235,1336],{"align":1132},[906,1319,1320],{},"class",[906,1322,1323],{},"interface",[906,1325,1326],{},"extends",[906,1328,1329],{},"implements",[906,1331,1332],{},"abstract",[906,1334,1335],{},"final",[906,1337,1338],{},"static",[1127,1340,1341,1344],{},[1146,1342,1343],{"align":1132},"对象相关",[1146,1345,1346,1235,1349,1235,1352,1235,1355],{"align":1132},[906,1347,1348],{},"new",[906,1350,1351],{},"this",[906,1353,1354],{},"super",[906,1356,1357],{},"instanceof",[1127,1359,1360,1363],{},[1146,1361,1362],{"align":1132},"异常",[1146,1364,1365,1235,1368,1235,1371,1235,1374,1235,1377],{"align":1132},[906,1366,1367],{},"try",[906,1369,1370],{},"catch",[906,1372,1373],{},"finally",[906,1375,1376],{},"throw",[906,1378,1379],{},"throws",[1127,1381,1382,1385],{},[1146,1383,1384],{"align":1132},"其他",[1146,1386,1387,1235,1390,1235,1393,1235,1396,1235,1399,1235,1402,1235,1405,1235,1408,1235,1411,1235,1414],{"align":1132},[906,1388,1389],{},"void",[906,1391,1392],{},"import",[906,1394,1395],{},"package",[906,1397,1398],{},"native",[906,1400,1401],{},"synchronized",[906,1403,1404],{},"volatile",[906,1406,1407],{},"transient",[906,1409,1410],{},"strictfp",[906,1412,1413],{},"enum",[906,1415,1416],{},"assert",[1127,1418,1419,1422],{},[1146,1420,1421],{"align":1132},"保留字",[1146,1423,1424,1235,1427],{"align":1132},[906,1425,1426],{},"goto",[906,1428,1429],{},"const",[892,1431,1229],{"id":1229},[896,1433,1434,1435,1439,1440,1443],{},"Java 是强类型语言，数据类型分为",[1436,1437,1438],"strong",{},"基本类型","和",[1436,1441,1442],{},"引用类型","。",[1016,1445,1446],{"id":1446},"基本数据类型",[896,1448,1449],{},"Java 有 8 种基本数据类型：",[1121,1451,1452,1470],{},[1124,1453,1454],{},[1127,1455,1456,1458,1461,1464,1467],{},[1130,1457,1133],{"align":1132},[1130,1459,1460],{"align":1132},"大小",[1130,1462,1463],{"align":1132},"范围",[1130,1465,1466],{"align":1132},"默认值",[1130,1468,1469],{"align":1132},"包装类",[1141,1471,1472,1488,1503,1518,1534,1549,1564,1579],{},[1127,1473,1474,1476,1479,1482,1485],{},[1146,1475,1234],{"align":1132},[1146,1477,1478],{"align":1132},"1 字节",[1146,1480,1481],{"align":1132},"-128 ~ 127",[1146,1483,1484],{"align":1132},"0",[1146,1486,1487],{"align":1132},"Byte",[1127,1489,1490,1492,1495,1498,1500],{},[1146,1491,1238],{"align":1132},[1146,1493,1494],{"align":1132},"2 字节",[1146,1496,1497],{"align":1132},"-32768 ~ 32767",[1146,1499,1484],{"align":1132},[1146,1501,1502],{"align":1132},"Short",[1127,1504,1505,1507,1510,1513,1515],{},[1146,1506,1059],{"align":1132},[1146,1508,1509],{"align":1132},"4 字节",[1146,1511,1512],{"align":1132},"-2^31 ~ 2^31-1（约 ±21 亿）",[1146,1514,1484],{"align":1132},[1146,1516,1517],{"align":1132},"Integer",[1127,1519,1520,1522,1525,1528,1531],{},[1146,1521,1243],{"align":1132},[1146,1523,1524],{"align":1132},"8 字节",[1146,1526,1527],{"align":1132},"-2^63 ~ 2^63-1",[1146,1529,1530],{"align":1132},"0L",[1146,1532,1533],{"align":1132},"Long",[1127,1535,1536,1538,1540,1543,1546],{},[1146,1537,1246],{"align":1132},[1146,1539,1509],{"align":1132},[1146,1541,1542],{"align":1132},"±3.4E38（约 6-7 位有效数字）",[1146,1544,1545],{"align":1132},"0.0f",[1146,1547,1548],{"align":1132},"Float",[1127,1550,1551,1553,1555,1558,1561],{},[1146,1552,1073],{"align":1132},[1146,1554,1524],{"align":1132},[1146,1556,1557],{"align":1132},"±1.7E308（约 15 位有效数字）",[1146,1559,1560],{"align":1132},"0.0d",[1146,1562,1563],{"align":1132},"Double",[1127,1565,1566,1568,1570,1573,1576],{},[1146,1567,1251],{"align":1132},[1146,1569,1494],{"align":1132},[1146,1571,1572],{"align":1132},"0 ~ 65535（Unicode 字符）",[1146,1574,1575],{"align":1132},"'\\u0000'",[1146,1577,1578],{"align":1132},"Character",[1127,1580,1581,1583,1586,1589,1592],{},[1146,1582,1254],{"align":1132},[1146,1584,1585],{"align":1132},"1 位",[1146,1587,1588],{"align":1132},"true \u002F false",[1146,1590,1591],{"align":1132},"false",[1146,1593,1594],{"align":1132},"Boolean",[900,1596,1598],{"className":902,"code":1597,"language":904,"meta":11,"style":11},"byte b = 100;\nshort s = 10000;\nint i = 100000;\nlong l = 10000000000L;    \u002F\u002F 需要 L 后缀\n\nfloat f = 3.14f;          \u002F\u002F 需要 f 后缀\ndouble d = 3.14159265;\n\nchar c = 'A';\nboolean flag = true;\n",[906,1599,1600,1617,1631,1645,1663,1667,1685,1699,1703,1718],{"__ignoreMap":11},[909,1601,1602,1604,1607,1610,1614],{"class":911,"line":912},[909,1603,1234],{"class":982},[909,1605,1606],{"class":1062}," b ",[909,1608,1609],{"class":982},"=",[909,1611,1613],{"class":1612},"sBjJW"," 100",[909,1615,1616],{"class":1062},";\n",[909,1618,1619,1621,1624,1626,1629],{"class":911,"line":922},[909,1620,1238],{"class":982},[909,1622,1623],{"class":1062}," s ",[909,1625,1609],{"class":982},[909,1627,1628],{"class":1612}," 10000",[909,1630,1616],{"class":1062},[909,1632,1633,1635,1638,1640,1643],{"class":911,"line":929},[909,1634,1059],{"class":982},[909,1636,1637],{"class":1062}," i ",[909,1639,1609],{"class":982},[909,1641,1642],{"class":1612}," 100000",[909,1644,1616],{"class":1062},[909,1646,1647,1649,1652,1654,1657,1660],{"class":911,"line":935},[909,1648,1243],{"class":982},[909,1650,1651],{"class":1062}," l ",[909,1653,1609],{"class":982},[909,1655,1656],{"class":1612}," 10000000000L",[909,1658,1659],{"class":1062},";    ",[909,1661,1662],{"class":915},"\u002F\u002F 需要 L 后缀\n",[909,1664,1665],{"class":911,"line":941},[909,1666,926],{"emptyLinePlaceholder":925},[909,1668,1669,1671,1674,1676,1679,1682],{"class":911,"line":947},[909,1670,1246],{"class":982},[909,1672,1673],{"class":1062}," f ",[909,1675,1609],{"class":982},[909,1677,1678],{"class":1612}," 3.14f",[909,1680,1681],{"class":1062},";          ",[909,1683,1684],{"class":915},"\u002F\u002F 需要 f 后缀\n",[909,1686,1687,1689,1692,1694,1697],{"class":911,"line":953},[909,1688,1073],{"class":982},[909,1690,1691],{"class":1062}," d ",[909,1693,1609],{"class":982},[909,1695,1696],{"class":1612}," 3.14159265",[909,1698,1616],{"class":1062},[909,1700,1701],{"class":911,"line":958},[909,1702,926],{"emptyLinePlaceholder":925},[909,1704,1705,1707,1710,1712,1716],{"class":911,"line":964},[909,1706,1251],{"class":982},[909,1708,1709],{"class":1062}," c ",[909,1711,1609],{"class":982},[909,1713,1715],{"class":1714},"sIIMD"," 'A'",[909,1717,1616],{"class":1062},[909,1719,1720,1722,1725,1727,1730],{"class":911,"line":970},[909,1721,1254],{"class":982},[909,1723,1724],{"class":1062}," flag ",[909,1726,1609],{"class":982},[909,1728,1729],{"class":1612}," true",[909,1731,1616],{"class":1062},[1016,1733,1734],{"id":1734},"引用数据类型",[896,1736,1737],{},"引用类型包括：类、接口、数组、枚举、注解。",[900,1739,1741],{"className":902,"code":1740,"language":904,"meta":11,"style":11},"String str = \"Hello\";           \u002F\u002F 字符串\nint[] arr = {1, 2, 3};          \u002F\u002F 数组\nObject obj = new Object();      \u002F\u002F 对象\nList\u003CString> list = new ArrayList\u003C>();  \u002F\u002F 接口\n",[906,1742,1743,1759,1791,1811],{"__ignoreMap":11},[909,1744,1745,1748,1750,1753,1756],{"class":911,"line":912},[909,1746,1747],{"class":1062},"String str ",[909,1749,1609],{"class":982},[909,1751,1752],{"class":1714}," \"Hello\"",[909,1754,1755],{"class":1062},";           ",[909,1757,1758],{"class":915},"\u002F\u002F 字符串\n",[909,1760,1761,1763,1766,1768,1771,1774,1777,1780,1782,1785,1788],{"class":911,"line":922},[909,1762,1059],{"class":982},[909,1764,1765],{"class":1062},"[] arr ",[909,1767,1609],{"class":982},[909,1769,1770],{"class":1062}," {",[909,1772,1773],{"class":1612},"1",[909,1775,1776],{"class":1062},", ",[909,1778,1779],{"class":1612},"2",[909,1781,1776],{"class":1062},[909,1783,1784],{"class":1612},"3",[909,1786,1787],{"class":1062},"};          ",[909,1789,1790],{"class":915},"\u002F\u002F 数组\n",[909,1792,1793,1796,1798,1801,1805,1808],{"class":911,"line":929},[909,1794,1795],{"class":1062},"Object obj ",[909,1797,1609],{"class":982},[909,1799,1800],{"class":982}," new",[909,1802,1804],{"class":1803},"snPdu"," Object",[909,1806,1807],{"class":1062},"();      ",[909,1809,1810],{"class":915},"\u002F\u002F 对象\n",[909,1812,1813,1816,1819,1822,1824,1826,1829],{"class":911,"line":935},[909,1814,1815],{"class":1062},"List\u003C",[909,1817,1818],{"class":982},"String",[909,1820,1821],{"class":1062},"> list ",[909,1823,1609],{"class":982},[909,1825,1800],{"class":982},[909,1827,1828],{"class":1062}," ArrayList\u003C>();  ",[909,1830,1831],{"class":915},"\u002F\u002F 接口\n",[1016,1833,1834],{"id":1834},"自动装箱与拆箱",[896,1836,1837],{},"基本类型与包装类之间可以自动转换：",[900,1839,1841],{"className":902,"code":1840,"language":904,"meta":11,"style":11},"\u002F\u002F 自动装箱：基本类型 → 包装类\nInteger num = 100;  \u002F\u002F 实际调用 Integer.valueOf(100)\n\n\u002F\u002F 自动拆箱：包装类 → 基本类型\nint n = num;        \u002F\u002F 实际调用 num.intValue()\n",[906,1842,1843,1848,1863,1867,1872],{"__ignoreMap":11},[909,1844,1845],{"class":911,"line":912},[909,1846,1847],{"class":915},"\u002F\u002F 自动装箱：基本类型 → 包装类\n",[909,1849,1850,1853,1855,1857,1860],{"class":911,"line":922},[909,1851,1852],{"class":1062},"Integer num ",[909,1854,1609],{"class":982},[909,1856,1613],{"class":1612},[909,1858,1859],{"class":1062},";  ",[909,1861,1862],{"class":915},"\u002F\u002F 实际调用 Integer.valueOf(100)\n",[909,1864,1865],{"class":911,"line":929},[909,1866,926],{"emptyLinePlaceholder":925},[909,1868,1869],{"class":911,"line":935},[909,1870,1871],{"class":915},"\u002F\u002F 自动拆箱：包装类 → 基本类型\n",[909,1873,1874,1876,1879,1881,1884],{"class":911,"line":941},[909,1875,1059],{"class":982},[909,1877,1878],{"class":1062}," n ",[909,1880,1609],{"class":982},[909,1882,1883],{"class":1062}," num;        ",[909,1885,1886],{"class":915},"\u002F\u002F 实际调用 num.intValue()\n",[1888,1889,1891],"warning",{"title":1890},"注意事项","\n1. 包装类可以为 null，拆箱时可能抛出 NullPointerException\n2. Integer 缓存了 -128 ~ 127 的值，该范围内的 Integer 对象可以用 == 比较\n3. 超出缓存范围的 Integer 需要用 equals() 比较\n",[900,1893,1895],{"className":902,"code":1894,"language":904,"meta":11,"style":11},"Integer a = 127;\nInteger b = 127;\nSystem.out.println(a == b);      \u002F\u002F true（使用缓存）\n\nInteger c = 128;\nInteger d = 128;\nSystem.out.println(c == d);      \u002F\u002F false（新建对象）\nSystem.out.println(c.equals(d)); \u002F\u002F true（值相等）\n",[906,1896,1897,1909,1920,1940,1944,1956,1967,1984],{"__ignoreMap":11},[909,1898,1899,1902,1904,1907],{"class":911,"line":912},[909,1900,1901],{"class":1062},"Integer a ",[909,1903,1609],{"class":982},[909,1905,1906],{"class":1612}," 127",[909,1908,1616],{"class":1062},[909,1910,1911,1914,1916,1918],{"class":911,"line":922},[909,1912,1913],{"class":1062},"Integer b ",[909,1915,1609],{"class":982},[909,1917,1906],{"class":1612},[909,1919,1616],{"class":1062},[909,1921,1922,1925,1928,1931,1934,1937],{"class":911,"line":929},[909,1923,1924],{"class":1062},"System.out.",[909,1926,1927],{"class":1803},"println",[909,1929,1930],{"class":1062},"(a ",[909,1932,1933],{"class":982},"==",[909,1935,1936],{"class":1062}," b);      ",[909,1938,1939],{"class":915},"\u002F\u002F true（使用缓存）\n",[909,1941,1942],{"class":911,"line":935},[909,1943,926],{"emptyLinePlaceholder":925},[909,1945,1946,1949,1951,1954],{"class":911,"line":941},[909,1947,1948],{"class":1062},"Integer c ",[909,1950,1609],{"class":982},[909,1952,1953],{"class":1612}," 128",[909,1955,1616],{"class":1062},[909,1957,1958,1961,1963,1965],{"class":911,"line":947},[909,1959,1960],{"class":1062},"Integer d ",[909,1962,1609],{"class":982},[909,1964,1953],{"class":1612},[909,1966,1616],{"class":1062},[909,1968,1969,1971,1973,1976,1978,1981],{"class":911,"line":953},[909,1970,1924],{"class":1062},[909,1972,1927],{"class":1803},[909,1974,1975],{"class":1062},"(c ",[909,1977,1933],{"class":982},[909,1979,1980],{"class":1062}," d);      ",[909,1982,1983],{"class":915},"\u002F\u002F false（新建对象）\n",[909,1985,1986,1988,1990,1993,1996,1999],{"class":911,"line":958},[909,1987,1924],{"class":1062},[909,1989,1927],{"class":1803},[909,1991,1992],{"class":1062},"(c.",[909,1994,1995],{"class":1803},"equals",[909,1997,1998],{"class":1062},"(d)); ",[909,2000,2001],{"class":915},"\u002F\u002F true（值相等）\n",[1016,2003,2004],{"id":2004},"类型转换",[900,2006,2008],{"className":902,"code":2007,"language":904,"meta":11,"style":11},"\u002F\u002F 自动类型转换（小 → 大，隐式）\nint i = 100;\nlong l = i;      \u002F\u002F int → long\ndouble d = l;    \u002F\u002F long → double\n\n\u002F\u002F 强制类型转换（大 → 小，显式）\ndouble d2 = 3.99;\nint i2 = (int) d2;  \u002F\u002F 结果为 3，直接截断小数\n\n\u002F\u002F 表达式中的类型提升\nbyte b1 = 10;\nbyte b2 = 20;\n\u002F\u002F byte b3 = b1 + b2;  \u002F\u002F 错误！运算结果为 int\nint b3 = b1 + b2;      \u002F\u002F 正确\n",[906,2009,2010,2015,2027,2041,2055,2059,2064,2078,2098,2102,2107,2121,2135,2143],{"__ignoreMap":11},[909,2011,2012],{"class":911,"line":912},[909,2013,2014],{"class":915},"\u002F\u002F 自动类型转换（小 → 大，隐式）\n",[909,2016,2017,2019,2021,2023,2025],{"class":911,"line":922},[909,2018,1059],{"class":982},[909,2020,1637],{"class":1062},[909,2022,1609],{"class":982},[909,2024,1613],{"class":1612},[909,2026,1616],{"class":1062},[909,2028,2029,2031,2033,2035,2038],{"class":911,"line":929},[909,2030,1243],{"class":982},[909,2032,1651],{"class":1062},[909,2034,1609],{"class":982},[909,2036,2037],{"class":1062}," i;      ",[909,2039,2040],{"class":915},"\u002F\u002F int → long\n",[909,2042,2043,2045,2047,2049,2052],{"class":911,"line":935},[909,2044,1073],{"class":982},[909,2046,1691],{"class":1062},[909,2048,1609],{"class":982},[909,2050,2051],{"class":1062}," l;    ",[909,2053,2054],{"class":915},"\u002F\u002F long → double\n",[909,2056,2057],{"class":911,"line":941},[909,2058,926],{"emptyLinePlaceholder":925},[909,2060,2061],{"class":911,"line":947},[909,2062,2063],{"class":915},"\u002F\u002F 强制类型转换（大 → 小，显式）\n",[909,2065,2066,2068,2071,2073,2076],{"class":911,"line":953},[909,2067,1073],{"class":982},[909,2069,2070],{"class":1062}," d2 ",[909,2072,1609],{"class":982},[909,2074,2075],{"class":1612}," 3.99",[909,2077,1616],{"class":1062},[909,2079,2080,2082,2085,2087,2090,2092,2095],{"class":911,"line":958},[909,2081,1059],{"class":982},[909,2083,2084],{"class":1062}," i2 ",[909,2086,1609],{"class":982},[909,2088,2089],{"class":1062}," (",[909,2091,1059],{"class":982},[909,2093,2094],{"class":1062},") d2;  ",[909,2096,2097],{"class":915},"\u002F\u002F 结果为 3，直接截断小数\n",[909,2099,2100],{"class":911,"line":964},[909,2101,926],{"emptyLinePlaceholder":925},[909,2103,2104],{"class":911,"line":970},[909,2105,2106],{"class":915},"\u002F\u002F 表达式中的类型提升\n",[909,2108,2109,2111,2114,2116,2119],{"class":911,"line":976},[909,2110,1234],{"class":982},[909,2112,2113],{"class":1062}," b1 ",[909,2115,1609],{"class":982},[909,2117,2118],{"class":1612}," 10",[909,2120,1616],{"class":1062},[909,2122,2123,2125,2128,2130,2133],{"class":911,"line":993},[909,2124,1234],{"class":982},[909,2126,2127],{"class":1062}," b2 ",[909,2129,1609],{"class":982},[909,2131,2132],{"class":1612}," 20",[909,2134,1616],{"class":1062},[909,2136,2137,2140],{"class":911,"line":1004},[909,2138,2139],{"class":915},"\u002F\u002F byte b3 = b1 + b2;",[909,2141,2142],{"class":915},"  \u002F\u002F 错误！运算结果为 int\n",[909,2144,2146,2148,2151,2153,2155,2158,2161],{"class":911,"line":2145},14,[909,2147,1059],{"class":982},[909,2149,2150],{"class":1062}," b3 ",[909,2152,1609],{"class":982},[909,2154,2113],{"class":1062},[909,2156,2157],{"class":982},"+",[909,2159,2160],{"class":1062}," b2;      ",[909,2162,2163],{"class":915},"\u002F\u002F 正确\n",[896,2165,2166,2167],{},"类型转换规则：",[906,2168,2169],{},"byte → short → int → long → float → double",[892,2171,2172],{"id":2172},"运算符",[1016,2174,2175],{"id":2175},"算术运算符",[1121,2177,2178,2189],{},[1124,2179,2180],{},[1127,2181,2182,2184,2187],{},[1130,2183,2172],{"align":1132},[1130,2185,2186],{"align":1132},"说明",[1130,2188,1139],{"align":1132},[1141,2190,2191,2203,2216,2229,2242,2255,2272],{},[1127,2192,2193,2195,2198],{},[1146,2194,2157],{"align":1132},[1146,2196,2197],{"align":1132},"加法",[1146,2199,2200],{"align":1132},[906,2201,2202],{},"5 + 3 = 8",[1127,2204,2205,2208,2211],{},[1146,2206,2207],{"align":1132},"-",[1146,2209,2210],{"align":1132},"减法",[1146,2212,2213],{"align":1132},[906,2214,2215],{},"5 - 3 = 2",[1127,2217,2218,2221,2224],{},[1146,2219,2220],{"align":1132},"*",[1146,2222,2223],{"align":1132},"乘法",[1146,2225,2226],{"align":1132},[906,2227,2228],{},"5 * 3 = 15",[1127,2230,2231,2234,2237],{},[1146,2232,2233],{"align":1132},"\u002F",[1146,2235,2236],{"align":1132},"除法",[1146,2238,2239],{"align":1132},[906,2240,2241],{},"5 \u002F 3 = 1",[1127,2243,2244,2247,2250],{},[1146,2245,2246],{"align":1132},"%",[1146,2248,2249],{"align":1132},"取余",[1146,2251,2252],{"align":1132},[906,2253,2254],{},"5 % 3 = 2",[1127,2256,2257,2260,2263],{},[1146,2258,2259],{"align":1132},"++",[1146,2261,2262],{"align":1132},"自增",[1146,2264,2265,2268,2269],{"align":1132},[906,2266,2267],{},"i++"," \u002F ",[906,2270,2271],{},"++i",[1127,2273,2274,2277,2280],{},[1146,2275,2276],{"align":1132},"--",[1146,2278,2279],{"align":1132},"自减",[1146,2281,2282,2268,2285],{"align":1132},[906,2283,2284],{},"i--",[906,2286,2287],{},"--i",[900,2289,2291],{"className":902,"code":2290,"language":904,"meta":11,"style":11},"int a = 5, b = 3;\nSystem.out.println(a \u002F b);   \u002F\u002F 1（整数除法）\nSystem.out.println(a % b);   \u002F\u002F 2\n\nint i = 5;\nSystem.out.println(i++);     \u002F\u002F 5（先使用，后自增）\nSystem.out.println(++i);     \u002F\u002F 7（先自增，后使用）\n",[906,2292,2293,2315,2331,2346,2350,2362,2379],{"__ignoreMap":11},[909,2294,2295,2297,2300,2302,2305,2308,2310,2313],{"class":911,"line":912},[909,2296,1059],{"class":982},[909,2298,2299],{"class":1062}," a ",[909,2301,1609],{"class":982},[909,2303,2304],{"class":1612}," 5",[909,2306,2307],{"class":1062},", b ",[909,2309,1609],{"class":982},[909,2311,2312],{"class":1612}," 3",[909,2314,1616],{"class":1062},[909,2316,2317,2319,2321,2323,2325,2328],{"class":911,"line":922},[909,2318,1924],{"class":1062},[909,2320,1927],{"class":1803},[909,2322,1930],{"class":1062},[909,2324,2233],{"class":982},[909,2326,2327],{"class":1062}," b);   ",[909,2329,2330],{"class":915},"\u002F\u002F 1（整数除法）\n",[909,2332,2333,2335,2337,2339,2341,2343],{"class":911,"line":929},[909,2334,1924],{"class":1062},[909,2336,1927],{"class":1803},[909,2338,1930],{"class":1062},[909,2340,2246],{"class":982},[909,2342,2327],{"class":1062},[909,2344,2345],{"class":915},"\u002F\u002F 2\n",[909,2347,2348],{"class":911,"line":935},[909,2349,926],{"emptyLinePlaceholder":925},[909,2351,2352,2354,2356,2358,2360],{"class":911,"line":941},[909,2353,1059],{"class":982},[909,2355,1637],{"class":1062},[909,2357,1609],{"class":982},[909,2359,2304],{"class":1612},[909,2361,1616],{"class":1062},[909,2363,2364,2366,2368,2371,2373,2376],{"class":911,"line":947},[909,2365,1924],{"class":1062},[909,2367,1927],{"class":1803},[909,2369,2370],{"class":1062},"(i",[909,2372,2259],{"class":982},[909,2374,2375],{"class":1062},");     ",[909,2377,2378],{"class":915},"\u002F\u002F 5（先使用，后自增）\n",[909,2380,2381,2383,2385,2388,2390,2393],{"class":911,"line":953},[909,2382,1924],{"class":1062},[909,2384,1927],{"class":1803},[909,2386,2387],{"class":1062},"(",[909,2389,2259],{"class":982},[909,2391,2392],{"class":1062},"i);     ",[909,2394,2395],{"class":915},"\u002F\u002F 7（先自增，后使用）\n",[1016,2397,2398],{"id":2398},"关系运算符",[1121,2400,2401,2411],{},[1124,2402,2403],{},[1127,2404,2405,2407,2409],{},[1130,2406,2172],{"align":1132},[1130,2408,2186],{"align":1132},[1130,2410,1139],{"align":1132},[1141,2412,2413,2425,2438,2451,2464,2477],{},[1127,2414,2415,2417,2420],{},[1146,2416,1933],{"align":1132},[1146,2418,2419],{"align":1132},"等于",[1146,2421,2422],{"align":1132},[906,2423,2424],{},"a == b",[1127,2426,2427,2430,2433],{},[1146,2428,2429],{"align":1132},"!=",[1146,2431,2432],{"align":1132},"不等于",[1146,2434,2435],{"align":1132},[906,2436,2437],{},"a != b",[1127,2439,2440,2443,2446],{},[1146,2441,2442],{"align":1132},">",[1146,2444,2445],{"align":1132},"大于",[1146,2447,2448],{"align":1132},[906,2449,2450],{},"a > b",[1127,2452,2453,2456,2459],{},[1146,2454,2455],{"align":1132},"\u003C",[1146,2457,2458],{"align":1132},"小于",[1146,2460,2461],{"align":1132},[906,2462,2463],{},"a &lt; b",[1127,2465,2466,2469,2472],{},[1146,2467,2468],{"align":1132},">=",[1146,2470,2471],{"align":1132},"大于等于",[1146,2473,2474],{"align":1132},[906,2475,2476],{},"a >= b",[1127,2478,2479,2482,2485],{},[1146,2480,2481],{"align":1132},"\u003C=",[1146,2483,2484],{"align":1132},"小于等于",[1146,2486,2487],{"align":1132},[906,2488,2489],{},"a \u003C= b",[1016,2491,2492],{"id":2492},"逻辑运算符",[1121,2494,2495,2507],{},[1124,2496,2497],{},[1127,2498,2499,2501,2503,2505],{},[1130,2500,2172],{"align":1132},[1130,2502,2186],{"align":1132},[1130,2504,1139],{"align":1132},[1130,2506,2186],{"align":1132},[1141,2508,2509,2525,2541,2557,2573],{},[1127,2510,2511,2514,2517,2522],{},[1146,2512,2513],{"align":1132},"&&",[1146,2515,2516],{"align":1132},"逻辑与",[1146,2518,2519],{"align":1132},[906,2520,2521],{},"a && b",[1146,2523,2524],{"align":1132},"短路与，a为false不算b",[1127,2526,2527,2530,2533,2538],{},[1146,2528,2529],{"align":1132},"||",[1146,2531,2532],{"align":1132},"逻辑或",[1146,2534,2535],{"align":1132},[906,2536,2537],{},"a || b",[1146,2539,2540],{"align":1132},"短路或，a为true不算b",[1127,2542,2543,2546,2549,2554],{},[1146,2544,2545],{"align":1132},"!",[1146,2547,2548],{"align":1132},"逻辑非",[1146,2550,2551],{"align":1132},[906,2552,2553],{},"!a",[1146,2555,2556],{"align":1132},"取反",[1127,2558,2559,2562,2565,2570],{},[1146,2560,2561],{"align":1132},"&",[1146,2563,2564],{"align":1132},"与",[1146,2566,2567],{"align":1132},[906,2568,2569],{},"a & b",[1146,2571,2572],{"align":1132},"非短路，都要计算",[1127,2574,2575,2578,2581,2586],{},[1146,2576,2577],{"align":1132},"|",[1146,2579,2580],{"align":1132},"或",[1146,2582,2583],{"align":1132},[906,2584,2585],{},"a | b",[1146,2587,2572],{"align":1132},[900,2589,2591],{"className":902,"code":2590,"language":904,"meta":11,"style":11},"int x = 5;\n\u002F\u002F 短路与：第一个为 false，不计算第二个\nboolean result = (x > 10) && (++x > 5);  \u002F\u002F x 仍为 5\n",[906,2592,2593,2606,2611],{"__ignoreMap":11},[909,2594,2595,2597,2600,2602,2604],{"class":911,"line":912},[909,2596,1059],{"class":982},[909,2598,2599],{"class":1062}," x ",[909,2601,1609],{"class":982},[909,2603,2304],{"class":1612},[909,2605,1616],{"class":1062},[909,2607,2608],{"class":911,"line":922},[909,2609,2610],{"class":915},"\u002F\u002F 短路与：第一个为 false，不计算第二个\n",[909,2612,2613,2615,2618,2620,2623,2625,2627,2630,2632,2634,2636,2639,2641,2643,2646],{"class":911,"line":929},[909,2614,1254],{"class":982},[909,2616,2617],{"class":1062}," result ",[909,2619,1609],{"class":982},[909,2621,2622],{"class":1062}," (x ",[909,2624,2442],{"class":982},[909,2626,2118],{"class":1612},[909,2628,2629],{"class":1062},") ",[909,2631,2513],{"class":982},[909,2633,2089],{"class":1062},[909,2635,2259],{"class":982},[909,2637,2638],{"class":1062},"x ",[909,2640,2442],{"class":982},[909,2642,2304],{"class":1612},[909,2644,2645],{"class":1062},");  ",[909,2647,2648],{"class":915},"\u002F\u002F x 仍为 5\n",[1016,2650,2651],{"id":2651},"位运算符",[1121,2653,2654,2664],{},[1124,2655,2656],{},[1127,2657,2658,2660,2662],{},[1130,2659,2172],{"align":1132},[1130,2661,2186],{"align":1132},[1130,2663,1139],{"align":1132},[1141,2665,2666,2678,2690,2703,2716,2729,2742],{},[1127,2667,2668,2670,2673],{},[1146,2669,2561],{"align":1132},[1146,2671,2672],{"align":1132},"按位与",[1146,2674,2675],{"align":1132},[906,2676,2677],{},"5 & 3 = 1",[1127,2679,2680,2682,2685],{},[1146,2681,2577],{"align":1132},[1146,2683,2684],{"align":1132},"按位或",[1146,2686,2687],{"align":1132},[906,2688,2689],{},"5 | 3 = 7",[1127,2691,2692,2695,2698],{},[1146,2693,2694],{"align":1132},"^",[1146,2696,2697],{"align":1132},"按位异或",[1146,2699,2700],{"align":1132},[906,2701,2702],{},"5 ^ 3 = 6",[1127,2704,2705,2708,2711],{},[1146,2706,2707],{"align":1132},"~",[1146,2709,2710],{"align":1132},"按位取反",[1146,2712,2713],{"align":1132},[906,2714,2715],{},"~5 = -6",[1127,2717,2718,2721,2724],{},[1146,2719,2720],{"align":1132},"\u003C\u003C",[1146,2722,2723],{"align":1132},"左移",[1146,2725,2726],{"align":1132},[906,2727,2728],{},"5 &lt;&lt; 1 = 10",[1127,2730,2731,2734,2737],{},[1146,2732,2733],{"align":1132},">>",[1146,2735,2736],{"align":1132},"右移",[1146,2738,2739],{"align":1132},[906,2740,2741],{},"5 >> 1 = 2",[1127,2743,2744,2747,2750],{},[1146,2745,2746],{"align":1132},">>>",[1146,2748,2749],{"align":1132},"无符号右移",[1146,2751,2752],{"align":1132},[906,2753,2754],{},"5 >>> 1 = 2",[1016,2756,2757],{"id":2757},"赋值运算符",[900,2759,2761],{"className":902,"code":2760,"language":904,"meta":11,"style":11},"int a = 10;     \u002F\u002F 基本赋值\na += 5;         \u002F\u002F a = a + 5\na -= 3;         \u002F\u002F a = a - 3\na *= 2;         \u002F\u002F a = a * 2\na \u002F= 4;         \u002F\u002F a = a \u002F 4\na %= 3;         \u002F\u002F a = a % 3\n",[906,2762,2763,2779,2795,2809,2824,2839],{"__ignoreMap":11},[909,2764,2765,2767,2769,2771,2773,2776],{"class":911,"line":912},[909,2766,1059],{"class":982},[909,2768,2299],{"class":1062},[909,2770,1609],{"class":982},[909,2772,2118],{"class":1612},[909,2774,2775],{"class":1062},";     ",[909,2777,2778],{"class":915},"\u002F\u002F 基本赋值\n",[909,2780,2781,2784,2787,2789,2792],{"class":911,"line":922},[909,2782,2783],{"class":1062},"a ",[909,2785,2786],{"class":982},"+=",[909,2788,2304],{"class":1612},[909,2790,2791],{"class":1062},";         ",[909,2793,2794],{"class":915},"\u002F\u002F a = a + 5\n",[909,2796,2797,2799,2802,2804,2806],{"class":911,"line":929},[909,2798,2783],{"class":1062},[909,2800,2801],{"class":982},"-=",[909,2803,2312],{"class":1612},[909,2805,2791],{"class":1062},[909,2807,2808],{"class":915},"\u002F\u002F a = a - 3\n",[909,2810,2811,2813,2816,2819,2821],{"class":911,"line":935},[909,2812,2783],{"class":1062},[909,2814,2815],{"class":982},"*=",[909,2817,2818],{"class":1612}," 2",[909,2820,2791],{"class":1062},[909,2822,2823],{"class":915},"\u002F\u002F a = a * 2\n",[909,2825,2826,2828,2831,2834,2836],{"class":911,"line":941},[909,2827,2783],{"class":1062},[909,2829,2830],{"class":982},"\u002F=",[909,2832,2833],{"class":1612}," 4",[909,2835,2791],{"class":1062},[909,2837,2838],{"class":915},"\u002F\u002F a = a \u002F 4\n",[909,2840,2841,2843,2846,2848,2850],{"class":911,"line":947},[909,2842,2783],{"class":1062},[909,2844,2845],{"class":982},"%=",[909,2847,2312],{"class":1612},[909,2849,2791],{"class":1062},[909,2851,2852],{"class":915},"\u002F\u002F a = a % 3\n",[1016,2854,2855],{"id":2855},"三元运算符",[900,2857,2859],{"className":902,"code":2858,"language":904,"meta":11,"style":11},"int a = 10, b = 20;\nint max = (a > b) ? a : b;  \u002F\u002F 如果 a > b 返回 a，否则返回 b\n",[906,2860,2861,2879],{"__ignoreMap":11},[909,2862,2863,2865,2867,2869,2871,2873,2875,2877],{"class":911,"line":912},[909,2864,1059],{"class":982},[909,2866,2299],{"class":1062},[909,2868,1609],{"class":982},[909,2870,2118],{"class":1612},[909,2872,2307],{"class":1062},[909,2874,1609],{"class":982},[909,2876,2132],{"class":1612},[909,2878,1616],{"class":1062},[909,2880,2881,2883,2886,2888,2891,2893,2896,2899,2901,2904,2907],{"class":911,"line":922},[909,2882,1059],{"class":982},[909,2884,2885],{"class":1062}," max ",[909,2887,1609],{"class":982},[909,2889,2890],{"class":1062}," (a ",[909,2892,2442],{"class":982},[909,2894,2895],{"class":1062}," b) ",[909,2897,2898],{"class":982},"?",[909,2900,2299],{"class":1062},[909,2902,2903],{"class":982},":",[909,2905,2906],{"class":1062}," b;  ",[909,2908,2909],{"class":915},"\u002F\u002F 如果 a > b 返回 a，否则返回 b\n",[1016,2911,2912],{"id":2912},"运算符优先级",[896,2914,2915],{},"优先级从高到低：",[2917,2918,2919,2930,2940,2948,2954,2962,2974,2980,2988,2994,2999],"ol",{},[1026,2920,2921,1235,2924,1235,2927],{},[906,2922,2923],{},"()",[906,2925,2926],{},"[]",[906,2928,2929],{},".",[1026,2931,2932,1235,2934,1235,2936,1235,2938],{},[906,2933,2545],{},[906,2935,2707],{},[906,2937,2259],{},[906,2939,2276],{},[1026,2941,2942,1235,2944,1235,2946],{},[906,2943,2220],{},[906,2945,2233],{},[906,2947,2246],{},[1026,2949,2950,1235,2952],{},[906,2951,2157],{},[906,2953,2207],{},[1026,2955,2956,1235,2958,1235,2960],{},[906,2957,2720],{},[906,2959,2733],{},[906,2961,2746],{},[1026,2963,2964,1235,2966,1235,2968,1235,2970,1235,2972],{},[906,2965,2455],{},[906,2967,2481],{},[906,2969,2442],{},[906,2971,2468],{},[906,2973,1357],{},[1026,2975,2976,1235,2978],{},[906,2977,1933],{},[906,2979,2429],{},[1026,2981,2982,1235,2984,1235,2986],{},[906,2983,2561],{},[906,2985,2694],{},[906,2987,2577],{},[1026,2989,2990,1235,2992],{},[906,2991,2513],{},[906,2993,2529],{},[1026,2995,2996],{},[906,2997,2998],{},"?:",[1026,3000,3001,1235,3003,1235,3005,3007],{},[906,3002,1609],{},[906,3004,2786],{},[906,3006,2801],{}," 等赋值运算符",[1008,3009,3011],{"title":3010},"建议","\n当不确定优先级时，使用括号明确运算顺序，提高代码可读性。\n",[892,3013,1259],{"id":1259},[1016,3015,3017],{"id":3016},"if-语句","if 语句",[900,3019,3021],{"className":902,"code":3020,"language":904,"meta":11,"style":11},"\u002F\u002F 基本 if\nif (条件) {\n    \u002F\u002F 条件为 true 时执行\n}\n\n\u002F\u002F if-else\nif (条件) {\n    \u002F\u002F 条件为 true 时执行\n} else {\n    \u002F\u002F 条件为 false 时执行\n}\n\n\u002F\u002F if-else if-else\nif (条件1) {\n    \u002F\u002F 条件1 为 true\n} else if (条件2) {\n    \u002F\u002F 条件2 为 true\n} else if (条件3) {\n    \u002F\u002F 条件3 为 true\n} else {\n    \u002F\u002F 以上条件都不满足\n}\n",[906,3022,3023,3028,3035,3040,3045,3049,3054,3060,3064,3074,3079,3083,3087,3092,3099,3105,3118,3124,3136,3142,3151,3157],{"__ignoreMap":11},[909,3024,3025],{"class":911,"line":912},[909,3026,3027],{"class":915},"\u002F\u002F 基本 if\n",[909,3029,3030,3032],{"class":911,"line":922},[909,3031,1264],{"class":982},[909,3033,3034],{"class":1062}," (条件) {\n",[909,3036,3037],{"class":911,"line":929},[909,3038,3039],{"class":915},"    \u002F\u002F 条件为 true 时执行\n",[909,3041,3042],{"class":911,"line":935},[909,3043,3044],{"class":1062},"}\n",[909,3046,3047],{"class":911,"line":941},[909,3048,926],{"emptyLinePlaceholder":925},[909,3050,3051],{"class":911,"line":947},[909,3052,3053],{"class":915},"\u002F\u002F if-else\n",[909,3055,3056,3058],{"class":911,"line":953},[909,3057,1264],{"class":982},[909,3059,3034],{"class":1062},[909,3061,3062],{"class":911,"line":958},[909,3063,3039],{"class":915},[909,3065,3066,3069,3071],{"class":911,"line":964},[909,3067,3068],{"class":1062},"} ",[909,3070,1267],{"class":982},[909,3072,3073],{"class":1062}," {\n",[909,3075,3076],{"class":911,"line":970},[909,3077,3078],{"class":915},"    \u002F\u002F 条件为 false 时执行\n",[909,3080,3081],{"class":911,"line":976},[909,3082,3044],{"class":1062},[909,3084,3085],{"class":911,"line":993},[909,3086,926],{"emptyLinePlaceholder":925},[909,3088,3089],{"class":911,"line":1004},[909,3090,3091],{"class":915},"\u002F\u002F if-else if-else\n",[909,3093,3094,3096],{"class":911,"line":2145},[909,3095,1264],{"class":982},[909,3097,3098],{"class":1062}," (条件1) {\n",[909,3100,3102],{"class":911,"line":3101},15,[909,3103,3104],{"class":915},"    \u002F\u002F 条件1 为 true\n",[909,3106,3108,3110,3112,3115],{"class":911,"line":3107},16,[909,3109,3068],{"class":1062},[909,3111,1267],{"class":982},[909,3113,3114],{"class":982}," if",[909,3116,3117],{"class":1062}," (条件2) {\n",[909,3119,3121],{"class":911,"line":3120},17,[909,3122,3123],{"class":915},"    \u002F\u002F 条件2 为 true\n",[909,3125,3127,3129,3131,3133],{"class":911,"line":3126},18,[909,3128,3068],{"class":1062},[909,3130,1267],{"class":982},[909,3132,3114],{"class":982},[909,3134,3135],{"class":1062}," (条件3) {\n",[909,3137,3139],{"class":911,"line":3138},19,[909,3140,3141],{"class":915},"    \u002F\u002F 条件3 为 true\n",[909,3143,3145,3147,3149],{"class":911,"line":3144},20,[909,3146,3068],{"class":1062},[909,3148,1267],{"class":982},[909,3150,3073],{"class":1062},[909,3152,3154],{"class":911,"line":3153},21,[909,3155,3156],{"class":915},"    \u002F\u002F 以上条件都不满足\n",[909,3158,3160],{"class":911,"line":3159},22,[909,3161,3044],{"class":1062},[1016,3163,3165],{"id":3164},"switch-语句","switch 语句",[900,3167,3169],{"className":902,"code":3168,"language":904,"meta":11,"style":11},"\u002F\u002F 传统 switch\nswitch (表达式) {\n    case 值1:\n        \u002F\u002F 匹配值1时执行\n        break;\n    case 值2:\n        \u002F\u002F 匹配值2时执行\n        break;\n    default:\n        \u002F\u002F 都不匹配时执行\n}\n\n\u002F\u002F Java 12+ switch 表达式\nString day = \"MONDAY\";\nString type = switch (day) {\n    case \"MONDAY\", \"TUESDAY\", \"WEDNESDAY\", \"THURSDAY\", \"FRIDAY\" -> \"工作日\";\n    case \"SATURDAY\", \"SUNDAY\" -> \"周末\";\n    default -> \"未知\";\n};\n",[906,3170,3171,3176,3183,3194,3199,3206,3215,3220,3226,3231,3236,3240,3244,3249,3261,3274,3308,3327,3339],{"__ignoreMap":11},[909,3172,3173],{"class":911,"line":912},[909,3174,3175],{"class":915},"\u002F\u002F 传统 switch\n",[909,3177,3178,3180],{"class":911,"line":922},[909,3179,1270],{"class":982},[909,3181,3182],{"class":1062}," (表达式) {\n",[909,3184,3185,3188,3191],{"class":911,"line":929},[909,3186,3187],{"class":982},"    case",[909,3189,3190],{"class":1062}," 值1",[909,3192,3193],{"class":982},":\n",[909,3195,3196],{"class":911,"line":935},[909,3197,3198],{"class":915},"        \u002F\u002F 匹配值1时执行\n",[909,3200,3201,3204],{"class":911,"line":941},[909,3202,3203],{"class":982},"        break",[909,3205,1616],{"class":1062},[909,3207,3208,3210,3213],{"class":911,"line":947},[909,3209,3187],{"class":982},[909,3211,3212],{"class":1062}," 值2",[909,3214,3193],{"class":982},[909,3216,3217],{"class":911,"line":953},[909,3218,3219],{"class":915},"        \u002F\u002F 匹配值2时执行\n",[909,3221,3222,3224],{"class":911,"line":958},[909,3223,3203],{"class":982},[909,3225,1616],{"class":1062},[909,3227,3228],{"class":911,"line":964},[909,3229,3230],{"class":982},"    default:\n",[909,3232,3233],{"class":911,"line":970},[909,3234,3235],{"class":915},"        \u002F\u002F 都不匹配时执行\n",[909,3237,3238],{"class":911,"line":976},[909,3239,3044],{"class":1062},[909,3241,3242],{"class":911,"line":993},[909,3243,926],{"emptyLinePlaceholder":925},[909,3245,3246],{"class":911,"line":1004},[909,3247,3248],{"class":915},"\u002F\u002F Java 12+ switch 表达式\n",[909,3250,3251,3254,3256,3259],{"class":911,"line":2145},[909,3252,3253],{"class":1062},"String day ",[909,3255,1609],{"class":982},[909,3257,3258],{"class":1714}," \"MONDAY\"",[909,3260,1616],{"class":1062},[909,3262,3263,3266,3268,3271],{"class":911,"line":3101},[909,3264,3265],{"class":1062},"String type ",[909,3267,1609],{"class":982},[909,3269,3270],{"class":982}," switch",[909,3272,3273],{"class":1062}," (day) {\n",[909,3275,3276,3278,3280,3282,3285,3287,3290,3292,3295,3297,3300,3303,3306],{"class":911,"line":3107},[909,3277,3187],{"class":982},[909,3279,3258],{"class":1714},[909,3281,1776],{"class":1062},[909,3283,3284],{"class":1714},"\"TUESDAY\"",[909,3286,1776],{"class":1062},[909,3288,3289],{"class":1714},"\"WEDNESDAY\"",[909,3291,1776],{"class":1062},[909,3293,3294],{"class":1714},"\"THURSDAY\"",[909,3296,1776],{"class":1062},[909,3298,3299],{"class":1714},"\"FRIDAY\"",[909,3301,3302],{"class":982}," ->",[909,3304,3305],{"class":1714}," \"工作日\"",[909,3307,1616],{"class":1062},[909,3309,3310,3312,3315,3317,3320,3322,3325],{"class":911,"line":3120},[909,3311,3187],{"class":982},[909,3313,3314],{"class":1714}," \"SATURDAY\"",[909,3316,1776],{"class":1062},[909,3318,3319],{"class":1714},"\"SUNDAY\"",[909,3321,3302],{"class":982},[909,3323,3324],{"class":1714}," \"周末\"",[909,3326,1616],{"class":1062},[909,3328,3329,3332,3334,3337],{"class":911,"line":3126},[909,3330,3331],{"class":982},"    default",[909,3333,3302],{"class":982},[909,3335,3336],{"class":1714}," \"未知\"",[909,3338,1616],{"class":1062},[909,3340,3341],{"class":911,"line":3138},[909,3342,3343],{"class":1062},"};\n",[1888,3345,3347],{"title":3346},"注意","\n- switch 支持的类型：byte、short、int、char、String（Java 7+）、枚举\n- 不支持 long、float、double\n- 没有 break 会发生穿透（fall-through）\n",[1016,3349,3351],{"id":3350},"for-循环","for 循环",[900,3353,3355],{"className":902,"code":3354,"language":904,"meta":11,"style":11},"\u002F\u002F 基本 for 循环\nfor (int i = 0; i \u003C 10; i++) {\n    System.out.println(i);\n}\n\n\u002F\u002F 增强 for 循环（foreach）\nint[] arr = {1, 2, 3, 4, 5};\nfor (int num : arr) {\n    System.out.println(num);\n}\n\n\u002F\u002F 嵌套循环\nfor (int i = 0; i \u003C 3; i++) {\n    for (int j = 0; j \u003C 3; j++) {\n        System.out.println(i + \", \" + j);\n    }\n}\n",[906,3356,3357,3362,3392,3402,3406,3410,3415,3447,3463,3472,3476,3480,3485,3511,3541,3562,3567],{"__ignoreMap":11},[909,3358,3359],{"class":911,"line":912},[909,3360,3361],{"class":915},"\u002F\u002F 基本 for 循环\n",[909,3363,3364,3366,3368,3370,3372,3374,3377,3380,3382,3384,3387,3389],{"class":911,"line":922},[909,3365,1279],{"class":982},[909,3367,2089],{"class":1062},[909,3369,1059],{"class":982},[909,3371,1637],{"class":1062},[909,3373,1609],{"class":982},[909,3375,3376],{"class":1612}," 0",[909,3378,3379],{"class":1062},"; i ",[909,3381,2455],{"class":982},[909,3383,2118],{"class":1612},[909,3385,3386],{"class":1062},"; i",[909,3388,2259],{"class":982},[909,3390,3391],{"class":1062},") {\n",[909,3393,3394,3397,3399],{"class":911,"line":929},[909,3395,3396],{"class":1062},"    System.out.",[909,3398,1927],{"class":1803},[909,3400,3401],{"class":1062},"(i);\n",[909,3403,3404],{"class":911,"line":935},[909,3405,3044],{"class":1062},[909,3407,3408],{"class":911,"line":941},[909,3409,926],{"emptyLinePlaceholder":925},[909,3411,3412],{"class":911,"line":947},[909,3413,3414],{"class":915},"\u002F\u002F 增强 for 循环（foreach）\n",[909,3416,3417,3419,3421,3423,3425,3427,3429,3431,3433,3435,3437,3440,3442,3445],{"class":911,"line":953},[909,3418,1059],{"class":982},[909,3420,1765],{"class":1062},[909,3422,1609],{"class":982},[909,3424,1770],{"class":1062},[909,3426,1773],{"class":1612},[909,3428,1776],{"class":1062},[909,3430,1779],{"class":1612},[909,3432,1776],{"class":1062},[909,3434,1784],{"class":1612},[909,3436,1776],{"class":1062},[909,3438,3439],{"class":1612},"4",[909,3441,1776],{"class":1062},[909,3443,3444],{"class":1612},"5",[909,3446,3343],{"class":1062},[909,3448,3449,3451,3453,3455,3458,3460],{"class":911,"line":958},[909,3450,1279],{"class":982},[909,3452,2089],{"class":1062},[909,3454,1059],{"class":982},[909,3456,3457],{"class":1062}," num ",[909,3459,2903],{"class":982},[909,3461,3462],{"class":1062}," arr) {\n",[909,3464,3465,3467,3469],{"class":911,"line":964},[909,3466,3396],{"class":1062},[909,3468,1927],{"class":1803},[909,3470,3471],{"class":1062},"(num);\n",[909,3473,3474],{"class":911,"line":970},[909,3475,3044],{"class":1062},[909,3477,3478],{"class":911,"line":976},[909,3479,926],{"emptyLinePlaceholder":925},[909,3481,3482],{"class":911,"line":993},[909,3483,3484],{"class":915},"\u002F\u002F 嵌套循环\n",[909,3486,3487,3489,3491,3493,3495,3497,3499,3501,3503,3505,3507,3509],{"class":911,"line":1004},[909,3488,1279],{"class":982},[909,3490,2089],{"class":1062},[909,3492,1059],{"class":982},[909,3494,1637],{"class":1062},[909,3496,1609],{"class":982},[909,3498,3376],{"class":1612},[909,3500,3379],{"class":1062},[909,3502,2455],{"class":982},[909,3504,2312],{"class":1612},[909,3506,3386],{"class":1062},[909,3508,2259],{"class":982},[909,3510,3391],{"class":1062},[909,3512,3513,3516,3518,3520,3523,3525,3527,3530,3532,3534,3537,3539],{"class":911,"line":2145},[909,3514,3515],{"class":982},"    for",[909,3517,2089],{"class":1062},[909,3519,1059],{"class":982},[909,3521,3522],{"class":1062}," j ",[909,3524,1609],{"class":982},[909,3526,3376],{"class":1612},[909,3528,3529],{"class":1062},"; j ",[909,3531,2455],{"class":982},[909,3533,2312],{"class":1612},[909,3535,3536],{"class":1062},"; j",[909,3538,2259],{"class":982},[909,3540,3391],{"class":1062},[909,3542,3543,3546,3548,3551,3553,3556,3559],{"class":911,"line":3101},[909,3544,3545],{"class":1062},"        System.out.",[909,3547,1927],{"class":1803},[909,3549,3550],{"class":1062},"(i ",[909,3552,2157],{"class":982},[909,3554,3555],{"class":1714}," \", \"",[909,3557,3558],{"class":982}," +",[909,3560,3561],{"class":1062}," j);\n",[909,3563,3564],{"class":911,"line":3107},[909,3565,3566],{"class":1062},"    }\n",[909,3568,3569],{"class":911,"line":3120},[909,3570,3044],{"class":1062},[1016,3572,3574],{"id":3573},"while-循环","while 循环",[900,3576,3578],{"className":902,"code":3577,"language":904,"meta":11,"style":11},"\u002F\u002F while 循环：先判断后执行\nint i = 0;\nwhile (i \u003C 5) {\n    System.out.println(i);\n    i++;\n}\n\n\u002F\u002F do-while 循环：先执行后判断（至少执行一次）\nint j = 0;\ndo {\n    System.out.println(j);\n    j++;\n} while (j \u003C 5);\n",[906,3579,3580,3585,3597,3610,3618,3627,3631,3635,3640,3652,3658,3667,3676],{"__ignoreMap":11},[909,3581,3582],{"class":911,"line":912},[909,3583,3584],{"class":915},"\u002F\u002F while 循环：先判断后执行\n",[909,3586,3587,3589,3591,3593,3595],{"class":911,"line":922},[909,3588,1059],{"class":982},[909,3590,1637],{"class":1062},[909,3592,1609],{"class":982},[909,3594,3376],{"class":1612},[909,3596,1616],{"class":1062},[909,3598,3599,3601,3604,3606,3608],{"class":911,"line":929},[909,3600,1282],{"class":982},[909,3602,3603],{"class":1062}," (i ",[909,3605,2455],{"class":982},[909,3607,2304],{"class":1612},[909,3609,3391],{"class":1062},[909,3611,3612,3614,3616],{"class":911,"line":935},[909,3613,3396],{"class":1062},[909,3615,1927],{"class":1803},[909,3617,3401],{"class":1062},[909,3619,3620,3623,3625],{"class":911,"line":941},[909,3621,3622],{"class":1062},"    i",[909,3624,2259],{"class":982},[909,3626,1616],{"class":1062},[909,3628,3629],{"class":911,"line":947},[909,3630,3044],{"class":1062},[909,3632,3633],{"class":911,"line":953},[909,3634,926],{"emptyLinePlaceholder":925},[909,3636,3637],{"class":911,"line":958},[909,3638,3639],{"class":915},"\u002F\u002F do-while 循环：先执行后判断（至少执行一次）\n",[909,3641,3642,3644,3646,3648,3650],{"class":911,"line":964},[909,3643,1059],{"class":982},[909,3645,3522],{"class":1062},[909,3647,1609],{"class":982},[909,3649,3376],{"class":1612},[909,3651,1616],{"class":1062},[909,3653,3654,3656],{"class":911,"line":970},[909,3655,1285],{"class":982},[909,3657,3073],{"class":1062},[909,3659,3660,3662,3664],{"class":911,"line":976},[909,3661,3396],{"class":1062},[909,3663,1927],{"class":1803},[909,3665,3666],{"class":1062},"(j);\n",[909,3668,3669,3672,3674],{"class":911,"line":993},[909,3670,3671],{"class":1062},"    j",[909,3673,2259],{"class":982},[909,3675,1616],{"class":1062},[909,3677,3678,3680,3682,3685,3687,3689],{"class":911,"line":1004},[909,3679,3068],{"class":1062},[909,3681,1282],{"class":982},[909,3683,3684],{"class":1062}," (j ",[909,3686,2455],{"class":982},[909,3688,2304],{"class":1612},[909,3690,3691],{"class":1062},");\n",[1016,3693,3695],{"id":3694},"break-与-continue","break 与 continue",[900,3697,3699],{"className":902,"code":3698,"language":904,"meta":11,"style":11},"\u002F\u002F break：退出当前循环\nfor (int i = 0; i \u003C 10; i++) {\n    if (i == 5) break;    \u002F\u002F i=5 时退出循环\n    System.out.println(i);\n}\n\n\u002F\u002F continue：跳过本次循环\nfor (int i = 0; i \u003C 10; i++) {\n    if (i == 5) continue; \u002F\u002F 跳过 i=5\n    System.out.println(i);\n}\n\n\u002F\u002F 带标签的 break\u002Fcontinue（跳出外层循环）\nouter:\nfor (int i = 0; i \u003C 3; i++) {\n    for (int j = 0; j \u003C 3; j++) {\n        if (j == 1) break outer;  \u002F\u002F 直接跳出外层循环\n        System.out.println(i + \", \" + j);\n    }\n}\n",[906,3700,3701,3706,3732,3752,3760,3764,3768,3773,3799,3819,3827,3831,3835,3840,3847,3873,3899,3921,3937,3941],{"__ignoreMap":11},[909,3702,3703],{"class":911,"line":912},[909,3704,3705],{"class":915},"\u002F\u002F break：退出当前循环\n",[909,3707,3708,3710,3712,3714,3716,3718,3720,3722,3724,3726,3728,3730],{"class":911,"line":922},[909,3709,1279],{"class":982},[909,3711,2089],{"class":1062},[909,3713,1059],{"class":982},[909,3715,1637],{"class":1062},[909,3717,1609],{"class":982},[909,3719,3376],{"class":1612},[909,3721,3379],{"class":1062},[909,3723,2455],{"class":982},[909,3725,2118],{"class":1612},[909,3727,3386],{"class":1062},[909,3729,2259],{"class":982},[909,3731,3391],{"class":1062},[909,3733,3734,3737,3739,3741,3743,3745,3747,3749],{"class":911,"line":929},[909,3735,3736],{"class":982},"    if",[909,3738,3603],{"class":1062},[909,3740,1933],{"class":982},[909,3742,2304],{"class":1612},[909,3744,2629],{"class":1062},[909,3746,1288],{"class":982},[909,3748,1659],{"class":1062},[909,3750,3751],{"class":915},"\u002F\u002F i=5 时退出循环\n",[909,3753,3754,3756,3758],{"class":911,"line":935},[909,3755,3396],{"class":1062},[909,3757,1927],{"class":1803},[909,3759,3401],{"class":1062},[909,3761,3762],{"class":911,"line":941},[909,3763,3044],{"class":1062},[909,3765,3766],{"class":911,"line":947},[909,3767,926],{"emptyLinePlaceholder":925},[909,3769,3770],{"class":911,"line":953},[909,3771,3772],{"class":915},"\u002F\u002F continue：跳过本次循环\n",[909,3774,3775,3777,3779,3781,3783,3785,3787,3789,3791,3793,3795,3797],{"class":911,"line":958},[909,3776,1279],{"class":982},[909,3778,2089],{"class":1062},[909,3780,1059],{"class":982},[909,3782,1637],{"class":1062},[909,3784,1609],{"class":982},[909,3786,3376],{"class":1612},[909,3788,3379],{"class":1062},[909,3790,2455],{"class":982},[909,3792,2118],{"class":1612},[909,3794,3386],{"class":1062},[909,3796,2259],{"class":982},[909,3798,3391],{"class":1062},[909,3800,3801,3803,3805,3807,3809,3811,3813,3816],{"class":911,"line":964},[909,3802,3736],{"class":982},[909,3804,3603],{"class":1062},[909,3806,1933],{"class":982},[909,3808,2304],{"class":1612},[909,3810,2629],{"class":1062},[909,3812,1291],{"class":982},[909,3814,3815],{"class":1062},"; ",[909,3817,3818],{"class":915},"\u002F\u002F 跳过 i=5\n",[909,3820,3821,3823,3825],{"class":911,"line":970},[909,3822,3396],{"class":1062},[909,3824,1927],{"class":1803},[909,3826,3401],{"class":1062},[909,3828,3829],{"class":911,"line":976},[909,3830,3044],{"class":1062},[909,3832,3833],{"class":911,"line":993},[909,3834,926],{"emptyLinePlaceholder":925},[909,3836,3837],{"class":911,"line":1004},[909,3838,3839],{"class":915},"\u002F\u002F 带标签的 break\u002Fcontinue（跳出外层循环）\n",[909,3841,3842,3845],{"class":911,"line":2145},[909,3843,3844],{"class":1062},"outer",[909,3846,3193],{"class":982},[909,3848,3849,3851,3853,3855,3857,3859,3861,3863,3865,3867,3869,3871],{"class":911,"line":3101},[909,3850,1279],{"class":982},[909,3852,2089],{"class":1062},[909,3854,1059],{"class":982},[909,3856,1637],{"class":1062},[909,3858,1609],{"class":982},[909,3860,3376],{"class":1612},[909,3862,3379],{"class":1062},[909,3864,2455],{"class":982},[909,3866,2312],{"class":1612},[909,3868,3386],{"class":1062},[909,3870,2259],{"class":982},[909,3872,3391],{"class":1062},[909,3874,3875,3877,3879,3881,3883,3885,3887,3889,3891,3893,3895,3897],{"class":911,"line":3107},[909,3876,3515],{"class":982},[909,3878,2089],{"class":1062},[909,3880,1059],{"class":982},[909,3882,3522],{"class":1062},[909,3884,1609],{"class":982},[909,3886,3376],{"class":1612},[909,3888,3529],{"class":1062},[909,3890,2455],{"class":982},[909,3892,2312],{"class":1612},[909,3894,3536],{"class":1062},[909,3896,2259],{"class":982},[909,3898,3391],{"class":1062},[909,3900,3901,3904,3906,3908,3911,3913,3915,3918],{"class":911,"line":3120},[909,3902,3903],{"class":982},"        if",[909,3905,3684],{"class":1062},[909,3907,1933],{"class":982},[909,3909,3910],{"class":1612}," 1",[909,3912,2629],{"class":1062},[909,3914,1288],{"class":982},[909,3916,3917],{"class":1062}," outer;  ",[909,3919,3920],{"class":915},"\u002F\u002F 直接跳出外层循环\n",[909,3922,3923,3925,3927,3929,3931,3933,3935],{"class":911,"line":3126},[909,3924,3545],{"class":1062},[909,3926,1927],{"class":1803},[909,3928,3550],{"class":1062},[909,3930,2157],{"class":982},[909,3932,3555],{"class":1714},[909,3934,3558],{"class":982},[909,3936,3561],{"class":1062},[909,3938,3939],{"class":911,"line":3138},[909,3940,3566],{"class":1062},[909,3942,3943],{"class":911,"line":3144},[909,3944,3044],{"class":1062},[892,3946,3947],{"id":3947},"数组",[1016,3949,3950],{"id":3950},"数组声明与初始化",[900,3952,3954],{"className":902,"code":3953,"language":904,"meta":11,"style":11},"\u002F\u002F 声明\nint[] arr1;        \u002F\u002F 推荐写法\nint arr2[];        \u002F\u002F C 风格，不推荐\n\n\u002F\u002F 静态初始化\nint[] arr3 = {1, 2, 3, 4, 5};\nint[] arr4 = new int[]{1, 2, 3};\n\n\u002F\u002F 动态初始化\nint[] arr5 = new int[5];   \u002F\u002F 默认值为 0\nString[] arr6 = new String[3];  \u002F\u002F 默认值为 null\n",[906,3955,3956,3961,3971,3981,3985,3990,4021,4050,4054,4059,4083],{"__ignoreMap":11},[909,3957,3958],{"class":911,"line":912},[909,3959,3960],{"class":915},"\u002F\u002F 声明\n",[909,3962,3963,3965,3968],{"class":911,"line":922},[909,3964,1059],{"class":982},[909,3966,3967],{"class":1062},"[] arr1;        ",[909,3969,3970],{"class":915},"\u002F\u002F 推荐写法\n",[909,3972,3973,3975,3978],{"class":911,"line":929},[909,3974,1059],{"class":982},[909,3976,3977],{"class":1062}," arr2[];        ",[909,3979,3980],{"class":915},"\u002F\u002F C 风格，不推荐\n",[909,3982,3983],{"class":911,"line":935},[909,3984,926],{"emptyLinePlaceholder":925},[909,3986,3987],{"class":911,"line":941},[909,3988,3989],{"class":915},"\u002F\u002F 静态初始化\n",[909,3991,3992,3994,3997,3999,4001,4003,4005,4007,4009,4011,4013,4015,4017,4019],{"class":911,"line":947},[909,3993,1059],{"class":982},[909,3995,3996],{"class":1062},"[] arr3 ",[909,3998,1609],{"class":982},[909,4000,1770],{"class":1062},[909,4002,1773],{"class":1612},[909,4004,1776],{"class":1062},[909,4006,1779],{"class":1612},[909,4008,1776],{"class":1062},[909,4010,1784],{"class":1612},[909,4012,1776],{"class":1062},[909,4014,3439],{"class":1612},[909,4016,1776],{"class":1062},[909,4018,3444],{"class":1612},[909,4020,3343],{"class":1062},[909,4022,4023,4025,4028,4030,4032,4035,4038,4040,4042,4044,4046,4048],{"class":911,"line":953},[909,4024,1059],{"class":982},[909,4026,4027],{"class":1062},"[] arr4 ",[909,4029,1609],{"class":982},[909,4031,1800],{"class":982},[909,4033,4034],{"class":982}," int",[909,4036,4037],{"class":1062},"[]{",[909,4039,1773],{"class":1612},[909,4041,1776],{"class":1062},[909,4043,1779],{"class":1612},[909,4045,1776],{"class":1062},[909,4047,1784],{"class":1612},[909,4049,3343],{"class":1062},[909,4051,4052],{"class":911,"line":958},[909,4053,926],{"emptyLinePlaceholder":925},[909,4055,4056],{"class":911,"line":964},[909,4057,4058],{"class":915},"\u002F\u002F 动态初始化\n",[909,4060,4061,4063,4066,4068,4070,4072,4075,4077,4080],{"class":911,"line":970},[909,4062,1059],{"class":982},[909,4064,4065],{"class":1062},"[] arr5 ",[909,4067,1609],{"class":982},[909,4069,1800],{"class":982},[909,4071,4034],{"class":982},[909,4073,4074],{"class":1062},"[",[909,4076,3444],{"class":1612},[909,4078,4079],{"class":1062},"];   ",[909,4081,4082],{"class":915},"\u002F\u002F 默认值为 0\n",[909,4084,4085,4087,4090,4092,4094,4097,4099,4101,4104],{"class":911,"line":976},[909,4086,1818],{"class":982},[909,4088,4089],{"class":1062},"[] arr6 ",[909,4091,1609],{"class":982},[909,4093,1800],{"class":982},[909,4095,4096],{"class":982}," String",[909,4098,4074],{"class":1062},[909,4100,1784],{"class":1612},[909,4102,4103],{"class":1062},"];  ",[909,4105,4106],{"class":915},"\u002F\u002F 默认值为 null\n",[1016,4108,4109],{"id":4109},"数组操作",[900,4111,4113],{"className":902,"code":4112,"language":904,"meta":11,"style":11},"int[] arr = {10, 20, 30, 40, 50};\n\n\u002F\u002F 访问元素（下标从 0 开始）\nSystem.out.println(arr[0]);  \u002F\u002F 10\narr[1] = 25;                 \u002F\u002F 修改元素\n\n\u002F\u002F 数组长度\nSystem.out.println(arr.length);  \u002F\u002F 5\n\n\u002F\u002F 遍历数组\nfor (int i = 0; i \u003C arr.length; i++) {\n    System.out.println(arr[i]);\n}\n\n\u002F\u002F 增强 for 循环\nfor (int num : arr) {\n    System.out.println(num);\n}\n",[906,4114,4115,4150,4154,4159,4176,4197,4201,4206,4218,4222,4227,4252,4261,4265,4269,4274,4288,4296],{"__ignoreMap":11},[909,4116,4117,4119,4121,4123,4125,4128,4130,4133,4135,4138,4140,4143,4145,4148],{"class":911,"line":912},[909,4118,1059],{"class":982},[909,4120,1765],{"class":1062},[909,4122,1609],{"class":982},[909,4124,1770],{"class":1062},[909,4126,4127],{"class":1612},"10",[909,4129,1776],{"class":1062},[909,4131,4132],{"class":1612},"20",[909,4134,1776],{"class":1062},[909,4136,4137],{"class":1612},"30",[909,4139,1776],{"class":1062},[909,4141,4142],{"class":1612},"40",[909,4144,1776],{"class":1062},[909,4146,4147],{"class":1612},"50",[909,4149,3343],{"class":1062},[909,4151,4152],{"class":911,"line":922},[909,4153,926],{"emptyLinePlaceholder":925},[909,4155,4156],{"class":911,"line":929},[909,4157,4158],{"class":915},"\u002F\u002F 访问元素（下标从 0 开始）\n",[909,4160,4161,4163,4165,4168,4170,4173],{"class":911,"line":935},[909,4162,1924],{"class":1062},[909,4164,1927],{"class":1803},[909,4166,4167],{"class":1062},"(arr[",[909,4169,1484],{"class":1612},[909,4171,4172],{"class":1062},"]);  ",[909,4174,4175],{"class":915},"\u002F\u002F 10\n",[909,4177,4178,4181,4183,4186,4188,4191,4194],{"class":911,"line":941},[909,4179,4180],{"class":1062},"arr[",[909,4182,1773],{"class":1612},[909,4184,4185],{"class":1062},"] ",[909,4187,1609],{"class":982},[909,4189,4190],{"class":1612}," 25",[909,4192,4193],{"class":1062},";                 ",[909,4195,4196],{"class":915},"\u002F\u002F 修改元素\n",[909,4198,4199],{"class":911,"line":947},[909,4200,926],{"emptyLinePlaceholder":925},[909,4202,4203],{"class":911,"line":953},[909,4204,4205],{"class":915},"\u002F\u002F 数组长度\n",[909,4207,4208,4210,4212,4215],{"class":911,"line":958},[909,4209,1924],{"class":1062},[909,4211,1927],{"class":1803},[909,4213,4214],{"class":1062},"(arr.length);  ",[909,4216,4217],{"class":915},"\u002F\u002F 5\n",[909,4219,4220],{"class":911,"line":964},[909,4221,926],{"emptyLinePlaceholder":925},[909,4223,4224],{"class":911,"line":970},[909,4225,4226],{"class":915},"\u002F\u002F 遍历数组\n",[909,4228,4229,4231,4233,4235,4237,4239,4241,4243,4245,4248,4250],{"class":911,"line":976},[909,4230,1279],{"class":982},[909,4232,2089],{"class":1062},[909,4234,1059],{"class":982},[909,4236,1637],{"class":1062},[909,4238,1609],{"class":982},[909,4240,3376],{"class":1612},[909,4242,3379],{"class":1062},[909,4244,2455],{"class":982},[909,4246,4247],{"class":1062}," arr.length; i",[909,4249,2259],{"class":982},[909,4251,3391],{"class":1062},[909,4253,4254,4256,4258],{"class":911,"line":993},[909,4255,3396],{"class":1062},[909,4257,1927],{"class":1803},[909,4259,4260],{"class":1062},"(arr[i]);\n",[909,4262,4263],{"class":911,"line":1004},[909,4264,3044],{"class":1062},[909,4266,4267],{"class":911,"line":2145},[909,4268,926],{"emptyLinePlaceholder":925},[909,4270,4271],{"class":911,"line":3101},[909,4272,4273],{"class":915},"\u002F\u002F 增强 for 循环\n",[909,4275,4276,4278,4280,4282,4284,4286],{"class":911,"line":3107},[909,4277,1279],{"class":982},[909,4279,2089],{"class":1062},[909,4281,1059],{"class":982},[909,4283,3457],{"class":1062},[909,4285,2903],{"class":982},[909,4287,3462],{"class":1062},[909,4289,4290,4292,4294],{"class":911,"line":3120},[909,4291,3396],{"class":1062},[909,4293,1927],{"class":1803},[909,4295,3471],{"class":1062},[909,4297,4298],{"class":911,"line":3126},[909,4299,3044],{"class":1062},[1016,4301,4302],{"id":4302},"多维数组",[900,4304,4306],{"className":902,"code":4305,"language":904,"meta":11,"style":11},"\u002F\u002F 二维数组\nint[][] matrix = {\n    {1, 2, 3},\n    {4, 5, 6},\n    {7, 8, 9}\n};\n\n\u002F\u002F 访问元素\nSystem.out.println(matrix[0][1]);  \u002F\u002F 2\n\n\u002F\u002F 遍历\nfor (int i = 0; i \u003C matrix.length; i++) {\n    for (int j = 0; j \u003C matrix[i].length; j++) {\n        System.out.println(matrix[i][j]);\n    }\n}\n\n\u002F\u002F 不规则数组\nint[][] irregular = new int[3][];\nirregular[0] = new int[2];\nirregular[1] = new int[3];\nirregular[2] = new int[4];\n",[906,4307,4308,4313,4324,4342,4359,4378,4382,4386,4391,4411,4415,4420,4445,4470,4479,4483,4487,4491,4496,4516,4538,4558],{"__ignoreMap":11},[909,4309,4310],{"class":911,"line":912},[909,4311,4312],{"class":915},"\u002F\u002F 二维数组\n",[909,4314,4315,4317,4320,4322],{"class":911,"line":922},[909,4316,1059],{"class":982},[909,4318,4319],{"class":1062},"[][] matrix ",[909,4321,1609],{"class":982},[909,4323,3073],{"class":1062},[909,4325,4326,4329,4331,4333,4335,4337,4339],{"class":911,"line":929},[909,4327,4328],{"class":1062},"    {",[909,4330,1773],{"class":1612},[909,4332,1776],{"class":1062},[909,4334,1779],{"class":1612},[909,4336,1776],{"class":1062},[909,4338,1784],{"class":1612},[909,4340,4341],{"class":1062},"},\n",[909,4343,4344,4346,4348,4350,4352,4354,4357],{"class":911,"line":935},[909,4345,4328],{"class":1062},[909,4347,3439],{"class":1612},[909,4349,1776],{"class":1062},[909,4351,3444],{"class":1612},[909,4353,1776],{"class":1062},[909,4355,4356],{"class":1612},"6",[909,4358,4341],{"class":1062},[909,4360,4361,4363,4366,4368,4371,4373,4376],{"class":911,"line":941},[909,4362,4328],{"class":1062},[909,4364,4365],{"class":1612},"7",[909,4367,1776],{"class":1062},[909,4369,4370],{"class":1612},"8",[909,4372,1776],{"class":1062},[909,4374,4375],{"class":1612},"9",[909,4377,3044],{"class":1062},[909,4379,4380],{"class":911,"line":947},[909,4381,3343],{"class":1062},[909,4383,4384],{"class":911,"line":953},[909,4385,926],{"emptyLinePlaceholder":925},[909,4387,4388],{"class":911,"line":958},[909,4389,4390],{"class":915},"\u002F\u002F 访问元素\n",[909,4392,4393,4395,4397,4400,4402,4405,4407,4409],{"class":911,"line":964},[909,4394,1924],{"class":1062},[909,4396,1927],{"class":1803},[909,4398,4399],{"class":1062},"(matrix[",[909,4401,1484],{"class":1612},[909,4403,4404],{"class":1062},"][",[909,4406,1773],{"class":1612},[909,4408,4172],{"class":1062},[909,4410,2345],{"class":915},[909,4412,4413],{"class":911,"line":970},[909,4414,926],{"emptyLinePlaceholder":925},[909,4416,4417],{"class":911,"line":976},[909,4418,4419],{"class":915},"\u002F\u002F 遍历\n",[909,4421,4422,4424,4426,4428,4430,4432,4434,4436,4438,4441,4443],{"class":911,"line":993},[909,4423,1279],{"class":982},[909,4425,2089],{"class":1062},[909,4427,1059],{"class":982},[909,4429,1637],{"class":1062},[909,4431,1609],{"class":982},[909,4433,3376],{"class":1612},[909,4435,3379],{"class":1062},[909,4437,2455],{"class":982},[909,4439,4440],{"class":1062}," matrix.length; i",[909,4442,2259],{"class":982},[909,4444,3391],{"class":1062},[909,4446,4447,4449,4451,4453,4455,4457,4459,4461,4463,4466,4468],{"class":911,"line":1004},[909,4448,3515],{"class":982},[909,4450,2089],{"class":1062},[909,4452,1059],{"class":982},[909,4454,3522],{"class":1062},[909,4456,1609],{"class":982},[909,4458,3376],{"class":1612},[909,4460,3529],{"class":1062},[909,4462,2455],{"class":982},[909,4464,4465],{"class":1062}," matrix[i].length; j",[909,4467,2259],{"class":982},[909,4469,3391],{"class":1062},[909,4471,4472,4474,4476],{"class":911,"line":2145},[909,4473,3545],{"class":1062},[909,4475,1927],{"class":1803},[909,4477,4478],{"class":1062},"(matrix[i][j]);\n",[909,4480,4481],{"class":911,"line":3101},[909,4482,3566],{"class":1062},[909,4484,4485],{"class":911,"line":3107},[909,4486,3044],{"class":1062},[909,4488,4489],{"class":911,"line":3120},[909,4490,926],{"emptyLinePlaceholder":925},[909,4492,4493],{"class":911,"line":3126},[909,4494,4495],{"class":915},"\u002F\u002F 不规则数组\n",[909,4497,4498,4500,4503,4505,4507,4509,4511,4513],{"class":911,"line":3138},[909,4499,1059],{"class":982},[909,4501,4502],{"class":1062},"[][] irregular ",[909,4504,1609],{"class":982},[909,4506,1800],{"class":982},[909,4508,4034],{"class":982},[909,4510,4074],{"class":1062},[909,4512,1784],{"class":1612},[909,4514,4515],{"class":1062},"][];\n",[909,4517,4518,4521,4523,4525,4527,4529,4531,4533,4535],{"class":911,"line":3144},[909,4519,4520],{"class":1062},"irregular[",[909,4522,1484],{"class":1612},[909,4524,4185],{"class":1062},[909,4526,1609],{"class":982},[909,4528,1800],{"class":982},[909,4530,4034],{"class":982},[909,4532,4074],{"class":1062},[909,4534,1779],{"class":1612},[909,4536,4537],{"class":1062},"];\n",[909,4539,4540,4542,4544,4546,4548,4550,4552,4554,4556],{"class":911,"line":3153},[909,4541,4520],{"class":1062},[909,4543,1773],{"class":1612},[909,4545,4185],{"class":1062},[909,4547,1609],{"class":982},[909,4549,1800],{"class":982},[909,4551,4034],{"class":982},[909,4553,4074],{"class":1062},[909,4555,1784],{"class":1612},[909,4557,4537],{"class":1062},[909,4559,4560,4562,4564,4566,4568,4570,4572,4574,4576],{"class":911,"line":3159},[909,4561,4520],{"class":1062},[909,4563,1779],{"class":1612},[909,4565,4185],{"class":1062},[909,4567,1609],{"class":982},[909,4569,1800],{"class":982},[909,4571,4034],{"class":982},[909,4573,4074],{"class":1062},[909,4575,3439],{"class":1612},[909,4577,4537],{"class":1062},[1016,4579,4581],{"id":4580},"arrays-工具类","Arrays 工具类",[900,4583,4585],{"className":902,"code":4584,"language":904,"meta":11,"style":11},"import java.util.Arrays;\n\nint[] arr = {3, 1, 4, 1, 5, 9, 2, 6};\n\n\u002F\u002F 排序\nArrays.sort(arr);\n\n\u002F\u002F 二分查找（需要先排序）\nint index = Arrays.binarySearch(arr, 5);\n\n\u002F\u002F 填充\nArrays.fill(arr, 0);\n\n\u002F\u002F 复制\nint[] copy = Arrays.copyOf(arr, 10);\n\n\u002F\u002F 转字符串\nSystem.out.println(Arrays.toString(arr));\n\n\u002F\u002F 比较\nboolean equal = Arrays.equals(arr1, arr2);\n",[906,4586,4587,4594,4598,4640,4644,4649,4660,4664,4669,4691,4695,4700,4713,4717,4722,4742,4746,4751,4766,4770,4775],{"__ignoreMap":11},[909,4588,4589,4591],{"class":911,"line":912},[909,4590,1392],{"class":982},[909,4592,4593],{"class":1062}," java.util.Arrays;\n",[909,4595,4596],{"class":911,"line":922},[909,4597,926],{"emptyLinePlaceholder":925},[909,4599,4600,4602,4604,4606,4608,4610,4612,4614,4616,4618,4620,4622,4624,4626,4628,4630,4632,4634,4636,4638],{"class":911,"line":929},[909,4601,1059],{"class":982},[909,4603,1765],{"class":1062},[909,4605,1609],{"class":982},[909,4607,1770],{"class":1062},[909,4609,1784],{"class":1612},[909,4611,1776],{"class":1062},[909,4613,1773],{"class":1612},[909,4615,1776],{"class":1062},[909,4617,3439],{"class":1612},[909,4619,1776],{"class":1062},[909,4621,1773],{"class":1612},[909,4623,1776],{"class":1062},[909,4625,3444],{"class":1612},[909,4627,1776],{"class":1062},[909,4629,4375],{"class":1612},[909,4631,1776],{"class":1062},[909,4633,1779],{"class":1612},[909,4635,1776],{"class":1062},[909,4637,4356],{"class":1612},[909,4639,3343],{"class":1062},[909,4641,4642],{"class":911,"line":935},[909,4643,926],{"emptyLinePlaceholder":925},[909,4645,4646],{"class":911,"line":941},[909,4647,4648],{"class":915},"\u002F\u002F 排序\n",[909,4650,4651,4654,4657],{"class":911,"line":947},[909,4652,4653],{"class":1062},"Arrays.",[909,4655,4656],{"class":1803},"sort",[909,4658,4659],{"class":1062},"(arr);\n",[909,4661,4662],{"class":911,"line":953},[909,4663,926],{"emptyLinePlaceholder":925},[909,4665,4666],{"class":911,"line":958},[909,4667,4668],{"class":915},"\u002F\u002F 二分查找（需要先排序）\n",[909,4670,4671,4673,4676,4678,4681,4684,4687,4689],{"class":911,"line":964},[909,4672,1059],{"class":982},[909,4674,4675],{"class":1062}," index ",[909,4677,1609],{"class":982},[909,4679,4680],{"class":1062}," Arrays.",[909,4682,4683],{"class":1803},"binarySearch",[909,4685,4686],{"class":1062},"(arr, ",[909,4688,3444],{"class":1612},[909,4690,3691],{"class":1062},[909,4692,4693],{"class":911,"line":970},[909,4694,926],{"emptyLinePlaceholder":925},[909,4696,4697],{"class":911,"line":976},[909,4698,4699],{"class":915},"\u002F\u002F 填充\n",[909,4701,4702,4704,4707,4709,4711],{"class":911,"line":993},[909,4703,4653],{"class":1062},[909,4705,4706],{"class":1803},"fill",[909,4708,4686],{"class":1062},[909,4710,1484],{"class":1612},[909,4712,3691],{"class":1062},[909,4714,4715],{"class":911,"line":1004},[909,4716,926],{"emptyLinePlaceholder":925},[909,4718,4719],{"class":911,"line":2145},[909,4720,4721],{"class":915},"\u002F\u002F 复制\n",[909,4723,4724,4726,4729,4731,4733,4736,4738,4740],{"class":911,"line":3101},[909,4725,1059],{"class":982},[909,4727,4728],{"class":1062},"[] copy ",[909,4730,1609],{"class":982},[909,4732,4680],{"class":1062},[909,4734,4735],{"class":1803},"copyOf",[909,4737,4686],{"class":1062},[909,4739,4127],{"class":1612},[909,4741,3691],{"class":1062},[909,4743,4744],{"class":911,"line":3107},[909,4745,926],{"emptyLinePlaceholder":925},[909,4747,4748],{"class":911,"line":3120},[909,4749,4750],{"class":915},"\u002F\u002F 转字符串\n",[909,4752,4753,4755,4757,4760,4763],{"class":911,"line":3126},[909,4754,1924],{"class":1062},[909,4756,1927],{"class":1803},[909,4758,4759],{"class":1062},"(Arrays.",[909,4761,4762],{"class":1803},"toString",[909,4764,4765],{"class":1062},"(arr));\n",[909,4767,4768],{"class":911,"line":3138},[909,4769,926],{"emptyLinePlaceholder":925},[909,4771,4772],{"class":911,"line":3144},[909,4773,4774],{"class":915},"\u002F\u002F 比较\n",[909,4776,4777,4779,4782,4784,4786,4788],{"class":911,"line":3153},[909,4778,1254],{"class":982},[909,4780,4781],{"class":1062}," equal ",[909,4783,1609],{"class":982},[909,4785,4680],{"class":1062},[909,4787,1995],{"class":1803},[909,4789,4790],{"class":1062},"(arr1, arr2);\n",[892,4792,4793],{"id":4793},"方法",[1016,4795,4796],{"id":4796},"方法定义",[900,4798,4800],{"className":902,"code":4799,"language":904,"meta":11,"style":11},"修饰符 返回类型 方法名(参数列表) {\n    \u002F\u002F 方法体\n    return 返回值;  \u002F\u002F void 方法可省略\n}\n",[906,4801,4802,4807,4812,4823],{"__ignoreMap":11},[909,4803,4804],{"class":911,"line":912},[909,4805,4806],{"class":1062},"修饰符 返回类型 方法名(参数列表) {\n",[909,4808,4809],{"class":911,"line":922},[909,4810,4811],{"class":915},"    \u002F\u002F 方法体\n",[909,4813,4814,4817,4820],{"class":911,"line":929},[909,4815,4816],{"class":982},"    return",[909,4818,4819],{"class":1062}," 返回值;  ",[909,4821,4822],{"class":915},"\u002F\u002F void 方法可省略\n",[909,4824,4825],{"class":911,"line":935},[909,4826,3044],{"class":1062},[900,4828,4830],{"className":902,"code":4829,"language":904,"meta":11,"style":11},"\u002F\u002F 无参无返回值\npublic void sayHello() {\n    System.out.println(\"Hello!\");\n}\n\n\u002F\u002F 有参有返回值\npublic int add(int a, int b) {\n    return a + b;\n}\n\n\u002F\u002F 静态方法\npublic static double square(double num) {\n    return num * num;\n}\n",[906,4831,4832,4837,4850,4863,4867,4871,4876,4897,4908,4912,4916,4921,4941,4952],{"__ignoreMap":11},[909,4833,4834],{"class":911,"line":912},[909,4835,4836],{"class":915},"\u002F\u002F 无参无返回值\n",[909,4838,4839,4841,4844,4847],{"class":911,"line":922},[909,4840,1304],{"class":982},[909,4842,4843],{"class":982}," void",[909,4845,4846],{"class":1803}," sayHello",[909,4848,4849],{"class":1062},"() {\n",[909,4851,4852,4854,4856,4858,4861],{"class":911,"line":929},[909,4853,3396],{"class":1062},[909,4855,1927],{"class":1803},[909,4857,2387],{"class":1062},[909,4859,4860],{"class":1714},"\"Hello!\"",[909,4862,3691],{"class":1062},[909,4864,4865],{"class":911,"line":935},[909,4866,3044],{"class":1062},[909,4868,4869],{"class":911,"line":941},[909,4870,926],{"emptyLinePlaceholder":925},[909,4872,4873],{"class":911,"line":947},[909,4874,4875],{"class":915},"\u002F\u002F 有参有返回值\n",[909,4877,4878,4880,4882,4885,4887,4889,4892,4894],{"class":911,"line":953},[909,4879,1304],{"class":982},[909,4881,4034],{"class":982},[909,4883,4884],{"class":1803}," add",[909,4886,2387],{"class":1062},[909,4888,1059],{"class":982},[909,4890,4891],{"class":1062}," a, ",[909,4893,1059],{"class":982},[909,4895,4896],{"class":1062}," b) {\n",[909,4898,4899,4901,4903,4905],{"class":911,"line":958},[909,4900,4816],{"class":982},[909,4902,2299],{"class":1062},[909,4904,2157],{"class":982},[909,4906,4907],{"class":1062}," b;\n",[909,4909,4910],{"class":911,"line":964},[909,4911,3044],{"class":1062},[909,4913,4914],{"class":911,"line":970},[909,4915,926],{"emptyLinePlaceholder":925},[909,4917,4918],{"class":911,"line":976},[909,4919,4920],{"class":915},"\u002F\u002F 静态方法\n",[909,4922,4923,4925,4928,4931,4934,4936,4938],{"class":911,"line":993},[909,4924,1304],{"class":982},[909,4926,4927],{"class":982}," static",[909,4929,4930],{"class":982}," double",[909,4932,4933],{"class":1803}," square",[909,4935,2387],{"class":1062},[909,4937,1073],{"class":982},[909,4939,4940],{"class":1062}," num) {\n",[909,4942,4943,4945,4947,4949],{"class":911,"line":1004},[909,4944,4816],{"class":982},[909,4946,3457],{"class":1062},[909,4948,2220],{"class":982},[909,4950,4951],{"class":1062}," num;\n",[909,4953,4954],{"class":911,"line":2145},[909,4955,3044],{"class":1062},[1016,4957,4958],{"id":4958},"方法重载",[896,4960,4961],{},"方法重载（Overload）：同一个类中，方法名相同，参数列表不同。",[900,4963,4965],{"className":902,"code":4964,"language":904,"meta":11,"style":11},"public class Calculator {\n    public int add(int a, int b) {\n        return a + b;\n    }\n    \n    public double add(double a, double b) {\n        return a + b;\n    }\n    \n    public int add(int a, int b, int c) {\n        return a + b + c;\n    }\n}\n",[906,4966,4967,4979,5004,5015,5019,5024,5046,5056,5060,5064,5093,5108,5112],{"__ignoreMap":11},[909,4968,4969,4971,4974,4977],{"class":911,"line":912},[909,4970,1304],{"class":982},[909,4972,4973],{"class":982}," class",[909,4975,4976],{"class":1803}," Calculator",[909,4978,3073],{"class":1062},[909,4980,4981,4984,4986,4988,4990,4992,4995,4997,4999,5002],{"class":911,"line":922},[909,4982,4983],{"class":982},"    public",[909,4985,4034],{"class":982},[909,4987,4884],{"class":1803},[909,4989,2387],{"class":1062},[909,4991,1059],{"class":982},[909,4993,4994],{"class":986}," a",[909,4996,1776],{"class":1062},[909,4998,1059],{"class":982},[909,5000,5001],{"class":986}," b",[909,5003,3391],{"class":1062},[909,5005,5006,5009,5011,5013],{"class":911,"line":929},[909,5007,5008],{"class":982},"        return",[909,5010,2299],{"class":1062},[909,5012,2157],{"class":982},[909,5014,4907],{"class":1062},[909,5016,5017],{"class":911,"line":935},[909,5018,3566],{"class":1062},[909,5020,5021],{"class":911,"line":941},[909,5022,5023],{"class":1062},"    \n",[909,5025,5026,5028,5030,5032,5034,5036,5038,5040,5042,5044],{"class":911,"line":947},[909,5027,4983],{"class":982},[909,5029,4930],{"class":982},[909,5031,4884],{"class":1803},[909,5033,2387],{"class":1062},[909,5035,1073],{"class":982},[909,5037,4994],{"class":986},[909,5039,1776],{"class":1062},[909,5041,1073],{"class":982},[909,5043,5001],{"class":986},[909,5045,3391],{"class":1062},[909,5047,5048,5050,5052,5054],{"class":911,"line":953},[909,5049,5008],{"class":982},[909,5051,2299],{"class":1062},[909,5053,2157],{"class":982},[909,5055,4907],{"class":1062},[909,5057,5058],{"class":911,"line":958},[909,5059,3566],{"class":1062},[909,5061,5062],{"class":911,"line":964},[909,5063,5023],{"class":1062},[909,5065,5066,5068,5070,5072,5074,5076,5078,5080,5082,5084,5086,5088,5091],{"class":911,"line":970},[909,5067,4983],{"class":982},[909,5069,4034],{"class":982},[909,5071,4884],{"class":1803},[909,5073,2387],{"class":1062},[909,5075,1059],{"class":982},[909,5077,4994],{"class":986},[909,5079,1776],{"class":1062},[909,5081,1059],{"class":982},[909,5083,5001],{"class":986},[909,5085,1776],{"class":1062},[909,5087,1059],{"class":982},[909,5089,5090],{"class":986}," c",[909,5092,3391],{"class":1062},[909,5094,5095,5097,5099,5101,5103,5105],{"class":911,"line":976},[909,5096,5008],{"class":982},[909,5098,2299],{"class":1062},[909,5100,2157],{"class":982},[909,5102,1606],{"class":1062},[909,5104,2157],{"class":982},[909,5106,5107],{"class":1062}," c;\n",[909,5109,5110],{"class":911,"line":993},[909,5111,3566],{"class":1062},[909,5113,5114],{"class":911,"line":1004},[909,5115,3044],{"class":1062},[1888,5117,5118],{"title":3346},"\n- 重载与返回类型无关\n- 重载与参数名无关\n- 只看参数类型和参数个数\n",[1016,5120,5121],{"id":5121},"可变参数",[900,5123,5125],{"className":902,"code":5124,"language":904,"meta":11,"style":11},"\u002F\u002F 可变参数必须是最后一个参数\npublic int sum(int... nums) {\n    int total = 0;\n    for (int num : nums) {\n        total += num;\n    }\n    return total;\n}\n\n\u002F\u002F 调用\nsum(1, 2, 3);\nsum(1, 2, 3, 4, 5);\n",[906,5126,5127,5132,5148,5162,5177,5186,5190,5197,5201,5205,5210,5229],{"__ignoreMap":11},[909,5128,5129],{"class":911,"line":912},[909,5130,5131],{"class":915},"\u002F\u002F 可变参数必须是最后一个参数\n",[909,5133,5134,5136,5138,5141,5143,5145],{"class":911,"line":922},[909,5135,1304],{"class":982},[909,5137,4034],{"class":982},[909,5139,5140],{"class":1803}," sum",[909,5142,2387],{"class":1062},[909,5144,1059],{"class":982},[909,5146,5147],{"class":1062},"... nums) {\n",[909,5149,5150,5153,5156,5158,5160],{"class":911,"line":929},[909,5151,5152],{"class":982},"    int",[909,5154,5155],{"class":1062}," total ",[909,5157,1609],{"class":982},[909,5159,3376],{"class":1612},[909,5161,1616],{"class":1062},[909,5163,5164,5166,5168,5170,5172,5174],{"class":911,"line":935},[909,5165,3515],{"class":982},[909,5167,2089],{"class":1062},[909,5169,1059],{"class":982},[909,5171,3457],{"class":1062},[909,5173,2903],{"class":982},[909,5175,5176],{"class":1062}," nums) {\n",[909,5178,5179,5182,5184],{"class":911,"line":941},[909,5180,5181],{"class":1062},"        total ",[909,5183,2786],{"class":982},[909,5185,4951],{"class":1062},[909,5187,5188],{"class":911,"line":947},[909,5189,3566],{"class":1062},[909,5191,5192,5194],{"class":911,"line":953},[909,5193,4816],{"class":982},[909,5195,5196],{"class":1062}," total;\n",[909,5198,5199],{"class":911,"line":958},[909,5200,3044],{"class":1062},[909,5202,5203],{"class":911,"line":964},[909,5204,926],{"emptyLinePlaceholder":925},[909,5206,5207],{"class":911,"line":970},[909,5208,5209],{"class":915},"\u002F\u002F 调用\n",[909,5211,5212,5215,5217,5219,5221,5223,5225,5227],{"class":911,"line":976},[909,5213,5214],{"class":1803},"sum",[909,5216,2387],{"class":1062},[909,5218,1773],{"class":1612},[909,5220,1776],{"class":1062},[909,5222,1779],{"class":1612},[909,5224,1776],{"class":1062},[909,5226,1784],{"class":1612},[909,5228,3691],{"class":1062},[909,5230,5231,5233,5235,5237,5239,5241,5243,5245,5247,5249,5251,5253],{"class":911,"line":993},[909,5232,5214],{"class":1803},[909,5234,2387],{"class":1062},[909,5236,1773],{"class":1612},[909,5238,1776],{"class":1062},[909,5240,1779],{"class":1612},[909,5242,1776],{"class":1062},[909,5244,1784],{"class":1612},[909,5246,1776],{"class":1062},[909,5248,3439],{"class":1612},[909,5250,1776],{"class":1062},[909,5252,3444],{"class":1612},[909,5254,3691],{"class":1062},[1016,5256,5257],{"id":5257},"值传递",[896,5259,5260],{},"Java 只有值传递，没有引用传递。",[900,5262,5264],{"className":902,"code":5263,"language":904,"meta":11,"style":11},"\u002F\u002F 基本类型：传递的是值的副本\npublic void change(int num) {\n    num = 100;  \u002F\u002F 不影响外部变量\n}\n\n\u002F\u002F 引用类型：传递的是引用的副本（指向同一对象）\npublic void change(int[] arr) {\n    arr[0] = 100;  \u002F\u002F 会修改数组内容\n    arr = new int[]{1, 2, 3};  \u002F\u002F 不影响外部引用\n}\n",[906,5265,5266,5271,5286,5300,5304,5308,5313,5328,5346,5375],{"__ignoreMap":11},[909,5267,5268],{"class":911,"line":912},[909,5269,5270],{"class":915},"\u002F\u002F 基本类型：传递的是值的副本\n",[909,5272,5273,5275,5277,5280,5282,5284],{"class":911,"line":922},[909,5274,1304],{"class":982},[909,5276,4843],{"class":982},[909,5278,5279],{"class":1803}," change",[909,5281,2387],{"class":1062},[909,5283,1059],{"class":982},[909,5285,4940],{"class":1062},[909,5287,5288,5291,5293,5295,5297],{"class":911,"line":929},[909,5289,5290],{"class":1062},"    num ",[909,5292,1609],{"class":982},[909,5294,1613],{"class":1612},[909,5296,1859],{"class":1062},[909,5298,5299],{"class":915},"\u002F\u002F 不影响外部变量\n",[909,5301,5302],{"class":911,"line":935},[909,5303,3044],{"class":1062},[909,5305,5306],{"class":911,"line":941},[909,5307,926],{"emptyLinePlaceholder":925},[909,5309,5310],{"class":911,"line":947},[909,5311,5312],{"class":915},"\u002F\u002F 引用类型：传递的是引用的副本（指向同一对象）\n",[909,5314,5315,5317,5319,5321,5323,5325],{"class":911,"line":953},[909,5316,1304],{"class":982},[909,5318,4843],{"class":982},[909,5320,5279],{"class":1803},[909,5322,2387],{"class":1062},[909,5324,1059],{"class":982},[909,5326,5327],{"class":1062},"[] arr) {\n",[909,5329,5330,5333,5335,5337,5339,5341,5343],{"class":911,"line":958},[909,5331,5332],{"class":1062},"    arr[",[909,5334,1484],{"class":1612},[909,5336,4185],{"class":1062},[909,5338,1609],{"class":982},[909,5340,1613],{"class":1612},[909,5342,1859],{"class":1062},[909,5344,5345],{"class":915},"\u002F\u002F 会修改数组内容\n",[909,5347,5348,5351,5353,5355,5357,5359,5361,5363,5365,5367,5369,5372],{"class":911,"line":964},[909,5349,5350],{"class":1062},"    arr ",[909,5352,1609],{"class":982},[909,5354,1800],{"class":982},[909,5356,4034],{"class":982},[909,5358,4037],{"class":1062},[909,5360,1773],{"class":1612},[909,5362,1776],{"class":1062},[909,5364,1779],{"class":1612},[909,5366,1776],{"class":1062},[909,5368,1784],{"class":1612},[909,5370,5371],{"class":1062},"};  ",[909,5373,5374],{"class":915},"\u002F\u002F 不影响外部引用\n",[909,5376,5377],{"class":911,"line":970},[909,5378,3044],{"class":1062},[5380,5381,5382],"style",{},"html pre.shiki code .sCsY4, html code.shiki .sCsY4{--shiki-light:#6A737D;--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .s8jYJ, html code.shiki .s8jYJ{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sP4rz, html code.shiki .sP4rz{--shiki-light:#E36209;--shiki-default:#E36209;--shiki-dark:#FFAB70}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sxrX7, html code.shiki .sxrX7{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sBjJW, html code.shiki .sBjJW{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sIIMD, html code.shiki .sIIMD{--shiki-light:#032F62;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .snPdu, html code.shiki .snPdu{--shiki-light:#6F42C1;--shiki-default:#6F42C1;--shiki-dark:#B392F0}",{"title":11,"searchDepth":922,"depth":922,"links":5384},[5385,5386,5390,5391,5397,5406,5413,5419],{"id":894,"depth":922,"text":894},{"id":1014,"depth":922,"text":1014,"children":5387},[5388,5389],{"id":1018,"depth":929,"text":1018},{"id":1119,"depth":929,"text":1119},{"id":1208,"depth":922,"text":1208},{"id":1229,"depth":922,"text":1229,"children":5392},[5393,5394,5395,5396],{"id":1446,"depth":929,"text":1446},{"id":1734,"depth":929,"text":1734},{"id":1834,"depth":929,"text":1834},{"id":2004,"depth":929,"text":2004},{"id":2172,"depth":922,"text":2172,"children":5398},[5399,5400,5401,5402,5403,5404,5405],{"id":2175,"depth":929,"text":2175},{"id":2398,"depth":929,"text":2398},{"id":2492,"depth":929,"text":2492},{"id":2651,"depth":929,"text":2651},{"id":2757,"depth":929,"text":2757},{"id":2855,"depth":929,"text":2855},{"id":2912,"depth":929,"text":2912},{"id":1259,"depth":922,"text":1259,"children":5407},[5408,5409,5410,5411,5412],{"id":3016,"depth":929,"text":3017},{"id":3164,"depth":929,"text":3165},{"id":3350,"depth":929,"text":3351},{"id":3573,"depth":929,"text":3574},{"id":3694,"depth":929,"text":3695},{"id":3947,"depth":922,"text":3947,"children":5414},[5415,5416,5417,5418],{"id":3950,"depth":929,"text":3950},{"id":4109,"depth":929,"text":4109},{"id":4302,"depth":929,"text":4302},{"id":4580,"depth":929,"text":4581},{"id":4793,"depth":922,"text":4793,"children":5420},[5421,5422,5423,5424],{"id":4796,"depth":929,"text":4796},{"id":4958,"depth":929,"text":4958},{"id":5121,"depth":929,"text":5121},{"id":5257,"depth":929,"text":5257},"md",{},{"title":398,"description":11},"other\u002Fjava\u002Fcore\u002Fbasic-grammar","RWuFIn0R8tcTa8qy3DqpnlsdoW1ljOdmpuC5eImvAMA",1775496426626]