[{"data":1,"prerenderedAt":10688},["ShallowReactive",2],{"post:\u002Fposts\u002Fjava\u002Fjava-basics-notes":3,"posts:ordered":10407},{"id":4,"title":5,"body":6,"category":10392,"cover":10393,"date":10394,"description":10395,"extension":10396,"featured":10397,"meta":10398,"navigation":476,"path":10399,"seo":10400,"series":10401,"seriesOrder":58,"stem":10402,"tags":10403,"__hash__":10406},"posts\u002Fposts\u002Fjava\u002Fjava-basics-notes.md","Java 基础语法笔记：从环境安装到方法与数组",{"type":7,"value":8,"toc":10199},"minimark",[9,16,21,24,27,32,41,44,82,85,89,97,102,105,108,115,141,148,157,161,168,172,175,188,200,203,287,299,303,306,313,320,323,327,331,334,357,361,364,370,373,379,382,388,392,396,407,551,554,563,567,573,585,588,600,603,614,617,621,625,628,631,635,649,651,655,659,663,683,687,694,703,710,715,718,853,856,892,903,934,937,940,949,966,969,1027,1037,1178,1182,1186,1193,1298,1302,1319,1326,1340,1420,1427,1435,1475,1481,1489,1500,1575,1583,1585,1589,1593,1633,1637,1663,1667,1692,1696,1719,1721,1725,1728,1741,1745,1844,1848,1870,1874,1895,1897,1901,1947,1951,2003,2005,2009,2012,2016,2076,2079,2104,2108,2145,2149,2178,2183,2187,2214,2218,2238,2240,2244,2274,2277,2353,2356,2371,2373,2377,2400,2402,2406,2410,2413,2433,2436,2438,2442,2475,2477,2485,2488,2514,2528,2531,2562,2575,2578,2634,2637,2683,2703,2705,2712,2715,2749,2757,2761,2766,2836,2841,3003,3010,3012,3018,3040,3092,3102,3109,3136,3206,3215,3217,3224,3231,3238,3315,3321,3328,3434,3437,3439,3446,3460,3464,3538,3542,3586,3590,3720,3723,3865,3867,3871,3874,3882,3887,3908,3913,3927,3932,4034,4039,4122,4124,4131,4135,4161,4165,4178,4183,4274,4276,4283,4287,4307,4312,4331,4335,4349,4354,4402,4407,4483,4488,4547,4555,4615,4617,4624,4627,4631,4657,4662,4731,4733,4737,4740,4744,4855,4857,4863,4866,4870,4957,4959,4963,4971,4975,5025,5028,5049,5051,5055,5073,5078,5140,5142,5146,5224,5233,5235,5239,5246,5261,5265,5309,5313,5401,5408,5469,5471,5478,5488,5492,5542,5544,5548,5552,5566,5583,5596,5620,5624,5647,5678,5680,5684,5687,5780,5783,5820,5822,5828,5848,5850,5854,5895,5897,5901,5980,5982,5986,5993,5996,6031,6038,6041,6073,6080,6091,6153,6160,6167,6231,6238,6241,6255,6334,6345,6348,6396,6403,6406,6460,6467,6482,6522,6529,6536,6593,6603,6606,6659,6661,6665,6686,6690,6710,6765,6769,6801,6885,6887,6891,6996,7000,7013,7126,7128,7132,7174,7179,7187,7189,7193,7197,7200,7229,7232,7260,7263,7288,7292,7295,7409,7412,7447,7457,7461,7464,7502,7508,7551,7555,7640,7644,7943,7945,7949,7953,7991,7994,8022,8026,8029,8101,8104,8171,8174,8229,8233,8251,8361,8365,8368,8454,8456,8460,8463,8467,8481,8485,8499,8503,8511,8515,8522,8567,8569,8573,8577,8581,8600,8604,8628,8632,8649,8653,8678,8680,8684,8688,8696,8700,8715,8719,8739,8741,8778,8782,8859,8864,8866,8870,8874,8888,8892,8911,8915,8964,9006,9013,9049,9053,9056,9134,9137,9230,9233,9239,9339,9342,9344,9348,9409,9411,9576,9578,9582,9586,9594,9632,9635,9639,9650,9710,9713,9715,9719,9722,9726,9740,9744,9780,9784,9803,9807,9815,9817,9821,10079,10106,10108,10112,10143,10147,10161,10163,10167,10195],[10,11,12],"blockquote",{},[13,14,15],"p",{},"这是一份个人学习笔记：讲解部分是我按自己的理解写的，示例代码也都是自己写的，输出结果是本地跑出来的。参考主要是 Oracle 的 Java 官方文档与语言规范，理解有偏差的地方欢迎指出。",[17,18,20],"h1",{"id":19},"_00-java的安装","0.0 Java的安装",[13,22,23],{},"Java需要理解JDK\\JRE\\JVM的概念，JDK是Java Development Kit用于开发，其中包含了Jre",[13,25,26],{},"而Jre则只包含了运行java程序最小的运行环境，不能用于编译开发；JVM是JAVA虚拟机的意思，它是JAVA程序能够跨平台使用的基础。",[28,29,31],"h2",{"id":30},"_01-下载java-jdk","0.1 下载Java JDK：",[13,33,34,35],{},"Oracle官网: ",[36,37,38],"a",{"href":38,"rel":39},"http:\u002F\u002Fwww.oracle.com\u002Ftechnetwork\u002Fjava\u002Fjavase\u002Fdownloads\u002F",[40],"nofollow",[13,42,43],{},"这里选择",[45,46,51],"pre",{"className":47,"code":48,"language":49,"meta":50,"style":50},"language-bash shiki shiki-themes github-light github-dark"," JDK 17, for Windows, download x64 Installer.\n","bash","",[52,53,54],"code",{"__ignoreMap":50},[55,56,59,63,67,70,73,76,79],"span",{"class":57,"line":58},"line",1,[55,60,62],{"class":61},"sScJk"," JDK",[55,64,66],{"class":65},"sZZnC"," 17,",[55,68,69],{"class":65}," for",[55,71,72],{"class":65}," Windows,",[55,74,75],{"class":65}," download",[55,77,78],{"class":65}," x64",[55,80,81],{"class":65}," Installer.\n",[13,83,84],{},"也可以选择更新版本",[28,86,88],{"id":87},"_02-配置安装环境","0.2 配置安装环境",[13,90,91,92,96],{},"较高版本的java会自动设置环境变量，可以根据验证",[36,93,95],{"href":94},"#023-%E6%A3%80%E6%9F%A5%E5%AE%89%E8%A3%85%E6%98%AF%E5%90%A6%E6%88%90%E5%8A%9F","安装章节","是否成功进行验证。",[98,99,101],"h3",{"id":100},"_021-windows下配置环境","0.2.1 Windows下配置环境",[13,103,104],{},"第一步：打开系统设置中的“环境变量”并编辑“系统变量”",[13,106,107],{},"第二步: 点击”环境变量“按钮，并点击”高级“",[13,109,110,111,114],{},"第三步: 新建并设置",[52,112,113],{},"JAVA_HOME"," 的值为Java安装的路径. 默认情况下, 安装路径是：",[45,116,118],{"className":47,"code":117,"language":49,"meta":50,"style":50}," C:\\Program Files\\Java\\jdk-17\n",[52,119,120],{"__ignoreMap":50},[55,121,122,125,128,132,135,138],{"class":57,"line":58},[55,123,124],{"class":61}," C:\\Program",[55,126,127],{"class":65}," Files",[55,129,131],{"class":130},"sj4cs","\\J",[55,133,134],{"class":65},"ava",[55,136,137],{"class":130},"\\j",[55,139,140],{"class":65},"dk-17\n",[13,142,143,144,147],{},"第四步：在系统变量中找到",[52,145,146],{},"Path","，然后在Path中添加：",[45,149,151],{"className":47,"code":150,"language":49,"meta":50,"style":50},"%JAVA_HOME%\\bin\n",[52,152,153],{"__ignoreMap":50},[55,154,155],{"class":57,"line":58},[55,156,150],{"class":61},[98,158,160],{"id":159},"_022-linuxubuntu下安装并配置环境","0.2.2 Linux（Ubuntu）下安装并配置环境",[13,162,163,167],{},[164,165,166],"del",{},"自己去查AI吧哈哈。"," 还没写呢。",[98,169,171],{"id":170},"_023-检查安装是否成功","0.2.3 检查安装是否成功。",[13,173,174],{},"打开cmd或终端，输入:",[45,176,178],{"className":47,"code":177,"language":49,"meta":50,"style":50},"java -version\n",[52,179,180],{"__ignoreMap":50},[55,181,182,185],{"class":57,"line":58},[55,183,184],{"class":61},"java",[55,186,187],{"class":130}," -version\n",[45,189,191],{"className":47,"code":190,"language":49,"meta":50,"style":50},"javac -version\n",[52,192,193],{"__ignoreMap":50},[55,194,195,198],{"class":57,"line":58},[55,196,197],{"class":61},"javac",[55,199,187],{"class":130},[13,201,202],{},"得到类似以下输出，即可视为安装成功了：",[45,204,206],{"className":47,"code":205,"language":49,"meta":50,"style":50},"java version \"17.0.16\" 2025-07-15 LTS\nJava(TM) SE Runtime Environment (build 17.0.16+12-LTS-247)\nJava HotSpot(TM) 64-Bit Server VM (build 17.0.16+12-LTS-247, mixed mode, sharing)\n",[52,207,208,224,243],{"__ignoreMap":50},[55,209,210,212,215,218,221],{"class":57,"line":58},[55,211,184],{"class":61},[55,213,214],{"class":65}," version",[55,216,217],{"class":65}," \"17.0.16\"",[55,219,220],{"class":65}," 2025-07-15",[55,222,223],{"class":65}," LTS\n",[55,225,227,230,234,237,240],{"class":57,"line":226},2,[55,228,229],{"class":61},"Java(TM",[55,231,233],{"class":232},"sVt8B",") SE Runtime Environment (",[55,235,236],{"class":61},"build",[55,238,239],{"class":65}," 17.0.16+12-LTS-247",[55,241,242],{"class":232},")\n",[55,244,246,249,252,255,258,261,264,267,270,273,276,279,282,285],{"class":57,"line":245},3,[55,247,248],{"class":61},"Java",[55,250,251],{"class":65}," HotSpot",[55,253,254],{"class":232},"(",[55,256,257],{"class":61},"TM",[55,259,260],{"class":232},") ",[55,262,263],{"class":65},"64-Bit",[55,265,266],{"class":65}," Server",[55,268,269],{"class":65}," VM",[55,271,272],{"class":232}," (build ",[55,274,275],{"class":65},"17.0.16+12-LTS-247,",[55,277,278],{"class":65}," mixed",[55,280,281],{"class":65}," mode,",[55,283,284],{"class":65}," sharing",[55,286,242],{"class":232},[45,288,290],{"className":47,"code":289,"language":49,"meta":50,"style":50},"javac 17.0.16\n",[52,291,292],{"__ignoreMap":50},[55,293,294,296],{"class":57,"line":58},[55,295,197],{"class":61},[55,297,298],{"class":130}," 17.0.16\n",[28,300,302],{"id":301},"_03-安装ide","0.3 安装IDE",[13,304,305],{},"IDE可以理解成多功能方便编辑和调试代码的记事本。",[13,307,308,309],{},"欧洲人最爱用的IDE Eclipse： ",[36,310,311],{"href":311,"rel":312},"https:\u002F\u002Fwww.eclipse.org\u002Fdownloads\u002F",[40],[13,314,315,316],{},"JerBrain 出品的IDEA（网址是CN区的，可以快速下载）: ",[36,317,318],{"href":318,"rel":319},"https:\u002F\u002Fwww.jetbrains.com\u002Fzh-cn\u002Fidea\u002Fdownload\u002F",[40],[13,321,322],{},"微软出品的VS code也不错，这个基本都会下载了，不带链接了。",[17,324,326],{"id":325},"_1认识java","1.认识JAVA",[28,328,330],{"id":329},"_11-java的分类","1.1 JAVA的分类",[13,332,333],{},"Java 按运行环境分成三个版本：",[335,336,337,345,351],"ul",{},[338,339,340,344],"li",{},[341,342,343],"strong",{},"Java SE（Standard Edition）","：标准版，桌面和命令行程序用的基础组件都在这里，JVM、JRE、JDK 都属于它。",[338,346,347,350],{},[341,348,349],{},"Java EE（Enterprise Edition）","：企业版，在 SE 之上加了一批面向服务端的 API，适合做需要扩展的大型应用，通常部署在应用服务器里。它后来交给 Eclipse 基金会维护，现在叫 Jakarta EE。",[338,352,353,356],{},[341,354,355],{},"Java ME（Micro Edition）","：微型版，目标是很小的嵌入式和早期的移动设备，现在这块基本被 Android 接过去了。",[28,358,360],{"id":359},"_12-java的文档来自于甲骨文oracle","1.2 JAVA的文档（来自于甲骨文Oracle)",[13,362,363],{},"JAVA最新文档：",[13,365,366],{},[36,367,368],{"href":368,"rel":369},"http:\u002F\u002Fwww.oracle.com\u002Ftechnetwork\u002Fjava\u002Fjavase\u002Fdocumentation\u002F",[40],[13,371,372],{},"The Java Tutorials (from Oracle)",[13,374,375],{},[36,376,377],{"href":377,"rel":378},"http:\u002F\u002Fdocs.oracle.com\u002Fjavase\u002Ftutorial\u002F",[40],[13,380,381],{},"Java SE API(链接中17意思是Java 17的SE官方文档)",[13,383,384],{},[36,385,386],{"href":386,"rel":387},"http:\u002F\u002Fdocs.oracle.com\u002Fjavase\u002F17\u002Fdocs\u002Fapi\u002F",[40],[28,389,391],{"id":390},"_13-java程序的编译与使用","1.3 JAVA程序的编译与使用",[98,393,395],{"id":394},"_131-java源代码","1.3.1 Java源代码",[13,397,398,399,402,403,406],{},"后缀名为 ",[52,400,401],{},".java"," 的文件就是 Java 源代码。下面这段例子保存为 ",[52,404,405],{},"HelloWorld.java","：",[45,408,411],{"className":409,"code":410,"language":184,"meta":50,"style":50},"language-java shiki shiki-themes github-light github-dark","public class HelloWorld {\n    \u002F\u002F 实例方法：要先创建对象才能调用\n    public void printMessage() {\n        System.out.println(\"Hello, world!\");\n    }\n\n    \u002F\u002F 类方法（static）：JVM 从 main 开始执行\n    public static void main(String[] args) {\n        HelloWorld app = new HelloWorld();\n        app.printMessage();\n    }\n}\n",[52,412,413,428,434,448,465,471,478,484,512,529,540,545],{"__ignoreMap":50},[55,414,415,419,422,425],{"class":57,"line":58},[55,416,418],{"class":417},"szBVR","public",[55,420,421],{"class":417}," class",[55,423,424],{"class":61}," HelloWorld",[55,426,427],{"class":232}," {\n",[55,429,430],{"class":57,"line":226},[55,431,433],{"class":432},"sJ8bj","    \u002F\u002F 实例方法：要先创建对象才能调用\n",[55,435,436,439,442,445],{"class":57,"line":245},[55,437,438],{"class":417},"    public",[55,440,441],{"class":417}," void",[55,443,444],{"class":61}," printMessage",[55,446,447],{"class":232},"() {\n",[55,449,451,454,457,459,462],{"class":57,"line":450},4,[55,452,453],{"class":232},"        System.out.",[55,455,456],{"class":61},"println",[55,458,254],{"class":232},[55,460,461],{"class":65},"\"Hello, world!\"",[55,463,464],{"class":232},");\n",[55,466,468],{"class":57,"line":467},5,[55,469,470],{"class":232},"    }\n",[55,472,474],{"class":57,"line":473},6,[55,475,477],{"emptyLinePlaceholder":476},true,"\n",[55,479,481],{"class":57,"line":480},7,[55,482,483],{"class":432},"    \u002F\u002F 类方法（static）：JVM 从 main 开始执行\n",[55,485,487,489,492,494,497,499,502,505,509],{"class":57,"line":486},8,[55,488,438],{"class":417},[55,490,491],{"class":417}," static",[55,493,441],{"class":417},[55,495,496],{"class":61}," main",[55,498,254],{"class":232},[55,500,501],{"class":417},"String",[55,503,504],{"class":232},"[] ",[55,506,508],{"class":507},"s4XuR","args",[55,510,511],{"class":232},") {\n",[55,513,515,518,521,524,526],{"class":57,"line":514},9,[55,516,517],{"class":232},"        HelloWorld app ",[55,519,520],{"class":417},"=",[55,522,523],{"class":417}," new",[55,525,424],{"class":61},[55,527,528],{"class":232},"();\n",[55,530,532,535,538],{"class":57,"line":531},10,[55,533,534],{"class":232},"        app.",[55,536,537],{"class":61},"printMessage",[55,539,528],{"class":232},[55,541,543],{"class":57,"line":542},11,[55,544,470],{"class":232},[55,546,548],{"class":57,"line":547},12,[55,549,550],{"class":232},"}\n",[13,552,553],{},"你可以从代码和命名方式中发现：",[555,556,557,560],"ol",{},[338,558,559],{},"文件名与类名相同",[338,561,562],{},"一个类中可以有多个方法，其中可以包含一个main方法，有了main方法后，main方法中的代码会在程序中执行，其他方法则需要在main中调用才能执行。",[28,564,566],{"id":565},"_132-java源代码的编译","1.3.2 Java源代码的编译",[13,568,569,570,572],{},"在命令行中，使用",[52,571,197],{},"命令对java源代码进行编译，得到.class文件",[45,574,576],{"className":47,"code":575,"language":49,"meta":50,"style":50},"javac HelloWorld.java\n",[52,577,578],{"__ignoreMap":50},[55,579,580,582],{"class":57,"line":58},[55,581,197],{"class":61},[55,583,584],{"class":65}," HelloWorld.java\n",[13,586,587],{},"class文件可以使用Java命令执行，不要带后缀名",[45,589,591],{"className":47,"code":590,"language":49,"meta":50,"style":50},"java HelloWorld\n",[52,592,593],{"__ignoreMap":50},[55,594,595,597],{"class":57,"line":58},[55,596,184],{"class":61},[55,598,599],{"class":65}," HelloWorld\n",[13,601,602],{},"输出结果:",[45,604,608],{"className":605,"code":606,"language":607,"meta":50,"style":50},"language-context shiki shiki-themes github-light github-dark","Hello World!\n","context",[52,609,610],{"__ignoreMap":50},[55,611,612],{"class":57,"line":58},[55,613,606],{},[615,616],"hr",{},[17,618,620],{"id":619},"_2认识ide","2.认识IDE",[28,622,624],{"id":623},"_21认识eclipse","2.1认识eclipse",[13,626,627],{},"eclipse是一款老牌编译器，其开源小巧，功能简单而全面，配置没有那么复杂，适合新手深入学习。",[13,629,630],{},"具体使用可以查找网上教程，不在此赘述。",[28,632,634],{"id":633},"_211-debug步骤","2.1.1 Debug步骤",[555,636,637,640,643,646],{},[338,638,639],{},"在怀疑出问题的行上点一下，下个断点。",[338,641,642],{},"用 Debug 模式启动（不是 Run），程序会停在断点处。",[338,644,645],{},"用 Step-over 一行行往下走，同时盯住 Variables 面板里各个变量的值。",[338,647,648],{},"想跳过不关心的代码就 Resume，想让程序停在某一行就用 Run-to-Line，查完直接 Terminate。",[615,650],{},[17,652,654],{"id":653},"_3java的输入与输出","3.Java的输入与输出",[28,656,658],{"id":657},"_31-java程序的输出","3.1 Java程序的输出",[98,660,662],{"id":661},"_311常用输出指令","3.1.1常用输出指令",[335,664,665,671,677],{},[338,666,667,670],{},[52,668,669],{},"System.out.println();","换行输出",[338,672,673,676],{},[52,674,675],{},"System.out.print();","不换行输出",[338,678,679,682],{},[52,680,681],{},"System.out.printf(formatString,v1,v2);","按格式输出",[98,684,686],{"id":685},"_312-formatstring的使用","3.1.2 formatString的使用",[13,688,689,690,693],{},"我们使用",[52,691,692],{},"System.out.printf(\"姓名：%s，年龄：%d，成绩：%.2f%n\", \"张三\", 20, 92.345);","时，会得到这样的结果。",[45,695,697],{"className":605,"code":696,"language":607,"meta":50,"style":50},"姓名：张三，年龄：20，成绩：92.35\n",[52,698,699],{"__ignoreMap":50},[55,700,701],{"class":57,"line":58},[55,702,696],{},[13,704,705,706,709],{},"实际上，",[52,707,708],{},"%s","这种属于格式说明符，其格式为：",[13,711,712],{},[52,713,714],{},"%[argument_index$][flags][width][.precision]conversion",[13,716,717],{},"各部分含义：",[719,720,721,737],"table",{},[722,723,724],"thead",{},[725,726,727,731,734],"tr",{},[728,729,730],"th",{},"部分",[728,732,733],{},"说明",[728,735,736],{},"示例",[738,739,740,756,771,796,811,829],"tbody",{},[725,741,742,748,751],{},[743,744,745],"td",{},[52,746,747],{},"%",[743,749,750],{},"格式说明符开始",[743,752,753],{},[52,754,755],{},"%d",[725,757,758,763,766],{},[743,759,760],{},[52,761,762],{},"argument_index$",[743,764,765],{},"参数索引，从 1 开始",[743,767,768],{},[52,769,770],{},"%2$s",[725,772,773,778,781],{},[743,774,775],{},[52,776,777],{},"flags",[743,779,780],{},"标志，控制符号、对齐、补零等",[743,782,783,786,787,786,790,786,793],{},[52,784,785],{},"-","、",[52,788,789],{},"+",[52,791,792],{},"0",[52,794,795],{},",",[725,797,798,803,806],{},[743,799,800],{},[52,801,802],{},"width",[743,804,805],{},"最小宽度",[743,807,808],{},[52,809,810],{},"%10d",[725,812,813,818,821],{},[743,814,815],{},[52,816,817],{},".precision",[743,819,820],{},"精度",[743,822,823,786,826],{},[52,824,825],{},"%.2f",[52,827,828],{},"%.5s",[725,830,831,836,839],{},[743,832,833],{},[52,834,835],{},"conversion",[743,837,838],{},"转换类型",[743,840,841,786,844,786,847,786,850],{},[52,842,843],{},"d",[52,845,846],{},"f",[52,848,849],{},"s",[52,851,852],{},"tY",[13,854,855],{},"默认情况下，格式说明符按顺序使用参数：",[45,857,859],{"className":409,"code":858,"language":184,"meta":50,"style":50},"System.out.printf(\"%s 和 %s%n\", \"A\", \"B\");\n\u002F\u002F A 和 B\n",[52,860,861,887],{"__ignoreMap":50},[55,862,863,866,869,871,874,877,880,882,885],{"class":57,"line":58},[55,864,865],{"class":232},"System.out.",[55,867,868],{"class":61},"printf",[55,870,254],{"class":232},[55,872,873],{"class":65},"\"%s 和 %s%n\"",[55,875,876],{"class":232},", ",[55,878,879],{"class":65},"\"A\"",[55,881,876],{"class":232},[55,883,884],{"class":65},"\"B\"",[55,886,464],{"class":232},[55,888,889],{"class":57,"line":226},[55,890,891],{"class":432},"\u002F\u002F A 和 B\n",[13,893,894,895,898,899,902],{},"也可以显式指定参数索引，格式为 ",[52,896,897],{},"%n$","，其中 ",[52,900,901],{},"n"," 从 1 开始：",[45,904,906],{"className":409,"code":905,"language":184,"meta":50,"style":50},"System.out.printf(\"%2$s 和 %1$s，再次 %2$s%n\", \"A\", \"B\");\n\u002F\u002F B 和 A，再次 B\n",[52,907,908,929],{"__ignoreMap":50},[55,909,910,912,914,916,919,921,923,925,927],{"class":57,"line":58},[55,911,865],{"class":232},[55,913,868],{"class":61},[55,915,254],{"class":232},[55,917,918],{"class":65},"\"%2$s 和 %1$s，再次 %2$s%n\"",[55,920,876],{"class":232},[55,922,879],{"class":65},[55,924,876],{"class":232},[55,926,884],{"class":65},[55,928,464],{"class":232},[55,930,931],{"class":57,"line":226},[55,932,933],{"class":432},"\u002F\u002F B 和 A，再次 B\n",[13,935,936],{},"建议不要混用显式索引和普通顺序参数，容易混乱。",[13,938,939],{},"3.1.3 DecimalFormat",[13,941,942,943,948],{},"实际上，Java已经提供了很多已有的工具，我们可以通过",[36,944,947],{"href":945,"rel":946},"https:\u002F\u002Fdocs.oracle.com\u002Fjavase\u002F17\u002Fdocs\u002Fapi\u002F",[40],"API网站","查询java的方法和特性，然后通过导入获取其信息。",[13,950,951,952,955,956,959,960,965],{},"需要按固定格式输出数字时，",[52,953,954],{},"DecimalFormat"," 比手写拼接省事，用之前先 ",[52,957,958],{},"import java.text.DecimalFormat;","。完整的构造器与方法列表以官方文档为准：",[36,961,964],{"href":962,"rel":963},"https:\u002F\u002Fdocs.oracle.com\u002Fen\u002Fjava\u002Fjavase\u002F17\u002Fdocs\u002Fapi\u002Fjava.base\u002Fjava\u002Ftext\u002FDecimalFormat.html",[40],"DecimalFormat（Java SE 17 API）","。",[13,967,968],{},"先跑一段看看效果（下面表格里的输出都是我在 JDK 21 上跑出来的）：",[45,970,972],{"className":409,"code":971,"language":184,"meta":50,"style":50},"double amount = 6543.21;\nDecimalFormat formatter = new DecimalFormat(\"#.##\");\nSystem.out.println(formatter.format(amount)); \u002F\u002F 6543.21\n",[52,973,974,990,1009],{"__ignoreMap":50},[55,975,976,979,982,984,987],{"class":57,"line":58},[55,977,978],{"class":417},"double",[55,980,981],{"class":232}," amount ",[55,983,520],{"class":417},[55,985,986],{"class":130}," 6543.21",[55,988,989],{"class":232},";\n",[55,991,992,995,997,999,1002,1004,1007],{"class":57,"line":226},[55,993,994],{"class":232},"DecimalFormat formatter ",[55,996,520],{"class":417},[55,998,523],{"class":417},[55,1000,1001],{"class":61}," DecimalFormat",[55,1003,254],{"class":232},[55,1005,1006],{"class":65},"\"#.##\"",[55,1008,464],{"class":232},[55,1010,1011,1013,1015,1018,1021,1024],{"class":57,"line":245},[55,1012,865],{"class":232},[55,1014,456],{"class":61},[55,1016,1017],{"class":232},"(formatter.",[55,1019,1020],{"class":61},"format",[55,1022,1023],{"class":232},"(amount)); ",[55,1025,1026],{"class":432},"\u002F\u002F 6543.21\n",[13,1028,1029,1030,1032,1033,1036],{},"pattern 里的 ",[52,1031,792],{}," 表示这一位必须显示（不够就补 0），",[52,1034,1035],{},"#"," 表示这一位有值才显示：",[719,1038,1039,1054],{},[722,1040,1041],{},[725,1042,1043,1046,1049,1052],{},[728,1044,1045],{},"pattern",[728,1047,1048],{},"6543.21 的结果",[728,1050,1051],{},"7 的结果",[728,1053,733],{},[738,1055,1056,1072,1087,1102,1118,1134,1149,1164],{},[725,1057,1058,1063,1066,1069],{},[743,1059,1060],{},[52,1061,1062],{},"\"#.#\"",[743,1064,1065],{},"6543.2",[743,1067,1068],{},"7",[743,1070,1071],{},"最多一位小数",[725,1073,1074,1079,1082,1084],{},[743,1075,1076],{},[52,1077,1078],{},"\"#.###\"",[743,1080,1081],{},"6543.21",[743,1083,1068],{},[743,1085,1086],{},"最多三位小数，末尾 0 不补",[725,1088,1089,1094,1096,1099],{},[743,1090,1091],{},[52,1092,1093],{},"\"0.0\"",[743,1095,1065],{},[743,1097,1098],{},"7.0",[743,1100,1101],{},"至少一位小数",[725,1103,1104,1109,1112,1115],{},[743,1105,1106],{},[52,1107,1108],{},"\"0.000\"",[743,1110,1111],{},"6543.210",[743,1113,1114],{},"7.000",[743,1116,1117],{},"至少三位小数，不够补 0",[725,1119,1120,1125,1128,1131],{},[743,1121,1122],{},[52,1123,1124],{},"\"0,000.00\"",[743,1126,1127],{},"6,543.21",[743,1129,1130],{},"0,007.00",[743,1132,1133],{},"千分位分组",[725,1135,1136,1141,1144,1146],{},[743,1137,1138],{},[52,1139,1140],{},"\"0\"",[743,1142,1143],{},"6543",[743,1145,1068],{},[743,1147,1148],{},"只保留整数部分",[725,1150,1151,1156,1158,1161],{},[743,1152,1153],{},[52,1154,1155],{},"\"000\"",[743,1157,1143],{},[743,1159,1160],{},"007",[743,1162,1163],{},"整数部分至少三位，不够补 0",[725,1165,1166,1171,1173,1175],{},[743,1167,1168],{},[52,1169,1170],{},"\"###\"",[743,1172,1143],{},[743,1174,1068],{},[743,1176,1177],{},"最多三位整数位，超出则全显示",[28,1179,1181],{"id":1180},"_32-java程序的输入","3.2 Java程序的输入",[98,1183,1185],{"id":1184},"_321-scanner","3.2.1 Scanner",[13,1187,1188,1189,1192],{},"Scanner是java传统输入方式，注意，使用",[52,1190,1191],{},"close","方法后再使用scanner输入会报错。",[45,1194,1196],{"className":409,"code":1195,"language":184,"meta":50,"style":50},"import java.util.Scanner; \u002F\u002FImport Scanner class\nScanner scanner = new Scanner(System.in); \u002F\u002FCreate a Scanner object\nString name = scanner.nextLine(); \u002F\u002FRead a String input\nint age = scanner.nextInt(); \u002F\u002FRead a int input\ndouble salary = scanner.nextDouble(); \u002F\u002FRead a double input\nscanner.close() \u002F\u002FClose the scanner\n",[52,1197,1198,1209,1227,1246,1266,1285],{"__ignoreMap":50},[55,1199,1200,1203,1206],{"class":57,"line":58},[55,1201,1202],{"class":417},"import",[55,1204,1205],{"class":232}," java.util.Scanner; ",[55,1207,1208],{"class":432},"\u002F\u002FImport Scanner class\n",[55,1210,1211,1214,1216,1218,1221,1224],{"class":57,"line":226},[55,1212,1213],{"class":232},"Scanner scanner ",[55,1215,520],{"class":417},[55,1217,523],{"class":417},[55,1219,1220],{"class":61}," Scanner",[55,1222,1223],{"class":232},"(System.in); ",[55,1225,1226],{"class":432},"\u002F\u002FCreate a Scanner object\n",[55,1228,1229,1232,1234,1237,1240,1243],{"class":57,"line":245},[55,1230,1231],{"class":232},"String name ",[55,1233,520],{"class":417},[55,1235,1236],{"class":232}," scanner.",[55,1238,1239],{"class":61},"nextLine",[55,1241,1242],{"class":232},"(); ",[55,1244,1245],{"class":432},"\u002F\u002FRead a String input\n",[55,1247,1248,1251,1254,1256,1258,1261,1263],{"class":57,"line":450},[55,1249,1250],{"class":417},"int",[55,1252,1253],{"class":232}," age ",[55,1255,520],{"class":417},[55,1257,1236],{"class":232},[55,1259,1260],{"class":61},"nextInt",[55,1262,1242],{"class":232},[55,1264,1265],{"class":432},"\u002F\u002FRead a int input\n",[55,1267,1268,1270,1273,1275,1277,1280,1282],{"class":57,"line":467},[55,1269,978],{"class":417},[55,1271,1272],{"class":232}," salary ",[55,1274,520],{"class":417},[55,1276,1236],{"class":232},[55,1278,1279],{"class":61},"nextDouble",[55,1281,1242],{"class":232},[55,1283,1284],{"class":432},"\u002F\u002FRead a double input\n",[55,1286,1287,1290,1292,1295],{"class":57,"line":473},[55,1288,1289],{"class":232},"scanner.",[55,1291,1191],{"class":61},[55,1293,1294],{"class":232},"() ",[55,1296,1297],{"class":432},"\u002F\u002FClose the scanner\n",[28,1299,1301],{"id":1300},"_33-io类-java-25的新特性","3.3 IO类-JAVA 25的新特性",[13,1303,1304,1311,1312,1315,1316,965],{},[341,1305,1306,1307,1310],{},"Java 25 正式引入了一个全新的 ",[52,1308,1309],{},"java.lang.IO"," 类","，专门用于简化控制台交互，旨在取代繁琐的 ",[52,1313,1314],{},"System.out.println()"," 和",[52,1317,1318],{},"Scanner",[13,1320,1321,1322,1325],{},"这个类是 Java 25 “",[341,1323,1324],{},"Paving the On-Ramp","”（铺设入门之路）计划的一部分，目的是让初学者和从其他语言转来的开发者能更轻松地编写 Java 程序。",[13,1327,1328,1331,1332,1335,1336,1339],{},[52,1329,1330],{},"IO"," 类提供了一组静态方法，并且因为它位于 ",[52,1333,1334],{},"java.lang"," 包下，所以",[341,1337,1338],{},"无需显式导入","即可直接使用。其主要方法对比如下：",[719,1341,1342,1357],{},[722,1343,1344],{},[725,1345,1346,1352,1355],{},[728,1347,1348,1349,1351],{},"新方法 (",[52,1350,1309],{},")",[728,1353,1354],{},"传统方法",[728,1356,733],{},[738,1358,1359,1374,1389,1403],{},[725,1360,1361,1366,1371],{},[743,1362,1363],{},[52,1364,1365],{},"IO.println(\"Hello\")",[743,1367,1368],{},[52,1369,1370],{},"System.out.println(\"Hello\")",[743,1372,1373],{},"输出并换行",[725,1375,1376,1381,1386],{},[743,1377,1378],{},[52,1379,1380],{},"IO.print(\"Hello\")",[743,1382,1383],{},[52,1384,1385],{},"System.out.print(\"Hello\")",[743,1387,1388],{},"输出但不换行",[725,1390,1391,1396,1400],{},[743,1392,1393],{},[52,1394,1395],{},"IO.println()",[743,1397,1398],{},[52,1399,1314],{},[743,1401,1402],{},"输出一个空行",[725,1404,1405,1410,1415],{},[743,1406,1407],{},[52,1408,1409],{},"IO.readln(\"Prompt: \")",[743,1411,1412],{},[52,1413,1414],{},"System.out.print(\"Prompt: \");``String s = scanner.nextLine();",[743,1416,1417],{},[341,1418,1419],{},"读取一行输入，并可同时显示提示信息",[98,1421,1423,1424],{"id":1422},"_331-输出告别-systemout","3.3.1. 输出：告别 ",[52,1425,1426],{},"System.out",[13,1428,1429,1430,1432,1433,965],{},"现在，你可以用更短的 ",[52,1431,1395],{}," 来代替 ",[52,1434,1314],{},[45,1436,1438],{"className":409,"code":1437,"language":184,"meta":50,"style":50},"\u002F\u002F 旧方式\nSystem.out.println(\"Hello, world!\");\n\u002F\u002F 新方式（Java 25+）\nIO.println(\"Hello, world!\");\n",[52,1439,1440,1445,1457,1462],{"__ignoreMap":50},[55,1441,1442],{"class":57,"line":58},[55,1443,1444],{"class":432},"\u002F\u002F 旧方式\n",[55,1446,1447,1449,1451,1453,1455],{"class":57,"line":226},[55,1448,865],{"class":232},[55,1450,456],{"class":61},[55,1452,254],{"class":232},[55,1454,461],{"class":65},[55,1456,464],{"class":232},[55,1458,1459],{"class":57,"line":245},[55,1460,1461],{"class":432},"\u002F\u002F 新方式（Java 25+）\n",[55,1463,1464,1467,1469,1471,1473],{"class":57,"line":450},[55,1465,1466],{"class":232},"IO.",[55,1468,456],{"class":61},[55,1470,254],{"class":232},[55,1472,461],{"class":65},[55,1474,464],{"class":232},[13,1476,1477,1478,965],{},"如果使用静态导入，代码甚至可以简化为 ",[52,1479,1480],{},"println(\"Hello, world!\");",[98,1482,1484,1485,1488],{"id":1483},"_332-输入ioreadln-一步到位","3.3.2. 输入：",[52,1486,1487],{},"IO.readln()"," 一步到位",[13,1490,1491,1492,1495,1496,1499],{},"这是最显著的改进。",[52,1493,1494],{},"IO.readln(String prompt)"," 方法",[341,1497,1498],{},"将“显示提示”和“读取输入”两个步骤合二为一","，代码更简洁直观。",[45,1501,1503],{"className":409,"code":1502,"language":184,"meta":50,"style":50},"\u002F\u002F 旧方式（用 Scanner）\nSystem.out.print(\"请输入您的姓名：\");\nScanner scanner = new Scanner(System.in);\nString name = scanner.nextLine();\n*\u002F\u002F 新方式 (Java 25+)*\nString name = IO.readln(\"请输入您的姓名：\");\n",[52,1504,1505,1510,1524,1537,1549,1557],{"__ignoreMap":50},[55,1506,1507],{"class":57,"line":58},[55,1508,1509],{"class":432},"\u002F\u002F 旧方式（用 Scanner）\n",[55,1511,1512,1514,1517,1519,1522],{"class":57,"line":226},[55,1513,865],{"class":232},[55,1515,1516],{"class":61},"print",[55,1518,254],{"class":232},[55,1520,1521],{"class":65},"\"请输入您的姓名：\"",[55,1523,464],{"class":232},[55,1525,1526,1528,1530,1532,1534],{"class":57,"line":245},[55,1527,1213],{"class":232},[55,1529,520],{"class":417},[55,1531,523],{"class":417},[55,1533,1220],{"class":61},[55,1535,1536],{"class":232},"(System.in);\n",[55,1538,1539,1541,1543,1545,1547],{"class":57,"line":450},[55,1540,1231],{"class":232},[55,1542,520],{"class":417},[55,1544,1236],{"class":232},[55,1546,1239],{"class":61},[55,1548,528],{"class":232},[55,1550,1551,1554],{"class":57,"line":467},[55,1552,1553],{"class":417},"*",[55,1555,1556],{"class":432},"\u002F\u002F 新方式 (Java 25+)*\n",[55,1558,1559,1561,1563,1566,1569,1571,1573],{"class":57,"line":473},[55,1560,1231],{"class":232},[55,1562,520],{"class":417},[55,1564,1565],{"class":232}," IO.",[55,1567,1568],{"class":61},"readln",[55,1570,254],{"class":232},[55,1572,1521],{"class":65},[55,1574,464],{"class":232},[10,1576,1577],{},[13,1578,1579,1580,1582],{},"补充一句来源：",[52,1581,1330],{}," 类是 Java 25 引入的，属于「Paving the On-Ramp」这一批改进（见 JEP 512）。我本地装的是 JDK 21，所以这段只是先把用法记下来，还没实际跑过。",[615,1584],{},[17,1586,1588],{"id":1587},"_4-java中的变量与运算","4  Java中的变量与运算",[28,1590,1592],{"id":1591},"_41-变量-variables","4.1. 变量 Variables",[335,1594,1595,1601,1609,1621],{},[338,1596,1597,1600],{},[341,1598,1599],{},"定义","：变量是命名的存储位置，包含名称、类型和值；值可以修改。",[338,1602,1603,406,1606],{},[341,1604,1605],{},"使用前必须先声明",[52,1607,1608],{},"类型 变量名;",[338,1610,1611,1614,1615,1617,1618],{},[341,1612,1613],{},"赋值","：用 ",[52,1616,520],{},"，如 ",[52,1619,1620],{},"radius = 5;",[338,1622,1623,1614,1626,1629,1630,965],{},[341,1624,1625],{},"常量",[52,1627,1628],{},"final"," 声明，只能赋值一次，命名习惯全大写加下划线，如 ",[52,1631,1632],{},"MAX_VALUE",[98,1634,1636],{"id":1635},"_411变量命名规则-identifier","4.1.1变量命名规则 Identifier",[335,1638,1639,1649,1652,1657,1660],{},[338,1640,1641,1642,1645,1646,965],{},"只能包含字母、数字、下划线 ",[52,1643,1644],{},"_","、美元符号 ",[52,1647,1648],{},"$",[338,1650,1651],{},"不能以数字开头。",[338,1653,1654,1655,965],{},"不能包含空格、连字符 ",[52,1656,785],{},[338,1658,1659],{},"不能使用 Java 关键字或保留字。",[338,1661,1662],{},"区分大小写。",[98,1664,1666],{"id":1665},"_412命名约定","4.1.2命名约定",[335,1668,1669,1675,1680],{},[338,1670,1671,1672,965],{},"变量名以小写开头，使用驼峰命名，如 ",[52,1673,1674],{},"numberOfStudents",[338,1676,1677,1678,965],{},"常量用全大写加下划线，如 ",[52,1679,1632],{},[338,1681,1682,1683,786,1685,786,1688,1691],{},"名字应具有描述性，避免 ",[52,1684,36],{},[52,1686,1687],{},"b",[52,1689,1690],{},"x"," 等无意义名称。",[98,1693,1695],{"id":1694},"_413变量声明","4.1.3变量声明",[335,1697,1698,1704,1710,1716],{},[338,1699,1700,1701],{},"可声明单个变量：",[52,1702,1703],{},"int sum;",[338,1705,1706,1707],{},"可一次声明多个同类型变量：",[52,1708,1709],{},"int number, count;",[338,1711,1712,1713],{},"可声明并初始化：",[52,1714,1715],{},"int magicNumber = 99;",[338,1717,1718],{},"类型一旦声明不能改变，Java 是静态类型语言。",[615,1720],{},[28,1722,1724],{"id":1723},"_42-数据类型-data-types","4.2. 数据类型 Data Types",[13,1726,1727],{},"Java 数据类型分两大类：",[335,1729,1730,1735],{},[338,1731,1732],{},[341,1733,1734],{},"基本类型 Primitive Types",[338,1736,1737,1740],{},[341,1738,1739],{},"引用类型 Reference Types","，如对象、数组、String",[98,1742,1744],{"id":1743},"_421-八种基本类型","4.2.1 八种基本类型",[719,1746,1747,1756],{},[722,1748,1749],{},[725,1750,1751,1754],{},[728,1752,1753],{},"类型",[728,1755,733],{},[738,1757,1758,1768,1778,1787,1797,1807,1816,1826],{},[725,1759,1760,1765],{},[743,1761,1762],{},[52,1763,1764],{},"byte",[743,1766,1767],{},"8 位有符号整数，范围 -128 到 127",[725,1769,1770,1775],{},[743,1771,1772],{},[52,1773,1774],{},"short",[743,1776,1777],{},"16 位有符号整数",[725,1779,1780,1784],{},[743,1781,1782],{},[52,1783,1250],{},[743,1785,1786],{},"32 位有符号整数，常用",[725,1788,1789,1794],{},[743,1790,1791],{},[52,1792,1793],{},"long",[743,1795,1796],{},"64 位有符号整数",[725,1798,1799,1804],{},[743,1800,1801],{},[52,1802,1803],{},"float",[743,1805,1806],{},"32 位单精度浮点数",[725,1808,1809,1813],{},[743,1810,1811],{},[52,1812,978],{},[743,1814,1815],{},"64 位双精度浮点数，常用",[725,1817,1818,1823],{},[743,1819,1820],{},[52,1821,1822],{},"char",[743,1824,1825],{},"16 位 Unicode 字符，可参与整数运算",[725,1827,1828,1833],{},[743,1829,1830],{},[52,1831,1832],{},"boolean",[743,1834,1835,1836,1839,1840,1843],{},"只能为 ",[52,1837,1838],{},"true"," 或 ",[52,1841,1842],{},"false","，不能参与算术运算",[98,1845,1847],{"id":1846},"_422-string","4.2.2 String",[335,1849,1850,1855],{},[338,1851,1852,1854],{},[52,1853,501],{}," 不是基本类型，而是引用类型。",[338,1856,1857,1859,1860,1863,1864,1866,1867,965],{},[52,1858,1822],{}," 用单引号，如 ",[52,1861,1862],{},"'A'","；",[52,1865,501],{}," 用双引号，如 ",[52,1868,1869],{},"\"Hello\"",[98,1871,1873],{"id":1872},"_423-类型选择","4.2.3 类型选择",[335,1875,1876,1884],{},[338,1877,1878,1879,1881,1882,965],{},"整数一般用 ",[52,1880,1250],{},"，小数一般用 ",[52,1883,978],{},[338,1885,1886,1888,1889,1891,1892,1894],{},[52,1887,1822],{}," 用于单个字符，",[52,1890,501],{}," 用于文本，",[52,1893,1832],{}," 用于真假判断。",[615,1896],{},[28,1898,1900],{"id":1899},"_43-类型转换-type-casting","4.3. 类型转换 Type Casting",[335,1902,1903,1924,1942],{},[338,1904,1905,1908,1911,1912,1915,1917,1918,1920,1921,1923],{},[341,1906,1907],{},"自动类型转换 \u002F 拓宽转换 Widening Casting",[1909,1910],"br",{},"\n小类型自动转大类型：",[52,1913,1914],{},"byte → short → char → int → long → float → double",[1909,1916],{},"\n如 ",[52,1919,1250],{}," 赋给 ",[52,1922,978],{}," 可以自动完成。",[338,1925,1926,1929,1931,1932,1617,1935,1938,1939,965],{},[341,1927,1928],{},"强制类型转换 \u002F 窄化转换 Narrowing Casting",[1909,1930],{},"\n大类型转小类型需显式加 ",[52,1933,1934],{},"(类型)",[52,1936,1937],{},"(int) 68.2","，结果会截断为 ",[52,1940,1941],{},"68",[338,1943,1944,1946],{},[52,1945,1832],{}," 不能进行类型转换。",[98,1948,1950],{"id":1949},"_431-string-与基本类型转换","4.3.1 String 与基本类型转换",[335,1952,1953,1978],{},[338,1954,1955,1956],{},"String 转基本类型：\n",[335,1957,1958,1963,1968,1973],{},[338,1959,1960],{},[52,1961,1962],{},"Integer.parseInt(\"1234\")",[338,1964,1965],{},[52,1966,1967],{},"Double.parseDouble(\"1.2345\")",[338,1969,1970],{},[52,1971,1972],{},"Float.parseFloat(...)",[338,1974,1975],{},[52,1976,1977],{},"Boolean.parseBoolean(...)",[338,1979,1980,1981],{},"基本类型转 String：\n",[335,1982,1983,1989,1994],{},[338,1984,1985,1986],{},"用 ",[52,1987,1988],{},"+ \"\"",[338,1990,1991],{},[52,1992,1993],{},"String.valueOf(...)",[338,1995,1996,786,1999,2002],{},[52,1997,1998],{},"Integer.toString(...)",[52,2000,2001],{},"Double.toString(...)"," 等",[615,2004],{},[28,2006,2008],{"id":2007},"_4-4表达式与运算符-expressions-and-operators","4. 4表达式与运算符 Expressions and Operators",[13,2010,2011],{},"表达式由运算符和操作数组成，求值后得到一个值。",[98,2013,2015],{"id":2014},"_441-数学运算符","4.4.1 数学运算符",[719,2017,2018,2028],{},[722,2019,2020],{},[725,2021,2022,2025],{},[728,2023,2024],{},"运算符",[728,2026,2027],{},"含义",[738,2029,2030,2039,2048,2057,2067],{},[725,2031,2032,2036],{},[743,2033,2034],{},[52,2035,789],{},[743,2037,2038],{},"加法，也可用于字符串拼接",[725,2040,2041,2045],{},[743,2042,2043],{},[52,2044,785],{},[743,2046,2047],{},"减法",[725,2049,2050,2054],{},[743,2051,2052],{},[52,2053,1553],{},[743,2055,2056],{},"乘法",[725,2058,2059,2064],{},[743,2060,2061],{},[52,2062,2063],{},"\u002F",[743,2065,2066],{},"除法；整数除法会截断",[725,2068,2069,2073],{},[743,2070,2071],{},[52,2072,747],{},[743,2074,2075],{},"取余",[13,2077,2078],{},"注意：",[335,2080,2081,2091,2098],{},[338,2082,2083,2084,2087,2088,965],{},"Java 没有 ",[52,2085,2086],{},"^"," 幂运算符，求幂要用 ",[52,2089,2090],{},"Math.pow(x, y)",[338,2092,2093,2094,2097],{},"如果操作数类型不同，会按 ",[52,2095,2096],{},"int → long → float → double"," 自动提升。",[338,2099,2100,2101,2103],{},"字符串与 ",[52,2102,789],{}," 一起使用时表示拼接。",[98,2105,2107],{"id":2106},"_442-一元运算符","4.4.2 一元运算符",[335,2109,2110,2118,2128],{},[338,2111,2112,2113,2115,2116],{},"一元正号 ",[52,2114,789],{},"、一元负号 ",[52,2117,785],{},[338,2119,2120,2121,2124,2125],{},"自增 ",[52,2122,2123],{},"++","、自减 ",[52,2126,2127],{},"--",[338,2129,2130,2131],{},"前缀与后缀有区别：\n",[335,2132,2133,2139],{},[338,2134,2135,2138],{},[52,2136,2137],{},"y = ++x;"," 先加，再赋值",[338,2140,2141,2144],{},[52,2142,2143],{},"y = x++;"," 先赋值，再加",[98,2146,2148],{"id":2147},"_443-运算符优先级","4.4.3 运算符优先级",[555,2150,2151,2162,2171],{},[338,2152,2153,2154,786,2156,786,2158,786,2160],{},"一元运算符：",[52,2155,789],{},[52,2157,785],{},[52,2159,2123],{},[52,2161,2127],{},[338,2163,2164,2165,786,2167,786,2169],{},"乘除取余：",[52,2166,1553],{},[52,2168,2063],{},[52,2170,747],{},[338,2172,2173,2174,786,2176],{},"加减：",[52,2175,789],{},[52,2177,785],{},[335,2179,2180],{},[338,2181,2182],{},"同级从左到右，可用括号改变优先级。",[98,2184,2186],{"id":2185},"_444-比较运算符","4.4.4 比较运算符",[13,2188,2189,786,2192,786,2195,786,2198,786,2201,786,2204,2207,2209,2210,1839,2212,965],{},[52,2190,2191],{},"\u003C",[52,2193,2194],{},">",[52,2196,2197],{},"\u003C=",[52,2199,2200],{},">=",[52,2202,2203],{},"==",[52,2205,2206],{},"!=",[1909,2208],{},"\n结果都是 ",[52,2211,1838],{},[52,2213,1842],{},[98,2215,2217],{"id":2216},"_445-逻辑运算符","4.4.5 逻辑运算符",[335,2219,2220,2226,2232],{},[338,2221,2222,2225],{},[52,2223,2224],{},"&&"," 与",[338,2227,2228,2231],{},[52,2229,2230],{},"||"," 或",[338,2233,2234,2237],{},[52,2235,2236],{},"!"," 非\n用于组合多个条件，操作数为布尔值。",[615,2239],{},[28,2241,2243],{"id":2242},"_45-math-类","4.5. Math 类",[335,2245,2246,2258,2265],{},[338,2247,2248,2251,2252,2254,2255,965],{},[52,2249,2250],{},"Math"," 类位于 ",[52,2253,1334],{},"，所有方法都是 ",[52,2256,2257],{},"static",[338,2259,2260,2261,2264],{},"直接通过 ",[52,2262,2263],{},"Math.方法名(...)"," 调用。",[338,2266,2267,2268,786,2271,965],{},"常量：",[52,2269,2270],{},"Math.PI",[52,2272,2273],{},"Math.E",[13,2275,2276],{},"常用方法：",[335,2278,2279,2285,2291,2297,2303,2309,2315,2321,2327,2333,2341],{},[338,2280,2281,2284],{},[52,2282,2283],{},"abs(x)"," 绝对值",[338,2286,2287,2290],{},[52,2288,2289],{},"sqrt(x)"," 平方根",[338,2292,2293,2296],{},[52,2294,2295],{},"pow(x, y)"," x 的 y 次方",[338,2298,2299,2302],{},[52,2300,2301],{},"exp(x)"," e 的 x 次方",[338,2304,2305,2308],{},[52,2306,2307],{},"log(x)"," 自然对数",[338,2310,2311,2314],{},[52,2312,2313],{},"log10(x)"," 以 10 为底对数",[338,2316,2317,2320],{},[52,2318,2319],{},"ceil(x)"," 向上取整",[338,2322,2323,2326],{},[52,2324,2325],{},"floor(x)"," 向下取整",[338,2328,2329,2332],{},[52,2330,2331],{},"round(x)"," 四舍五入",[338,2334,2335,786,2338],{},[52,2336,2337],{},"max(x, y)",[52,2339,2340],{},"min(x, y)",[338,2342,2343,786,2346,786,2349,2352],{},[52,2344,2345],{},"sin(x)",[52,2347,2348],{},"cos(x)",[52,2350,2351],{},"tan(x)"," 等三角函数",[13,2354,2355],{},"使用形式：",[45,2357,2359],{"className":409,"code":2358,"language":184,"meta":50,"style":50},"变量 = Math.方法名(参数);\n",[52,2360,2361],{"__ignoreMap":50},[55,2362,2363,2366,2368],{"class":57,"line":58},[55,2364,2365],{"class":232},"变量 ",[55,2367,520],{"class":417},[55,2369,2370],{"class":232}," Math.方法名(参数);\n",[615,2372],{},[28,2374,2376],{"id":2375},"_46-其他重点","4.6. 其他重点",[335,2378,2379,2385,2394],{},[338,2380,2381,2384],{},[341,2382,2383],{},"初始化","：Java 要求变量在使用前必须有确定的值，否则可能编译错误。",[338,2386,2387,2390,2391,2393],{},[341,2388,2389],{},"溢出 Overflow","：整数超过范围会回绕，如 ",[52,2392,1250],{}," 最大值加 1 变成最小值。",[338,2395,2396,2399],{},[341,2397,2398],{},"总结","：本讲覆盖了变量、字面量、表达式、八种基本类型、String、类型转换、赋值、数学运算符、自增自减、比较运算符、逻辑运算符以及 Math 类。",[615,2401],{},[17,2403,2405],{"id":2404},"_5-基础条件控制语句","5. 基础条件控制语句",[28,2407,2409],{"id":2408},"_51-三种基本流程控制","5.1 三种基本流程控制",[13,2411,2412],{},"Java中有三种基本控制结构：",[555,2414,2415,2421,2427],{},[338,2416,2417,2420],{},[341,2418,2419],{},"顺序 Sequential","：语句从上到下依次执行，最常见、最直接。",[338,2422,2423,2426],{},[341,2424,2425],{},"条件 Conditional \u002F Decision","：根据条件判断，选择执行某条路径。",[338,2428,2429,2432],{},[341,2430,2431],{},"循环 Loop \u002F Iteration","：重复执行某段代码。",[13,2434,2435],{},"本讲重点是第二种：条件控制。",[615,2437],{},[28,2439,2441],{"id":2440},"_52-条件语句的定义","5.2 条件语句的定义",[335,2443,2444,2450,2460,2466],{},[338,2445,2446,2447,965],{},"条件语句允许程序",[341,2448,2449],{},"有选择地执行代码",[338,2451,2452,2453,2456,2457,965],{},"判断依据是一个",[341,2454,2455],{},"比较表达式","或更复杂的",[341,2458,2459],{},"逻辑表达式",[338,2461,2462,2463,2465],{},"当条件为 ",[52,2464,1838],{}," 时，执行选定的代码块。",[338,2467,2468,2469,2471,2472,2474],{},"有些形式还允许：条件为 ",[52,2470,1838],{}," 执行一段代码，为 ",[52,2473,1842],{}," 执行另一段代码。",[615,2476],{},[28,2478,2480,2481,2484],{"id":2479},"_53-if-语句","5.3 ",[52,2482,2483],{},"if"," 语句",[98,2486,2487],{"id":2487},"语法",[45,2489,2491],{"className":409,"code":2490,"language":184,"meta":50,"style":50},"if (condition) {\n    \u002F\u002F 条件为 true 时执行\n}\n\u002F\u002F 条件为 false 时，这里照常执行\n",[52,2492,2493,2500,2505,2509],{"__ignoreMap":50},[55,2494,2495,2497],{"class":57,"line":58},[55,2496,2483],{"class":417},[55,2498,2499],{"class":232}," (condition) {\n",[55,2501,2502],{"class":57,"line":226},[55,2503,2504],{"class":432},"    \u002F\u002F 条件为 true 时执行\n",[55,2506,2507],{"class":57,"line":245},[55,2508,550],{"class":232},[55,2510,2511],{"class":57,"line":450},[55,2512,2513],{"class":432},"\u002F\u002F 条件为 false 时，这里照常执行\n",[335,2515,2516,2519],{},[338,2517,2518],{},"如果只有一条语句，可以省略大括号，但建议始终使用大括号。",[338,2520,2521,2522,2524,2525,2527],{},"条件为 ",[52,2523,1842],{}," 时，",[52,2526,2483],{}," 块内的语句不会执行，但后面的语句继续执行。",[98,2529,2530],{"id":2530},"例子",[45,2532,2534],{"className":409,"code":2533,"language":184,"meta":50,"style":50},"if (grade >= 80)\n    letter_grade = \"A\";\n",[52,2535,2536,2550],{"__ignoreMap":50},[55,2537,2538,2540,2543,2545,2548],{"class":57,"line":58},[55,2539,2483],{"class":417},[55,2541,2542],{"class":232}," (grade ",[55,2544,2200],{"class":417},[55,2546,2547],{"class":130}," 80",[55,2549,242],{"class":232},[55,2551,2552,2555,2557,2560],{"class":57,"line":226},[55,2553,2554],{"class":232},"    letter_grade ",[55,2556,520],{"class":417},[55,2558,2559],{"class":65}," \"A\"",[55,2561,989],{"class":232},[13,2563,2564,2565,2568,2569,2572,2573,965],{},"如果 ",[52,2566,2567],{},"grade"," 大于等于 80，则把 ",[52,2570,2571],{},"letter_grade"," 设为 ",[52,2574,879],{},[13,2576,2577],{},"另一个例子：",[45,2579,2581],{"className":409,"code":2580,"language":184,"meta":50,"style":50},"if (hours >= 24) {\n    days = days + 1;\n    hours = hours - 24;\n}\n",[52,2582,2583,2597,2614,2630],{"__ignoreMap":50},[55,2584,2585,2587,2590,2592,2595],{"class":57,"line":58},[55,2586,2483],{"class":417},[55,2588,2589],{"class":232}," (hours ",[55,2591,2200],{"class":417},[55,2593,2594],{"class":130}," 24",[55,2596,511],{"class":232},[55,2598,2599,2602,2604,2607,2609,2612],{"class":57,"line":226},[55,2600,2601],{"class":232},"    days ",[55,2603,520],{"class":417},[55,2605,2606],{"class":232}," days ",[55,2608,789],{"class":417},[55,2610,2611],{"class":130}," 1",[55,2613,989],{"class":232},[55,2615,2616,2619,2621,2624,2626,2628],{"class":57,"line":245},[55,2617,2618],{"class":232},"    hours ",[55,2620,520],{"class":417},[55,2622,2623],{"class":232}," hours ",[55,2625,785],{"class":417},[55,2627,2594],{"class":130},[55,2629,989],{"class":232},[55,2631,2632],{"class":57,"line":450},[55,2633,550],{"class":232},[98,2635,2636],{"id":2636},"想一想",[45,2638,2640],{"className":409,"code":2639,"language":184,"meta":50,"style":50},"int score = 60;\nif (score > 60) {\n    System.out.println(score);\n}\n",[52,2641,2642,2656,2669,2679],{"__ignoreMap":50},[55,2643,2644,2646,2649,2651,2654],{"class":57,"line":58},[55,2645,1250],{"class":417},[55,2647,2648],{"class":232}," score ",[55,2650,520],{"class":417},[55,2652,2653],{"class":130}," 60",[55,2655,989],{"class":232},[55,2657,2658,2660,2663,2665,2667],{"class":57,"line":226},[55,2659,2483],{"class":417},[55,2661,2662],{"class":232}," (score ",[55,2664,2194],{"class":417},[55,2666,2653],{"class":130},[55,2668,511],{"class":232},[55,2670,2671,2674,2676],{"class":57,"line":245},[55,2672,2673],{"class":232},"    System.out.",[55,2675,456],{"class":61},[55,2677,2678],{"class":232},"(score);\n",[55,2680,2681],{"class":57,"line":450},[55,2682,550],{"class":232},[13,2684,2685,2686,2689,2690,2692,2693,2696,2697,2699,2700,2702],{},"条件 ",[52,2687,2688],{},"score > 60"," 是 ",[52,2691,1842],{},"，所以",[341,2694,2695],{},"什么都不会输出","。把 ",[52,2698,2194],{}," 换成 ",[52,2701,2200],{}," 才会打印 60。",[615,2704],{},[28,2706,2708,2709,2484],{"id":2707},"_54-ifelse-语句","5.4 ",[52,2710,2711],{},"if...else",[98,2713,2487],{"id":2714},"语法-1",[45,2716,2718],{"className":409,"code":2717,"language":184,"meta":50,"style":50},"if (condition) {\n    \u002F\u002F 条件为 true 时执行\n} else {\n    \u002F\u002F 条件为 false 时执行\n}\n",[52,2719,2720,2726,2730,2740,2745],{"__ignoreMap":50},[55,2721,2722,2724],{"class":57,"line":58},[55,2723,2483],{"class":417},[55,2725,2499],{"class":232},[55,2727,2728],{"class":57,"line":226},[55,2729,2504],{"class":432},[55,2731,2732,2735,2738],{"class":57,"line":245},[55,2733,2734],{"class":232},"} ",[55,2736,2737],{"class":417},"else",[55,2739,427],{"class":232},[55,2741,2742],{"class":57,"line":450},[55,2743,2744],{"class":432},"    \u002F\u002F 条件为 false 时执行\n",[55,2746,2747],{"class":57,"line":467},[55,2748,550],{"class":232},[335,2750,2751,2754],{},[338,2752,2753],{},"两个分支互斥，只会执行其中一个。",[338,2755,2756],{},"适合“二选一”的情况。",[98,2758,2760],{"id":2759},"_541-例子","5.4.1 例子",[13,2762,2763,406],{},[341,2764,2765],{},"猜 PI 值",[45,2767,2769],{"className":409,"code":2768,"language":184,"meta":50,"style":50},"if ((PI > 3.1414) && (PI \u003C 3.1416)) {\n    System.out.println(\"Very good!\");\n} else {\n    System.out.println(\"Sorry, the answer is approximately 3.1415\");\n}\n",[52,2770,2771,2798,2811,2819,2832],{"__ignoreMap":50},[55,2772,2773,2775,2778,2780,2783,2785,2787,2790,2792,2795],{"class":57,"line":58},[55,2774,2483],{"class":417},[55,2776,2777],{"class":232}," ((PI ",[55,2779,2194],{"class":417},[55,2781,2782],{"class":130}," 3.1414",[55,2784,260],{"class":232},[55,2786,2224],{"class":417},[55,2788,2789],{"class":232}," (PI ",[55,2791,2191],{"class":417},[55,2793,2794],{"class":130}," 3.1416",[55,2796,2797],{"class":232},")) {\n",[55,2799,2800,2802,2804,2806,2809],{"class":57,"line":226},[55,2801,2673],{"class":232},[55,2803,456],{"class":61},[55,2805,254],{"class":232},[55,2807,2808],{"class":65},"\"Very good!\"",[55,2810,464],{"class":232},[55,2812,2813,2815,2817],{"class":57,"line":245},[55,2814,2734],{"class":232},[55,2816,2737],{"class":417},[55,2818,427],{"class":232},[55,2820,2821,2823,2825,2827,2830],{"class":57,"line":450},[55,2822,2673],{"class":232},[55,2824,456],{"class":61},[55,2826,254],{"class":232},[55,2828,2829],{"class":65},"\"Sorry, the answer is approximately 3.1415\"",[55,2831,464],{"class":232},[55,2833,2834],{"class":57,"line":467},[55,2835,550],{"class":232},[13,2837,2838,406],{},[341,2839,2840],{},"求一元二次方程根",[45,2842,2844],{"className":409,"code":2843,"language":184,"meta":50,"style":50},"D = Math.pow(b, 2) - 4 * a * c;\nif (D \u003C 0) {\n    System.out.println(\"The roots are imaginary\");\n} else {\n    r1 = (-b + Math.sqrt(D)) \u002F (2 * a);\n    r2 = (-b - Math.sqrt(D)) \u002F (2 * a);\n    System.out.printf(\"The roots are %.2f and %.2f%n\", r1, r2);\n}\n",[52,2845,2846,2883,2897,2910,2918,2954,2985,2999],{"__ignoreMap":50},[55,2847,2848,2851,2853,2856,2859,2862,2865,2867,2869,2872,2875,2878,2880],{"class":57,"line":58},[55,2849,2850],{"class":232},"D ",[55,2852,520],{"class":417},[55,2854,2855],{"class":232}," Math.",[55,2857,2858],{"class":61},"pow",[55,2860,2861],{"class":232},"(b, ",[55,2863,2864],{"class":130},"2",[55,2866,260],{"class":232},[55,2868,785],{"class":417},[55,2870,2871],{"class":130}," 4",[55,2873,2874],{"class":417}," *",[55,2876,2877],{"class":232}," a ",[55,2879,1553],{"class":417},[55,2881,2882],{"class":232}," c;\n",[55,2884,2885,2887,2890,2892,2895],{"class":57,"line":226},[55,2886,2483],{"class":417},[55,2888,2889],{"class":232}," (D ",[55,2891,2191],{"class":417},[55,2893,2894],{"class":130}," 0",[55,2896,511],{"class":232},[55,2898,2899,2901,2903,2905,2908],{"class":57,"line":245},[55,2900,2673],{"class":232},[55,2902,456],{"class":61},[55,2904,254],{"class":232},[55,2906,2907],{"class":65},"\"The roots are imaginary\"",[55,2909,464],{"class":232},[55,2911,2912,2914,2916],{"class":57,"line":450},[55,2913,2734],{"class":232},[55,2915,2737],{"class":417},[55,2917,427],{"class":232},[55,2919,2920,2923,2925,2928,2930,2933,2935,2937,2940,2943,2945,2947,2949,2951],{"class":57,"line":467},[55,2921,2922],{"class":232},"    r1 ",[55,2924,520],{"class":417},[55,2926,2927],{"class":232}," (",[55,2929,785],{"class":417},[55,2931,2932],{"class":232},"b ",[55,2934,789],{"class":417},[55,2936,2855],{"class":232},[55,2938,2939],{"class":61},"sqrt",[55,2941,2942],{"class":232},"(D)) ",[55,2944,2063],{"class":417},[55,2946,2927],{"class":232},[55,2948,2864],{"class":130},[55,2950,2874],{"class":417},[55,2952,2953],{"class":232}," a);\n",[55,2955,2956,2959,2961,2963,2965,2967,2969,2971,2973,2975,2977,2979,2981,2983],{"class":57,"line":473},[55,2957,2958],{"class":232},"    r2 ",[55,2960,520],{"class":417},[55,2962,2927],{"class":232},[55,2964,785],{"class":417},[55,2966,2932],{"class":232},[55,2968,785],{"class":417},[55,2970,2855],{"class":232},[55,2972,2939],{"class":61},[55,2974,2942],{"class":232},[55,2976,2063],{"class":417},[55,2978,2927],{"class":232},[55,2980,2864],{"class":130},[55,2982,2874],{"class":417},[55,2984,2953],{"class":232},[55,2986,2987,2989,2991,2993,2996],{"class":57,"line":480},[55,2988,2673],{"class":232},[55,2990,868],{"class":61},[55,2992,254],{"class":232},[55,2994,2995],{"class":65},"\"The roots are %.2f and %.2f%n\"",[55,2997,2998],{"class":232},", r1, r2);\n",[55,3000,3001],{"class":57,"line":486},[55,3002,550],{"class":232},[13,3004,3005,3006,3009],{},"判别式 ",[52,3007,3008],{},"D \u003C 0"," 时无实根，否则用公式求根。",[615,3011],{},[28,3013,3015,3016],{"id":3014},"_55-嵌套-if","5.5 嵌套 ",[52,3017,2483],{},[335,3019,3020,3028,3037],{},[338,3021,3022,3024,3025,3027],{},[52,3023,2483],{}," 可以放在另一个 ",[52,3026,2483],{}," 里面。",[338,3029,3030,3031,3033,3034,3036],{},"嵌套多个 ",[52,3032,2483],{}," 相当于把所有条件用 ",[52,3035,2224],{}," 连接起来。",[338,3038,3039],{},"例如：",[45,3041,3043],{"className":409,"code":3042,"language":184,"meta":50,"style":50},"if (X \u003C Y)\n    if (X \u003C Z)\n        if (X \u003C A)\n            X = 0;\n",[52,3044,3045,3057,3069,3081],{"__ignoreMap":50},[55,3046,3047,3049,3052,3054],{"class":57,"line":58},[55,3048,2483],{"class":417},[55,3050,3051],{"class":232}," (X ",[55,3053,2191],{"class":417},[55,3055,3056],{"class":232}," Y)\n",[55,3058,3059,3062,3064,3066],{"class":57,"line":226},[55,3060,3061],{"class":417},"    if",[55,3063,3051],{"class":232},[55,3065,2191],{"class":417},[55,3067,3068],{"class":232}," Z)\n",[55,3070,3071,3074,3076,3078],{"class":57,"line":245},[55,3072,3073],{"class":417},"        if",[55,3075,3051],{"class":232},[55,3077,2191],{"class":417},[55,3079,3080],{"class":232}," A)\n",[55,3082,3083,3086,3088,3090],{"class":57,"line":450},[55,3084,3085],{"class":232},"            X ",[55,3087,520],{"class":417},[55,3089,2894],{"class":130},[55,3091,989],{"class":232},[13,3093,3094,3095,2524,3098,3101],{},"只有 ",[52,3096,3097],{},"X \u003C Y && X \u003C Z && X \u003C A",[52,3099,3100],{},"X = 0"," 才会执行。",[98,3103,3105,3106,3108],{"id":3104},"_551-else-的绑定问题","5.5.1 ",[52,3107,2737],{}," 的绑定问题",[335,3110,3111,3122,3134],{},[338,3112,3113,3115,3116,3121],{},[52,3114,2737],{}," 默认与",[341,3117,3118,3119],{},"最近的、未匹配的 ",[52,3120,2483],{}," 配对。",[338,3123,3124,3125,3127,3128,3130,3131,3133],{},"如果希望 ",[52,3126,2737],{}," 属于外层 ",[52,3129,2483],{},"，需要用大括号把内层 ",[52,3132,2483],{}," 包起来。",[338,3135,3039],{},[45,3137,3139],{"className":409,"code":3138,"language":184,"meta":50,"style":50},"if (X \u003C Y) {\n    if (X \u003C Z) {\n        if (X \u003C A)\n            X = 0;\n        else\n            X = 1;\n    }\n}\n",[52,3140,3141,3152,3163,3173,3183,3188,3198,3202],{"__ignoreMap":50},[55,3142,3143,3145,3147,3149],{"class":57,"line":58},[55,3144,2483],{"class":417},[55,3146,3051],{"class":232},[55,3148,2191],{"class":417},[55,3150,3151],{"class":232}," Y) {\n",[55,3153,3154,3156,3158,3160],{"class":57,"line":226},[55,3155,3061],{"class":417},[55,3157,3051],{"class":232},[55,3159,2191],{"class":417},[55,3161,3162],{"class":232}," Z) {\n",[55,3164,3165,3167,3169,3171],{"class":57,"line":245},[55,3166,3073],{"class":417},[55,3168,3051],{"class":232},[55,3170,2191],{"class":417},[55,3172,3080],{"class":232},[55,3174,3175,3177,3179,3181],{"class":57,"line":450},[55,3176,3085],{"class":232},[55,3178,520],{"class":417},[55,3180,2894],{"class":130},[55,3182,989],{"class":232},[55,3184,3185],{"class":57,"line":467},[55,3186,3187],{"class":417},"        else\n",[55,3189,3190,3192,3194,3196],{"class":57,"line":473},[55,3191,3085],{"class":232},[55,3193,520],{"class":417},[55,3195,2611],{"class":130},[55,3197,989],{"class":232},[55,3199,3200],{"class":57,"line":480},[55,3201,470],{"class":232},[55,3203,3204],{"class":57,"line":486},[55,3205,550],{"class":232},[13,3207,3208,3209,3211,3212,965],{},"这里的 ",[52,3210,2737],{}," 属于 ",[52,3213,3214],{},"if (X \u003C A)",[615,3216],{},[28,3218,3220,3221],{"id":3219},"_56-多分支与-else-if","5.6 多分支与 ",[52,3222,3223],{},"else if",[98,3225,3227,3228,3230],{"id":3226},"_561-用多个独立-if-的问题","5.6.1 用多个独立 ",[52,3229,2483],{}," 的问题",[13,3232,3233,3234,3237],{},"例如根据 ",[52,3235,3236],{},"Day"," 打印星期：",[45,3239,3241],{"className":409,"code":3240,"language":184,"meta":50,"style":50},"if (Day == 1) System.out.println(\"Mon\");\nif (Day == 2) System.out.println(\"Tue\");\n...\nif (Day == 7) System.out.println(\"Sun\");\n",[52,3242,3243,3266,3288,3293],{"__ignoreMap":50},[55,3244,3245,3247,3250,3252,3254,3257,3259,3261,3264],{"class":57,"line":58},[55,3246,2483],{"class":417},[55,3248,3249],{"class":232}," (Day ",[55,3251,2203],{"class":417},[55,3253,2611],{"class":130},[55,3255,3256],{"class":232},") System.out.",[55,3258,456],{"class":61},[55,3260,254],{"class":232},[55,3262,3263],{"class":65},"\"Mon\"",[55,3265,464],{"class":232},[55,3267,3268,3270,3272,3274,3277,3279,3281,3283,3286],{"class":57,"line":226},[55,3269,2483],{"class":417},[55,3271,3249],{"class":232},[55,3273,2203],{"class":417},[55,3275,3276],{"class":130}," 2",[55,3278,3256],{"class":232},[55,3280,456],{"class":61},[55,3282,254],{"class":232},[55,3284,3285],{"class":65},"\"Tue\"",[55,3287,464],{"class":232},[55,3289,3290],{"class":57,"line":245},[55,3291,3292],{"class":232},"...\n",[55,3294,3295,3297,3299,3301,3304,3306,3308,3310,3313],{"class":57,"line":450},[55,3296,2483],{"class":417},[55,3298,3249],{"class":232},[55,3300,2203],{"class":417},[55,3302,3303],{"class":130}," 7",[55,3305,3256],{"class":232},[55,3307,456],{"class":61},[55,3309,254],{"class":232},[55,3311,3312],{"class":65},"\"Sun\"",[55,3314,464],{"class":232},[13,3316,3317,3318,3320],{},"效率低，因为每个 ",[52,3319,2483],{}," 都会判断一次。",[98,3322,3324,3325,3327],{"id":3323},"_562-改进else-if-链","5.6.2 改进：",[52,3326,3223],{}," 链",[45,3329,3331],{"className":409,"code":3330,"language":184,"meta":50,"style":50},"if (Day == 1)\n    System.out.println(\"Mon\");\nelse if (Day == 2)\n    System.out.println(\"Tue\");\nelse if (Day == 3)\n    System.out.println(\"Wed\");\n...\nelse\n    System.out.println(\"Out of Range\");\n",[52,3332,3333,3345,3357,3372,3384,3399,3412,3416,3421],{"__ignoreMap":50},[55,3334,3335,3337,3339,3341,3343],{"class":57,"line":58},[55,3336,2483],{"class":417},[55,3338,3249],{"class":232},[55,3340,2203],{"class":417},[55,3342,2611],{"class":130},[55,3344,242],{"class":232},[55,3346,3347,3349,3351,3353,3355],{"class":57,"line":226},[55,3348,2673],{"class":232},[55,3350,456],{"class":61},[55,3352,254],{"class":232},[55,3354,3263],{"class":65},[55,3356,464],{"class":232},[55,3358,3359,3361,3364,3366,3368,3370],{"class":57,"line":245},[55,3360,2737],{"class":417},[55,3362,3363],{"class":417}," if",[55,3365,3249],{"class":232},[55,3367,2203],{"class":417},[55,3369,3276],{"class":130},[55,3371,242],{"class":232},[55,3373,3374,3376,3378,3380,3382],{"class":57,"line":450},[55,3375,2673],{"class":232},[55,3377,456],{"class":61},[55,3379,254],{"class":232},[55,3381,3285],{"class":65},[55,3383,464],{"class":232},[55,3385,3386,3388,3390,3392,3394,3397],{"class":57,"line":467},[55,3387,2737],{"class":417},[55,3389,3363],{"class":417},[55,3391,3249],{"class":232},[55,3393,2203],{"class":417},[55,3395,3396],{"class":130}," 3",[55,3398,242],{"class":232},[55,3400,3401,3403,3405,3407,3410],{"class":57,"line":473},[55,3402,2673],{"class":232},[55,3404,456],{"class":61},[55,3406,254],{"class":232},[55,3408,3409],{"class":65},"\"Wed\"",[55,3411,464],{"class":232},[55,3413,3414],{"class":57,"line":480},[55,3415,3292],{"class":232},[55,3417,3418],{"class":57,"line":486},[55,3419,3420],{"class":417},"else\n",[55,3422,3423,3425,3427,3429,3432],{"class":57,"line":514},[55,3424,2673],{"class":232},[55,3426,456],{"class":61},[55,3428,254],{"class":232},[55,3430,3431],{"class":65},"\"Out of Range\"",[55,3433,464],{"class":232},[13,3435,3436],{},"一旦匹配成功，后面的条件不再判断，效率更高。",[615,3438],{},[28,3440,3442,3443,2484],{"id":3441},"_57-switch-case-语句","5.7 ",[52,3444,3445],{},"switch-case",[13,3447,3448,3449,3452,3453,3455,3456,3459],{},"当需要在",[341,3450,3451],{},"多个相等条件","中选择时，",[52,3454,3445],{}," 比 ",[52,3457,3458],{},"if...else if"," 更清晰。",[98,3461,3463],{"id":3462},"_571-语法","5.7.1 语法",[45,3465,3467],{"className":409,"code":3466,"language":184,"meta":50,"style":50},"switch (测试表达式) {\n    case 值1:\n        \u002F\u002F 语句块\n        break;\n    case 值2:\n        \u002F\u002F 语句块\n        break;\n    ...\n    default:\n        \u002F\u002F 默认语句块\n}\n",[52,3468,3469,3477,3488,3493,3500,3509,3513,3519,3524,3529,3534],{"__ignoreMap":50},[55,3470,3471,3474],{"class":57,"line":58},[55,3472,3473],{"class":417},"switch",[55,3475,3476],{"class":232}," (测试表达式) {\n",[55,3478,3479,3482,3485],{"class":57,"line":226},[55,3480,3481],{"class":417},"    case",[55,3483,3484],{"class":232}," 值1",[55,3486,3487],{"class":417},":\n",[55,3489,3490],{"class":57,"line":245},[55,3491,3492],{"class":432},"        \u002F\u002F 语句块\n",[55,3494,3495,3498],{"class":57,"line":450},[55,3496,3497],{"class":417},"        break",[55,3499,989],{"class":232},[55,3501,3502,3504,3507],{"class":57,"line":467},[55,3503,3481],{"class":417},[55,3505,3506],{"class":232}," 值2",[55,3508,3487],{"class":417},[55,3510,3511],{"class":57,"line":473},[55,3512,3492],{"class":432},[55,3514,3515,3517],{"class":57,"line":480},[55,3516,3497],{"class":417},[55,3518,989],{"class":232},[55,3520,3521],{"class":57,"line":486},[55,3522,3523],{"class":232},"    ...\n",[55,3525,3526],{"class":57,"line":514},[55,3527,3528],{"class":417},"    default:\n",[55,3530,3531],{"class":57,"line":531},[55,3532,3533],{"class":432},"        \u002F\u002F 默认语句块\n",[55,3535,3536],{"class":57,"line":542},[55,3537,550],{"class":232},[98,3539,3541],{"id":3540},"_572-要点","5.7.2 要点",[335,3543,3544,3558,3568,3580],{},[338,3545,3546,3547,786,3549,786,3551,786,3553,3555,3556,965],{},"测试表达式可以是：",[52,3548,1250],{},[52,3550,1764],{},[52,3552,1774],{},[52,3554,1822],{},"，JDK 1.7 起也可以是 ",[52,3557,501],{},[338,3559,3560,3563,3564,3567],{},[52,3561,3562],{},"case"," 后面是",[341,3565,3566],{},"值","，不是条件。",[338,3569,3570,3571,3573,3574,3577,3578,965],{},"每个 ",[52,3572,3562],{}," 通常需要 ",[52,3575,3576],{},"break","，否则会发生“贯穿 fall-through”，继续执行后面的 ",[52,3579,3562],{},[338,3581,3582,3585],{},[52,3583,3584],{},"default"," 可选，用于处理所有未匹配的情况。",[98,3587,3589],{"id":3588},"_573-例子","5.7.3 例子",[45,3591,3593],{"className":409,"code":3592,"language":184,"meta":50,"style":50},"int number = 3;\nswitch (number) {\n    case 1:\n        System.out.println(\"ONE\");\n        break;\n    case 2:\n        System.out.println(\"TWO\");\n        break;\n    case 3:\n        System.out.println(\"THREE\");\n        break;\n    default:\n        System.err.println(\"OTHER\");\n}\n",[52,3594,3595,3608,3615,3623,3636,3642,3650,3663,3669,3677,3690,3696,3700,3715],{"__ignoreMap":50},[55,3596,3597,3599,3602,3604,3606],{"class":57,"line":58},[55,3598,1250],{"class":417},[55,3600,3601],{"class":232}," number ",[55,3603,520],{"class":417},[55,3605,3396],{"class":130},[55,3607,989],{"class":232},[55,3609,3610,3612],{"class":57,"line":226},[55,3611,3473],{"class":417},[55,3613,3614],{"class":232}," (number) {\n",[55,3616,3617,3619,3621],{"class":57,"line":245},[55,3618,3481],{"class":417},[55,3620,2611],{"class":130},[55,3622,3487],{"class":417},[55,3624,3625,3627,3629,3631,3634],{"class":57,"line":450},[55,3626,453],{"class":232},[55,3628,456],{"class":61},[55,3630,254],{"class":232},[55,3632,3633],{"class":65},"\"ONE\"",[55,3635,464],{"class":232},[55,3637,3638,3640],{"class":57,"line":467},[55,3639,3497],{"class":417},[55,3641,989],{"class":232},[55,3643,3644,3646,3648],{"class":57,"line":473},[55,3645,3481],{"class":417},[55,3647,3276],{"class":130},[55,3649,3487],{"class":417},[55,3651,3652,3654,3656,3658,3661],{"class":57,"line":480},[55,3653,453],{"class":232},[55,3655,456],{"class":61},[55,3657,254],{"class":232},[55,3659,3660],{"class":65},"\"TWO\"",[55,3662,464],{"class":232},[55,3664,3665,3667],{"class":57,"line":486},[55,3666,3497],{"class":417},[55,3668,989],{"class":232},[55,3670,3671,3673,3675],{"class":57,"line":514},[55,3672,3481],{"class":417},[55,3674,3396],{"class":130},[55,3676,3487],{"class":417},[55,3678,3679,3681,3683,3685,3688],{"class":57,"line":531},[55,3680,453],{"class":232},[55,3682,456],{"class":61},[55,3684,254],{"class":232},[55,3686,3687],{"class":65},"\"THREE\"",[55,3689,464],{"class":232},[55,3691,3692,3694],{"class":57,"line":542},[55,3693,3497],{"class":417},[55,3695,989],{"class":232},[55,3697,3698],{"class":57,"line":547},[55,3699,3528],{"class":417},[55,3701,3703,3706,3708,3710,3713],{"class":57,"line":3702},13,[55,3704,3705],{"class":232},"        System.err.",[55,3707,456],{"class":61},[55,3709,254],{"class":232},[55,3711,3712],{"class":65},"\"OTHER\"",[55,3714,464],{"class":232},[55,3716,3718],{"class":57,"line":3717},14,[55,3719,550],{"class":232},[13,3721,3722],{},"另一个例子：根据运算符做算术运算。",[45,3724,3726],{"className":409,"code":3725,"language":184,"meta":50,"style":50},"char operator = '*';\nswitch (operator) {\n    case '+': result = num1 + num2; break;\n    case '-': result = num1 - num2; break;\n    case '*': result = num1 * num2; break;\n    case '\u002F': result = num1 \u002F num2; break;\n    default: System.out.println(\"Unknown operator\");\n}\n",[52,3727,3728,3742,3749,3776,3799,3821,3844,3861],{"__ignoreMap":50},[55,3729,3730,3732,3735,3737,3740],{"class":57,"line":58},[55,3731,1822],{"class":417},[55,3733,3734],{"class":232}," operator ",[55,3736,520],{"class":417},[55,3738,3739],{"class":65}," '*'",[55,3741,989],{"class":232},[55,3743,3744,3746],{"class":57,"line":226},[55,3745,3473],{"class":417},[55,3747,3748],{"class":232}," (operator) {\n",[55,3750,3751,3753,3756,3759,3762,3764,3767,3769,3772,3774],{"class":57,"line":245},[55,3752,3481],{"class":417},[55,3754,3755],{"class":65}," '+'",[55,3757,3758],{"class":417},":",[55,3760,3761],{"class":232}," result ",[55,3763,520],{"class":417},[55,3765,3766],{"class":232}," num1 ",[55,3768,789],{"class":417},[55,3770,3771],{"class":232}," num2; ",[55,3773,3576],{"class":417},[55,3775,989],{"class":232},[55,3777,3778,3780,3783,3785,3787,3789,3791,3793,3795,3797],{"class":57,"line":450},[55,3779,3481],{"class":417},[55,3781,3782],{"class":65}," '-'",[55,3784,3758],{"class":417},[55,3786,3761],{"class":232},[55,3788,520],{"class":417},[55,3790,3766],{"class":232},[55,3792,785],{"class":417},[55,3794,3771],{"class":232},[55,3796,3576],{"class":417},[55,3798,989],{"class":232},[55,3800,3801,3803,3805,3807,3809,3811,3813,3815,3817,3819],{"class":57,"line":467},[55,3802,3481],{"class":417},[55,3804,3739],{"class":65},[55,3806,3758],{"class":417},[55,3808,3761],{"class":232},[55,3810,520],{"class":417},[55,3812,3766],{"class":232},[55,3814,1553],{"class":417},[55,3816,3771],{"class":232},[55,3818,3576],{"class":417},[55,3820,989],{"class":232},[55,3822,3823,3825,3828,3830,3832,3834,3836,3838,3840,3842],{"class":57,"line":473},[55,3824,3481],{"class":417},[55,3826,3827],{"class":65}," '\u002F'",[55,3829,3758],{"class":417},[55,3831,3761],{"class":232},[55,3833,520],{"class":417},[55,3835,3766],{"class":232},[55,3837,2063],{"class":417},[55,3839,3771],{"class":232},[55,3841,3576],{"class":417},[55,3843,989],{"class":232},[55,3845,3846,3849,3852,3854,3856,3859],{"class":57,"line":480},[55,3847,3848],{"class":417},"    default:",[55,3850,3851],{"class":232}," System.out.",[55,3853,456],{"class":61},[55,3855,254],{"class":232},[55,3857,3858],{"class":65},"\"Unknown operator\"",[55,3860,464],{"class":232},[55,3862,3863],{"class":57,"line":486},[55,3864,550],{"class":232},[615,3866],{},[17,3868,3870],{"id":3869},"_6-循环结构","6. 循环结构",[13,3872,3873],{},"循环用于重复执行一段代码，直到满足某个条件为止。",[28,3875,3877,3878,3881],{"id":3876},"_61-while-循环","6.1 ",[52,3879,3880],{},"while"," 循环",[13,3883,3884],{},[341,3885,3886],{},"语法：",[45,3888,3890],{"className":409,"code":3889,"language":184,"meta":50,"style":50},"while (条件) {\n    \u002F\u002F 条件为 true 时重复执行\n}\n",[52,3891,3892,3899,3904],{"__ignoreMap":50},[55,3893,3894,3896],{"class":57,"line":58},[55,3895,3880],{"class":417},[55,3897,3898],{"class":232}," (条件) {\n",[55,3900,3901],{"class":57,"line":226},[55,3902,3903],{"class":432},"    \u002F\u002F 条件为 true 时重复执行\n",[55,3905,3906],{"class":57,"line":245},[55,3907,550],{"class":232},[13,3909,3910],{},[341,3911,3912],{},"特点：",[335,3914,3915,3918,3924],{},[338,3916,3917],{},"先判断条件，再执行循环体。",[338,3919,3920,3921,3923],{},"如果一开始条件就为 ",[52,3922,1842],{},"，循环体一次也不会执行。",[338,3925,3926],{},"适合循环次数不确定、可能为 0 次的情况。",[13,3928,3929],{},[341,3930,3931],{},"示例：求 1 到 UPPERBOUND 的和",[45,3933,3935],{"className":409,"code":3934,"language":184,"meta":50,"style":50},"int sum = 0;\nfinal int UPPERBOUND = 10;\nint number = 1;\nwhile (number \u003C= UPPERBOUND) {\n    sum += number;\n    ++number;\n}\nSystem.out.println(\"Sum is: \" + sum); \u002F\u002F 55\n",[52,3936,3937,3950,3967,3979,3991,4002,4010,4014],{"__ignoreMap":50},[55,3938,3939,3941,3944,3946,3948],{"class":57,"line":58},[55,3940,1250],{"class":417},[55,3942,3943],{"class":232}," sum ",[55,3945,520],{"class":417},[55,3947,2894],{"class":130},[55,3949,989],{"class":232},[55,3951,3952,3954,3957,3960,3962,3965],{"class":57,"line":226},[55,3953,1628],{"class":417},[55,3955,3956],{"class":417}," int",[55,3958,3959],{"class":232}," UPPERBOUND ",[55,3961,520],{"class":417},[55,3963,3964],{"class":130}," 10",[55,3966,989],{"class":232},[55,3968,3969,3971,3973,3975,3977],{"class":57,"line":245},[55,3970,1250],{"class":417},[55,3972,3601],{"class":232},[55,3974,520],{"class":417},[55,3976,2611],{"class":130},[55,3978,989],{"class":232},[55,3980,3981,3983,3986,3988],{"class":57,"line":450},[55,3982,3880],{"class":417},[55,3984,3985],{"class":232}," (number ",[55,3987,2197],{"class":417},[55,3989,3990],{"class":232}," UPPERBOUND) {\n",[55,3992,3993,3996,3999],{"class":57,"line":467},[55,3994,3995],{"class":232},"    sum ",[55,3997,3998],{"class":417},"+=",[55,4000,4001],{"class":232}," number;\n",[55,4003,4004,4007],{"class":57,"line":473},[55,4005,4006],{"class":417},"    ++",[55,4008,4009],{"class":232},"number;\n",[55,4011,4012],{"class":57,"line":480},[55,4013,550],{"class":232},[55,4015,4016,4018,4020,4022,4025,4028,4031],{"class":57,"line":486},[55,4017,865],{"class":232},[55,4019,456],{"class":61},[55,4021,254],{"class":232},[55,4023,4024],{"class":65},"\"Sum is: \"",[55,4026,4027],{"class":417}," +",[55,4029,4030],{"class":232}," sum); ",[55,4032,4033],{"class":432},"\u002F\u002F 55\n",[13,4035,4036],{},[341,4037,4038],{},"示例：输入直到用户输入 \"Quit\"",[45,4040,4042],{"className":409,"code":4041,"language":184,"meta":50,"style":50},"String a = \"None\";\nwhile (!a.equals(\"Quit\")) {\n    System.out.println(\"Type a Name: \");\n    a = scanner.nextLine();\n    System.out.println(\"You wrote: \" + a);\n}\n",[52,4043,4044,4056,4077,4090,4103,4118],{"__ignoreMap":50},[55,4045,4046,4049,4051,4054],{"class":57,"line":58},[55,4047,4048],{"class":232},"String a ",[55,4050,520],{"class":417},[55,4052,4053],{"class":65}," \"None\"",[55,4055,989],{"class":232},[55,4057,4058,4060,4062,4064,4067,4070,4072,4075],{"class":57,"line":226},[55,4059,3880],{"class":417},[55,4061,2927],{"class":232},[55,4063,2236],{"class":417},[55,4065,4066],{"class":232},"a.",[55,4068,4069],{"class":61},"equals",[55,4071,254],{"class":232},[55,4073,4074],{"class":65},"\"Quit\"",[55,4076,2797],{"class":232},[55,4078,4079,4081,4083,4085,4088],{"class":57,"line":245},[55,4080,2673],{"class":232},[55,4082,456],{"class":61},[55,4084,254],{"class":232},[55,4086,4087],{"class":65},"\"Type a Name: \"",[55,4089,464],{"class":232},[55,4091,4092,4095,4097,4099,4101],{"class":57,"line":450},[55,4093,4094],{"class":232},"    a ",[55,4096,520],{"class":417},[55,4098,1236],{"class":232},[55,4100,1239],{"class":61},[55,4102,528],{"class":232},[55,4104,4105,4107,4109,4111,4114,4116],{"class":57,"line":467},[55,4106,2673],{"class":232},[55,4108,456],{"class":61},[55,4110,254],{"class":232},[55,4112,4113],{"class":65},"\"You wrote: \"",[55,4115,4027],{"class":417},[55,4117,2953],{"class":232},[55,4119,4120],{"class":57,"line":473},[55,4121,550],{"class":232},[615,4123],{},[28,4125,4127,4128,3881],{"id":4126},"_62-dowhile-循环","6.2 ",[52,4129,4130],{},"do...while",[13,4132,4133],{},[341,4134,3886],{},[45,4136,4138],{"className":409,"code":4137,"language":184,"meta":50,"style":50},"do {\n    \u002F\u002F 循环体\n} while (条件);\n",[52,4139,4140,4147,4152],{"__ignoreMap":50},[55,4141,4142,4145],{"class":57,"line":58},[55,4143,4144],{"class":417},"do",[55,4146,427],{"class":232},[55,4148,4149],{"class":57,"line":226},[55,4150,4151],{"class":432},"    \u002F\u002F 循环体\n",[55,4153,4154,4156,4158],{"class":57,"line":245},[55,4155,2734],{"class":232},[55,4157,3880],{"class":417},[55,4159,4160],{"class":232}," (条件);\n",[13,4162,4163],{},[341,4164,3912],{},[335,4166,4167,4170,4175],{},[338,4168,4169],{},"先执行一次循环体，再判断条件。",[338,4171,4172,4173,965],{},"循环体至少执行一次，即使条件一开始为 ",[52,4174,1842],{},[338,4176,4177],{},"条件在循环末尾检查。",[13,4179,4180],{},[341,4181,4182],{},"示例：求 1 到上界之和",[45,4184,4186],{"className":409,"code":4185,"language":184,"meta":50,"style":50},"int sum = 0;\nfinal int UPPERBOUND = 10;\nint number = 1;\ndo {\n    sum += number;\n    ++number;\n} while (number \u003C= UPPERBOUND);\nSystem.out.println(\"Sum is: \" + sum);\n",[52,4187,4188,4200,4214,4226,4232,4240,4246,4259],{"__ignoreMap":50},[55,4189,4190,4192,4194,4196,4198],{"class":57,"line":58},[55,4191,1250],{"class":417},[55,4193,3943],{"class":232},[55,4195,520],{"class":417},[55,4197,2894],{"class":130},[55,4199,989],{"class":232},[55,4201,4202,4204,4206,4208,4210,4212],{"class":57,"line":226},[55,4203,1628],{"class":417},[55,4205,3956],{"class":417},[55,4207,3959],{"class":232},[55,4209,520],{"class":417},[55,4211,3964],{"class":130},[55,4213,989],{"class":232},[55,4215,4216,4218,4220,4222,4224],{"class":57,"line":245},[55,4217,1250],{"class":417},[55,4219,3601],{"class":232},[55,4221,520],{"class":417},[55,4223,2611],{"class":130},[55,4225,989],{"class":232},[55,4227,4228,4230],{"class":57,"line":450},[55,4229,4144],{"class":417},[55,4231,427],{"class":232},[55,4233,4234,4236,4238],{"class":57,"line":467},[55,4235,3995],{"class":232},[55,4237,3998],{"class":417},[55,4239,4001],{"class":232},[55,4241,4242,4244],{"class":57,"line":473},[55,4243,4006],{"class":417},[55,4245,4009],{"class":232},[55,4247,4248,4250,4252,4254,4256],{"class":57,"line":480},[55,4249,2734],{"class":232},[55,4251,3880],{"class":417},[55,4253,3985],{"class":232},[55,4255,2197],{"class":417},[55,4257,4258],{"class":232}," UPPERBOUND);\n",[55,4260,4261,4263,4265,4267,4269,4271],{"class":57,"line":486},[55,4262,865],{"class":232},[55,4264,456],{"class":61},[55,4266,254],{"class":232},[55,4268,4024],{"class":65},[55,4270,4027],{"class":417},[55,4272,4273],{"class":232}," sum);\n",[615,4275],{},[28,4277,4279,4280,3881],{"id":4278},"_63-for-循环","6.3 ",[52,4281,4282],{},"for",[13,4284,4285],{},[341,4286,3886],{},[45,4288,4290],{"className":409,"code":4289,"language":184,"meta":50,"style":50},"for (初始化; 布尔测试; 更新) {\n    \u002F\u002F 循环体\n}\n",[52,4291,4292,4299,4303],{"__ignoreMap":50},[55,4293,4294,4296],{"class":57,"line":58},[55,4295,4282],{"class":417},[55,4297,4298],{"class":232}," (初始化; 布尔测试; 更新) {\n",[55,4300,4301],{"class":57,"line":226},[55,4302,4151],{"class":432},[55,4304,4305],{"class":57,"line":245},[55,4306,550],{"class":232},[13,4308,4309],{},[341,4310,4311],{},"执行流程：",[555,4313,4314,4317,4323,4326],{},[338,4315,4316],{},"执行初始化，只执行一次。",[338,4318,4319,4320,4322],{},"判断布尔测试，为 ",[52,4321,1838],{}," 则执行循环体。",[338,4324,4325],{},"执行更新表达式。",[338,4327,4328,4329,965],{},"再次判断布尔测试，重复以上过程，直到测试为 ",[52,4330,1842],{},[13,4332,4333],{},[341,4334,3912],{},[335,4336,4337,4340,4343],{},[338,4338,4339],{},"适合循环次数已知或可预先确定的情况。",[338,4341,4342],{},"初始化、条件、更新都可以省略，但分号不能省略。",[338,4344,4345,4346,4348],{},"循环变量通常声明在 ",[52,4347,4282],{}," 内部，作用域仅限于循环内。",[13,4350,4351],{},[341,4352,4353],{},"示例：打印 1 到 5",[45,4355,4357],{"className":409,"code":4356,"language":184,"meta":50,"style":50},"for (int c = 1; c \u003C= 5; c++) {\n    System.out.println(c);\n}\n",[52,4358,4359,4389,4398],{"__ignoreMap":50},[55,4360,4361,4363,4365,4367,4370,4372,4374,4377,4379,4382,4385,4387],{"class":57,"line":58},[55,4362,4282],{"class":417},[55,4364,2927],{"class":232},[55,4366,1250],{"class":417},[55,4368,4369],{"class":232}," c ",[55,4371,520],{"class":417},[55,4373,2611],{"class":130},[55,4375,4376],{"class":232},"; c ",[55,4378,2197],{"class":417},[55,4380,4381],{"class":130}," 5",[55,4383,4384],{"class":232},"; c",[55,4386,2123],{"class":417},[55,4388,511],{"class":232},[55,4390,4391,4393,4395],{"class":57,"line":226},[55,4392,2673],{"class":232},[55,4394,456],{"class":61},[55,4396,4397],{"class":232},"(c);\n",[55,4399,4400],{"class":57,"line":245},[55,4401,550],{"class":232},[13,4403,4404],{},[341,4405,4406],{},"示例：求 1 到 k 的和",[45,4408,4410],{"className":409,"code":4409,"language":184,"meta":50,"style":50},"int k = scanner.nextInt();\nint sum = 0;\nfor (int i = 1; i \u003C= k; i++) {\n    sum = sum + i;\n}\n",[52,4411,4412,4427,4439,4466,4479],{"__ignoreMap":50},[55,4413,4414,4416,4419,4421,4423,4425],{"class":57,"line":58},[55,4415,1250],{"class":417},[55,4417,4418],{"class":232}," k ",[55,4420,520],{"class":417},[55,4422,1236],{"class":232},[55,4424,1260],{"class":61},[55,4426,528],{"class":232},[55,4428,4429,4431,4433,4435,4437],{"class":57,"line":226},[55,4430,1250],{"class":417},[55,4432,3943],{"class":232},[55,4434,520],{"class":417},[55,4436,2894],{"class":130},[55,4438,989],{"class":232},[55,4440,4441,4443,4445,4447,4450,4452,4454,4457,4459,4462,4464],{"class":57,"line":245},[55,4442,4282],{"class":417},[55,4444,2927],{"class":232},[55,4446,1250],{"class":417},[55,4448,4449],{"class":232}," i ",[55,4451,520],{"class":417},[55,4453,2611],{"class":130},[55,4455,4456],{"class":232},"; i ",[55,4458,2197],{"class":417},[55,4460,4461],{"class":232}," k; i",[55,4463,2123],{"class":417},[55,4465,511],{"class":232},[55,4467,4468,4470,4472,4474,4476],{"class":57,"line":450},[55,4469,3995],{"class":232},[55,4471,520],{"class":417},[55,4473,3943],{"class":232},[55,4475,789],{"class":417},[55,4477,4478],{"class":232}," i;\n",[55,4480,4481],{"class":57,"line":467},[55,4482,550],{"class":232},[13,4484,4485],{},[341,4486,4487],{},"示例：打印所有偶数到 10",[45,4489,4491],{"className":409,"code":4490,"language":184,"meta":50,"style":50},"for (int j = 2; j \u003C= 10; j = j + 2) {\n    System.out.println(j + \" is an even number\");\n}\n",[52,4492,4493,4527,4543],{"__ignoreMap":50},[55,4494,4495,4497,4499,4501,4504,4506,4508,4511,4513,4515,4517,4519,4521,4523,4525],{"class":57,"line":58},[55,4496,4282],{"class":417},[55,4498,2927],{"class":232},[55,4500,1250],{"class":417},[55,4502,4503],{"class":232}," j ",[55,4505,520],{"class":417},[55,4507,3276],{"class":130},[55,4509,4510],{"class":232},"; j ",[55,4512,2197],{"class":417},[55,4514,3964],{"class":130},[55,4516,4510],{"class":232},[55,4518,520],{"class":417},[55,4520,4503],{"class":232},[55,4522,789],{"class":417},[55,4524,3276],{"class":130},[55,4526,511],{"class":232},[55,4528,4529,4531,4533,4536,4538,4541],{"class":57,"line":226},[55,4530,2673],{"class":232},[55,4532,456],{"class":61},[55,4534,4535],{"class":232},"(j ",[55,4537,789],{"class":417},[55,4539,4540],{"class":65}," \" is an even number\"",[55,4542,464],{"class":232},[55,4544,4545],{"class":57,"line":245},[55,4546,550],{"class":232},[13,4548,4549],{},[341,4550,4551,4552,4554],{},"示例：使用 ",[52,4553,978],{}," 作为计数器",[45,4556,4558],{"className":409,"code":4557,"language":184,"meta":50,"style":50},"for (double i = 0.0; i \u003C= 10.0; i = i + 0.5) {\n    System.out.println(\"i:\" + i);\n}\n",[52,4559,4560,4595,4611],{"__ignoreMap":50},[55,4561,4562,4564,4566,4568,4570,4572,4575,4577,4579,4582,4584,4586,4588,4590,4593],{"class":57,"line":58},[55,4563,4282],{"class":417},[55,4565,2927],{"class":232},[55,4567,978],{"class":417},[55,4569,4449],{"class":232},[55,4571,520],{"class":417},[55,4573,4574],{"class":130}," 0.0",[55,4576,4456],{"class":232},[55,4578,2197],{"class":417},[55,4580,4581],{"class":130}," 10.0",[55,4583,4456],{"class":232},[55,4585,520],{"class":417},[55,4587,4449],{"class":232},[55,4589,789],{"class":417},[55,4591,4592],{"class":130}," 0.5",[55,4594,511],{"class":232},[55,4596,4597,4599,4601,4603,4606,4608],{"class":57,"line":226},[55,4598,2673],{"class":232},[55,4600,456],{"class":61},[55,4602,254],{"class":232},[55,4604,4605],{"class":65},"\"i:\"",[55,4607,4027],{"class":417},[55,4609,4610],{"class":232}," i);\n",[55,4612,4613],{"class":57,"line":245},[55,4614,550],{"class":232},[615,4616],{},[28,4618,4620,4621,3881],{"id":4619},"_64-for-each-循环","6.4 ",[52,4622,4623],{},"for-each",[13,4625,4626],{},"JDK 5 引入，用于遍历数组或集合。",[13,4628,4629],{},[341,4630,3886],{},[45,4632,4634],{"className":409,"code":4633,"language":184,"meta":50,"style":50},"for (类型 变量 : 数组或集合) {\n    \u002F\u002F 使用变量\n}\n",[52,4635,4636,4648,4653],{"__ignoreMap":50},[55,4637,4638,4640,4643,4645],{"class":57,"line":58},[55,4639,4282],{"class":417},[55,4641,4642],{"class":232}," (类型 变量 ",[55,4644,3758],{"class":417},[55,4646,4647],{"class":232}," 数组或集合) {\n",[55,4649,4650],{"class":57,"line":226},[55,4651,4652],{"class":432},"    \u002F\u002F 使用变量\n",[55,4654,4655],{"class":57,"line":245},[55,4656,550],{"class":232},[13,4658,4659],{},[341,4660,4661],{},"示例：",[45,4663,4665],{"className":409,"code":4664,"language":184,"meta":50,"style":50},"int[] numbers = {2, 1, 2, 6, 3};\nfor (int number : numbers) {\n    System.out.println(number);\n}\n",[52,4666,4667,4703,4718,4727],{"__ignoreMap":50},[55,4668,4669,4671,4674,4676,4679,4681,4683,4686,4688,4690,4692,4695,4697,4700],{"class":57,"line":58},[55,4670,1250],{"class":417},[55,4672,4673],{"class":232},"[] numbers ",[55,4675,520],{"class":417},[55,4677,4678],{"class":232}," {",[55,4680,2864],{"class":130},[55,4682,876],{"class":232},[55,4684,4685],{"class":130},"1",[55,4687,876],{"class":232},[55,4689,2864],{"class":130},[55,4691,876],{"class":232},[55,4693,4694],{"class":130},"6",[55,4696,876],{"class":232},[55,4698,4699],{"class":130},"3",[55,4701,4702],{"class":232},"};\n",[55,4704,4705,4707,4709,4711,4713,4715],{"class":57,"line":226},[55,4706,4282],{"class":417},[55,4708,2927],{"class":232},[55,4710,1250],{"class":417},[55,4712,3601],{"class":232},[55,4714,3758],{"class":417},[55,4716,4717],{"class":232}," numbers) {\n",[55,4719,4720,4722,4724],{"class":57,"line":245},[55,4721,2673],{"class":232},[55,4723,456],{"class":61},[55,4725,4726],{"class":232},"(number);\n",[55,4728,4729],{"class":57,"line":450},[55,4730,550],{"class":232},[615,4732],{},[28,4734,4736],{"id":4735},"_65-嵌套循环","6.5 嵌套循环",[13,4738,4739],{},"一个循环内部可以再包含另一个循环。",[13,4741,4742],{},[341,4743,4661],{},[45,4745,4747],{"className":409,"code":4746,"language":184,"meta":50,"style":50},"for (int j = 1; j \u003C= 3; j++) {\n    System.out.println(\"** \" + j + \" **\");\n    for (int i = 1; i \u003C= j; i++) {\n        System.out.println(j + \"\\t\" + i);\n    }\n}\n",[52,4748,4749,4776,4798,4824,4847,4851],{"__ignoreMap":50},[55,4750,4751,4753,4755,4757,4759,4761,4763,4765,4767,4769,4772,4774],{"class":57,"line":58},[55,4752,4282],{"class":417},[55,4754,2927],{"class":232},[55,4756,1250],{"class":417},[55,4758,4503],{"class":232},[55,4760,520],{"class":417},[55,4762,2611],{"class":130},[55,4764,4510],{"class":232},[55,4766,2197],{"class":417},[55,4768,3396],{"class":130},[55,4770,4771],{"class":232},"; j",[55,4773,2123],{"class":417},[55,4775,511],{"class":232},[55,4777,4778,4780,4782,4784,4787,4789,4791,4793,4796],{"class":57,"line":226},[55,4779,2673],{"class":232},[55,4781,456],{"class":61},[55,4783,254],{"class":232},[55,4785,4786],{"class":65},"\"** \"",[55,4788,4027],{"class":417},[55,4790,4503],{"class":232},[55,4792,789],{"class":417},[55,4794,4795],{"class":65}," \" **\"",[55,4797,464],{"class":232},[55,4799,4800,4803,4805,4807,4809,4811,4813,4815,4817,4820,4822],{"class":57,"line":245},[55,4801,4802],{"class":417},"    for",[55,4804,2927],{"class":232},[55,4806,1250],{"class":417},[55,4808,4449],{"class":232},[55,4810,520],{"class":417},[55,4812,2611],{"class":130},[55,4814,4456],{"class":232},[55,4816,2197],{"class":417},[55,4818,4819],{"class":232}," j; i",[55,4821,2123],{"class":417},[55,4823,511],{"class":232},[55,4825,4826,4828,4830,4832,4834,4837,4840,4843,4845],{"class":57,"line":450},[55,4827,453],{"class":232},[55,4829,456],{"class":61},[55,4831,4535],{"class":232},[55,4833,789],{"class":417},[55,4835,4836],{"class":65}," \"",[55,4838,4839],{"class":130},"\\t",[55,4841,4842],{"class":65},"\"",[55,4844,4027],{"class":417},[55,4846,4610],{"class":232},[55,4848,4849],{"class":57,"line":467},[55,4850,470],{"class":232},[55,4852,4853],{"class":57,"line":473},[55,4854,550],{"class":232},[615,4856],{},[28,4858,4860,4861,2484],{"id":4859},"_66-break-语句","6.6 ",[52,4862,3576],{},[13,4864,4865],{},"用于立即退出当前循环。",[13,4867,4868],{},[341,4869,4661],{},[45,4871,4873],{"className":409,"code":4872,"language":184,"meta":50,"style":50},"for (int i = 0; i \u003C 10; i++) {\n    if (i == 5) {\n        break;\n    }\n    System.out.println(\"i: \" + i);\n}\nSystem.out.println(\"Loop terminated.\");\n",[52,4874,4875,4902,4915,4921,4925,4940,4944],{"__ignoreMap":50},[55,4876,4877,4879,4881,4883,4885,4887,4889,4891,4893,4895,4898,4900],{"class":57,"line":58},[55,4878,4282],{"class":417},[55,4880,2927],{"class":232},[55,4882,1250],{"class":417},[55,4884,4449],{"class":232},[55,4886,520],{"class":417},[55,4888,2894],{"class":130},[55,4890,4456],{"class":232},[55,4892,2191],{"class":417},[55,4894,3964],{"class":130},[55,4896,4897],{"class":232},"; i",[55,4899,2123],{"class":417},[55,4901,511],{"class":232},[55,4903,4904,4906,4909,4911,4913],{"class":57,"line":226},[55,4905,3061],{"class":417},[55,4907,4908],{"class":232}," (i ",[55,4910,2203],{"class":417},[55,4912,4381],{"class":130},[55,4914,511],{"class":232},[55,4916,4917,4919],{"class":57,"line":245},[55,4918,3497],{"class":417},[55,4920,989],{"class":232},[55,4922,4923],{"class":57,"line":450},[55,4924,470],{"class":232},[55,4926,4927,4929,4931,4933,4936,4938],{"class":57,"line":467},[55,4928,2673],{"class":232},[55,4930,456],{"class":61},[55,4932,254],{"class":232},[55,4934,4935],{"class":65},"\"i: \"",[55,4937,4027],{"class":417},[55,4939,4610],{"class":232},[55,4941,4942],{"class":57,"line":473},[55,4943,550],{"class":232},[55,4945,4946,4948,4950,4952,4955],{"class":57,"line":480},[55,4947,865],{"class":232},[55,4949,456],{"class":61},[55,4951,254],{"class":232},[55,4953,4954],{"class":65},"\"Loop terminated.\"",[55,4956,464],{"class":232},[615,4958],{},[28,4960,4962],{"id":4961},"_67-无限循环","6.7 无限循环",[13,4964,2564,4965,4967,4968,4970],{},[52,4966,4282],{}," 循环的条件永远为 ",[52,4969,1838],{},"，或者省略条件，就会形成无限循环。",[13,4972,4973],{},[341,4974,4661],{},[45,4976,4978],{"className":409,"code":4977,"language":184,"meta":50,"style":50},"for (int i = 5; i > 4; i++) {\n    System.out.println(\"Value of i: \" + i);\n}\n",[52,4979,4980,5006,5021],{"__ignoreMap":50},[55,4981,4982,4984,4986,4988,4990,4992,4994,4996,4998,5000,5002,5004],{"class":57,"line":58},[55,4983,4282],{"class":417},[55,4985,2927],{"class":232},[55,4987,1250],{"class":417},[55,4989,4449],{"class":232},[55,4991,520],{"class":417},[55,4993,4381],{"class":130},[55,4995,4456],{"class":232},[55,4997,2194],{"class":417},[55,4999,2871],{"class":130},[55,5001,4897],{"class":232},[55,5003,2123],{"class":417},[55,5005,511],{"class":232},[55,5007,5008,5010,5012,5014,5017,5019],{"class":57,"line":226},[55,5009,2673],{"class":232},[55,5011,456],{"class":61},[55,5013,254],{"class":232},[55,5015,5016],{"class":65},"\"Value of i: \"",[55,5018,4027],{"class":417},[55,5020,4610],{"class":232},[55,5022,5023],{"class":57,"line":245},[55,5024,550],{"class":232},[13,5026,5027],{},"也可以用：",[45,5029,5031],{"className":409,"code":5030,"language":184,"meta":50,"style":50},"for (;;) {\n    \u002F\u002F 无限循环\n}\n",[52,5032,5033,5040,5045],{"__ignoreMap":50},[55,5034,5035,5037],{"class":57,"line":58},[55,5036,4282],{"class":417},[55,5038,5039],{"class":232}," (;;) {\n",[55,5041,5042],{"class":57,"line":226},[55,5043,5044],{"class":432},"    \u002F\u002F 无限循环\n",[55,5046,5047],{"class":57,"line":245},[55,5048,550],{"class":232},[615,5050],{},[28,5052,5054],{"id":5053},"_68-循环控制变量与布尔标志","6.8 循环控制变量与布尔标志",[335,5056,5057,5062,5070],{},[338,5058,5059,5061],{},[52,5060,4282],{}," 循环中声明的索引变量只在循环内有效，循环结束后销毁。",[338,5063,5064,5066,5067,5069],{},[52,5065,3880],{}," \u002F ",[52,5068,4130],{}," 中使用的索引变量通常在循环外声明，循环结束后仍可访问。",[338,5071,5072],{},"除了索引变量，还可以用布尔标志控制循环。",[13,5074,5075],{},[341,5076,5077],{},"布尔标志示例：",[45,5079,5081],{"className":409,"code":5080,"language":184,"meta":50,"style":50},"boolean gameOver = false;\nwhile (!gameOver) {\n    \u002F\u002F 游戏逻辑\n    if (某些条件) {\n        gameOver = true;\n    }\n}\n",[52,5082,5083,5097,5108,5113,5120,5132,5136],{"__ignoreMap":50},[55,5084,5085,5087,5090,5092,5095],{"class":57,"line":58},[55,5086,1832],{"class":417},[55,5088,5089],{"class":232}," gameOver ",[55,5091,520],{"class":417},[55,5093,5094],{"class":130}," false",[55,5096,989],{"class":232},[55,5098,5099,5101,5103,5105],{"class":57,"line":226},[55,5100,3880],{"class":417},[55,5102,2927],{"class":232},[55,5104,2236],{"class":417},[55,5106,5107],{"class":232},"gameOver) {\n",[55,5109,5110],{"class":57,"line":245},[55,5111,5112],{"class":432},"    \u002F\u002F 游戏逻辑\n",[55,5114,5115,5117],{"class":57,"line":450},[55,5116,3061],{"class":417},[55,5118,5119],{"class":232}," (某些条件) {\n",[55,5121,5122,5125,5127,5130],{"class":57,"line":467},[55,5123,5124],{"class":232},"        gameOver ",[55,5126,520],{"class":417},[55,5128,5129],{"class":130}," true",[55,5131,989],{"class":232},[55,5133,5134],{"class":57,"line":473},[55,5135,470],{"class":232},[55,5137,5138],{"class":57,"line":480},[55,5139,550],{"class":232},[615,5141],{},[28,5143,5145],{"id":5144},"_69-循环选择对比","6.9 循环选择对比",[719,5147,5148,5164],{},[722,5149,5150],{},[725,5151,5152,5155,5158,5161],{},[728,5153,5154],{},"循环类型",[728,5156,5157],{},"判断时机",[728,5159,5160],{},"最少执行次数",[728,5162,5163],{},"适用场景",[738,5165,5166,5181,5196,5209],{},[725,5167,5168,5172,5175,5178],{},[743,5169,5170],{},[52,5171,3880],{},[743,5173,5174],{},"先判断",[743,5176,5177],{},"0 次",[743,5179,5180],{},"次数不确定，可能不执行",[725,5182,5183,5187,5190,5193],{},[743,5184,5185],{},[52,5186,4130],{},[743,5188,5189],{},"后判断",[743,5191,5192],{},"1 次",[743,5194,5195],{},"至少执行一次",[725,5197,5198,5202,5204,5206],{},[743,5199,5200],{},[52,5201,4282],{},[743,5203,5174],{},[743,5205,5177],{},[743,5207,5208],{},"次数固定或已知",[725,5210,5211,5215,5218,5221],{},[743,5212,5213],{},[52,5214,4623],{},[743,5216,5217],{},"遍历",[743,5219,5220],{},"取决于集合",[743,5222,5223],{},"数组、集合遍历",[13,5225,5226,5227,5229,5230,5232],{},"原则上，任何 ",[52,5228,3880],{}," 循环都可以转换为 ",[52,5231,4282],{}," 循环。",[615,5234],{},[17,5236,5238],{"id":5237},"_7-随机数生成","7. 随机数生成",[28,5240,5242,5243,1310],{"id":5241},"_71-使用-random-类","7.1 使用 ",[52,5244,5245],{},"Random",[13,5247,5248,2251,5250,5253,5254,786,5256,786,5258,5260],{},[52,5249,5245],{},[52,5251,5252],{},"java.util"," 包中，可以生成 ",[52,5255,1250],{},[52,5257,978],{},[52,5259,1803],{}," 等类型的随机值。",[13,5262,5263],{},[341,5264,2276],{},[335,5266,5267,5276,5289,5300],{},[338,5268,5269,5272,5273,5275],{},[52,5270,5271],{},"nextInt()","：生成一个随机整数，范围是 ",[52,5274,1250],{}," 的全部可能值。",[338,5277,5278,5281,5282,5284,5285,5288],{},[52,5279,5280],{},"nextInt(N)","：生成 ",[52,5283,792],{},"（含）到 ",[52,5286,5287],{},"N","（不含）之间的随机整数。",[338,5290,5291,5281,5294,5297,5298,965],{},[52,5292,5293],{},"nextDouble()",[52,5295,5296],{},"[0.0, 1.0)"," 之间的随机 ",[52,5299,978],{},[338,5301,5302,5281,5305,5297,5307,965],{},[52,5303,5304],{},"nextFloat()",[52,5306,5296],{},[52,5308,1803],{},[13,5310,5311],{},[341,5312,4661],{},[45,5314,5316],{"className":409,"code":5315,"language":184,"meta":50,"style":50},"import java.util.Random;\n\nRandom rand = new Random();\nint randomInt = rand.nextInt();\nint randomIntInRange = rand.nextInt(100); \u002F\u002F 0 到 99\ndouble randomDouble = rand.nextDouble(); \u002F\u002F 0.0 到 1.0\n",[52,5317,5318,5325,5329,5343,5359,5383],{"__ignoreMap":50},[55,5319,5320,5322],{"class":57,"line":58},[55,5321,1202],{"class":417},[55,5323,5324],{"class":232}," java.util.Random;\n",[55,5326,5327],{"class":57,"line":226},[55,5328,477],{"emptyLinePlaceholder":476},[55,5330,5331,5334,5336,5338,5341],{"class":57,"line":245},[55,5332,5333],{"class":232},"Random rand ",[55,5335,520],{"class":417},[55,5337,523],{"class":417},[55,5339,5340],{"class":61}," Random",[55,5342,528],{"class":232},[55,5344,5345,5347,5350,5352,5355,5357],{"class":57,"line":450},[55,5346,1250],{"class":417},[55,5348,5349],{"class":232}," randomInt ",[55,5351,520],{"class":417},[55,5353,5354],{"class":232}," rand.",[55,5356,1260],{"class":61},[55,5358,528],{"class":232},[55,5360,5361,5363,5366,5368,5370,5372,5374,5377,5380],{"class":57,"line":467},[55,5362,1250],{"class":417},[55,5364,5365],{"class":232}," randomIntInRange ",[55,5367,520],{"class":417},[55,5369,5354],{"class":232},[55,5371,1260],{"class":61},[55,5373,254],{"class":232},[55,5375,5376],{"class":130},"100",[55,5378,5379],{"class":232},"); ",[55,5381,5382],{"class":432},"\u002F\u002F 0 到 99\n",[55,5384,5385,5387,5390,5392,5394,5396,5398],{"class":57,"line":473},[55,5386,978],{"class":417},[55,5388,5389],{"class":232}," randomDouble ",[55,5391,520],{"class":417},[55,5393,5354],{"class":232},[55,5395,1279],{"class":61},[55,5397,1242],{"class":232},[55,5399,5400],{"class":432},"\u002F\u002F 0.0 到 1.0\n",[13,5402,5403],{},[341,5404,5405,5406,406],{},"生成指定范围的 ",[52,5407,978],{},[45,5409,5411],{"className":409,"code":5410,"language":184,"meta":50,"style":50},"double lowerBound = 5.0;\ndouble upperBound = 10.0;\ndouble randomValue = lowerBound + (upperBound - lowerBound) * rand.nextDouble();\n",[52,5412,5413,5427,5440],{"__ignoreMap":50},[55,5414,5415,5417,5420,5422,5425],{"class":57,"line":58},[55,5416,978],{"class":417},[55,5418,5419],{"class":232}," lowerBound ",[55,5421,520],{"class":417},[55,5423,5424],{"class":130}," 5.0",[55,5426,989],{"class":232},[55,5428,5429,5431,5434,5436,5438],{"class":57,"line":226},[55,5430,978],{"class":417},[55,5432,5433],{"class":232}," upperBound ",[55,5435,520],{"class":417},[55,5437,4581],{"class":130},[55,5439,989],{"class":232},[55,5441,5442,5444,5447,5449,5451,5453,5456,5458,5461,5463,5465,5467],{"class":57,"line":245},[55,5443,978],{"class":417},[55,5445,5446],{"class":232}," randomValue ",[55,5448,520],{"class":417},[55,5450,5419],{"class":232},[55,5452,789],{"class":417},[55,5454,5455],{"class":232}," (upperBound ",[55,5457,785],{"class":417},[55,5459,5460],{"class":232}," lowerBound) ",[55,5462,1553],{"class":417},[55,5464,5354],{"class":232},[55,5466,1279],{"class":61},[55,5468,528],{"class":232},[615,5470],{},[28,5472,5474,5475],{"id":5473},"_72-使用-mathrandom","7.2  使用 ",[52,5476,5477],{},"Math.random()",[13,5479,5480,5482,5483,5485,5486,965],{},[52,5481,5477],{}," 返回 ",[52,5484,5296],{}," 之间的 ",[52,5487,978],{},[13,5489,5490],{},[341,5491,4661],{},[45,5493,5495],{"className":409,"code":5494,"language":184,"meta":50,"style":50},"double randomDouble = Math.random(); \u002F\u002F 0.0 到 1.0\nint randomIntInRange = (int)(Math.random() * 100); \u002F\u002F 0 到 99\n",[52,5496,5497,5514],{"__ignoreMap":50},[55,5498,5499,5501,5503,5505,5507,5510,5512],{"class":57,"line":58},[55,5500,978],{"class":417},[55,5502,5389],{"class":232},[55,5504,520],{"class":417},[55,5506,2855],{"class":232},[55,5508,5509],{"class":61},"random",[55,5511,1242],{"class":232},[55,5513,5400],{"class":432},[55,5515,5516,5518,5520,5522,5524,5526,5529,5531,5533,5535,5538,5540],{"class":57,"line":226},[55,5517,1250],{"class":417},[55,5519,5365],{"class":232},[55,5521,520],{"class":417},[55,5523,2927],{"class":232},[55,5525,1250],{"class":417},[55,5527,5528],{"class":232},")(Math.",[55,5530,5509],{"class":61},[55,5532,1294],{"class":232},[55,5534,1553],{"class":417},[55,5536,5537],{"class":130}," 100",[55,5539,5379],{"class":232},[55,5541,5382],{"class":432},[615,5543],{},[17,5545,5547],{"id":5546},"_8-类与对象基础","8. 类与对象基础",[28,5549,5551],{"id":5550},"_81-类与对象的概念","8.1  类与对象的概念",[335,5553,5554,5557,5564],{},[338,5555,5556],{},"类是对象的蓝图或模板。",[338,5558,5559,5560,5563],{},"对象是类的一个实例，使用 ",[52,5561,5562],{},"new"," 关键字创建。",[338,5565,3039],{},[45,5567,5569],{"className":409,"code":5568,"language":184,"meta":50,"style":50},"Random rand = new Random();\n",[52,5570,5571],{"__ignoreMap":50},[55,5572,5573,5575,5577,5579,5581],{"class":57,"line":58},[55,5574,5333],{"class":232},[55,5576,520],{"class":417},[55,5578,523],{"class":417},[55,5580,5340],{"class":61},[55,5582,528],{"class":232},[13,5584,5585,5586,5588,5589,5592,5593,5595],{},"这里 ",[52,5587,5245],{}," 是类，",[52,5590,5591],{},"rand"," 是对象变量，它引用一个 ",[52,5594,5245],{}," 实例。",[335,5597,5598,5606,5609],{},[338,5599,5600,5601,786,5603,965],{},"类可以表示概念、分类或单例事物，如 ",[52,5602,2250],{},[52,5604,5605],{},"Console",[338,5607,5608],{},"对象可以拥有属性来存储信息，同一个类的不同对象可以有不同的属性值。",[338,5610,5611,5612],{},"类可以有方法：\n",[335,5613,5614,5617],{},[338,5615,5616],{},"静态方法：属于类，通过类名调用。",[338,5618,5619],{},"非静态方法：属于对象，必须先创建对象，再通过对象调用。",[28,5621,5623],{"id":5622},"_82-静态方法与非静态方法的区别","8.2  静态方法与非静态方法的区别",[335,5625,5626,5636],{},[338,5627,5628,406,5631,5633,5634,2264],{},[52,5629,5630],{},"Math.sqrt(2)",[52,5632,2939],{}," 是静态方法，直接通过类名 ",[52,5635,2250],{},[338,5637,5638,406,5641,5643,5644,5646],{},[52,5639,5640],{},"rand.nextInt()",[52,5642,1260],{}," 是非静态方法，必须先创建 ",[52,5645,5245],{}," 对象，再通过对象变量调用。",[45,5648,5650],{"className":409,"code":5649,"language":184,"meta":50,"style":50},"Random rand = new Random();\nint randomInt = rand.nextInt();\n",[52,5651,5652,5664],{"__ignoreMap":50},[55,5653,5654,5656,5658,5660,5662],{"class":57,"line":58},[55,5655,5333],{"class":232},[55,5657,520],{"class":417},[55,5659,523],{"class":417},[55,5661,5340],{"class":61},[55,5663,528],{"class":232},[55,5665,5666,5668,5670,5672,5674,5676],{"class":57,"line":226},[55,5667,1250],{"class":417},[55,5669,5349],{"class":232},[55,5671,520],{"class":417},[55,5673,5354],{"class":232},[55,5675,1260],{"class":61},[55,5677,528],{"class":232},[615,5679],{},[28,5681,5683],{"id":5682},"_83-访问修饰符","8.3 访问修饰符",[13,5685,5686],{},"访问修饰符控制类、方法、字段的可见性。",[719,5688,5689,5711],{},[722,5690,5691],{},[725,5692,5693,5696,5699,5702,5705,5708],{},[728,5694,5695],{},"修饰符",[728,5697,5698],{},"同类",[728,5700,5701],{},"同包子类",[728,5703,5704],{},"同包非子类",[728,5706,5707],{},"不同包子类",[728,5709,5710],{},"不同包非子类",[738,5712,5713,5730,5748,5763],{},[725,5714,5715,5719,5722,5724,5726,5728],{},[743,5716,5717],{},[52,5718,418],{},[743,5720,5721],{},"是",[743,5723,5721],{},[743,5725,5721],{},[743,5727,5721],{},[743,5729,5721],{},[725,5731,5732,5737,5739,5741,5743,5745],{},[743,5733,5734],{},[52,5735,5736],{},"protected",[743,5738,5721],{},[743,5740,5721],{},[743,5742,5721],{},[743,5744,5721],{},[743,5746,5747],{},"否",[725,5749,5750,5753,5755,5757,5759,5761],{},[743,5751,5752],{},"默认（包私有）",[743,5754,5721],{},[743,5756,5721],{},[743,5758,5721],{},[743,5760,5747],{},[743,5762,5747],{},[725,5764,5765,5770,5772,5774,5776,5778],{},[743,5766,5767],{},[52,5768,5769],{},"private",[743,5771,5721],{},[743,5773,5747],{},[743,5775,5747],{},[743,5777,5747],{},[743,5779,5747],{},[13,5781,5782],{},"说明：",[335,5784,5785,5797],{},[338,5786,5787,5788,5790,5791,5793,5794,5796],{},"类级别：",[52,5789,418],{}," 类可被任何其他类访问；默认类只能被同包访问；",[52,5792,5736],{}," 和 ",[52,5795,5769],{}," 不适用于顶层类。",[338,5798,5799,5800],{},"成员级别：\n",[335,5801,5802,5807,5812,5815],{},[338,5803,5804,5806],{},[52,5805,418],{},"：任何类都可访问。",[338,5808,5809,5811],{},[52,5810,5736],{},"：同包及子类可访问。",[338,5813,5814],{},"默认：同包可访问。",[338,5816,5817,5819],{},[52,5818,5769],{},"：仅本类可访问。",[615,5821],{},[28,5823,5825,5826],{"id":5824},"_84-非访问修饰符-static","8.4  非访问修饰符 ",[52,5827,2257],{},[335,5829,5830,5836,5842],{},[338,5831,5832,5833,5835],{},"不加 ",[52,5834,2257],{},"：成员基于实例，必须先有对象，代码中可自动访问实例成员和静态成员。",[338,5837,5838,5839,5841],{},"加 ",[52,5840,2257],{},"：成员不基于实例，无需创建对象即可调用；代码中只能自动访问静态成员。",[338,5843,5844,5847],{},[52,5845,5846],{},"public static","：表示该静态方法可被外部调用者访问。",[615,5849],{},[17,5851,5853],{"id":5852},"_9字符串基础","9.字符串基础",[335,5855,5856,5864,5876,5888],{},[338,5857,5858,5861,5862,965],{},[341,5859,5860],{},"字符串","是一系列字符的集合，使用双引号表示，如 ",[52,5863,1869],{},[338,5865,5866,5867],{},"字符串可以声明为变量：",[45,5868,5870],{"className":409,"code":5869,"language":184,"meta":50,"style":50},"String country;\n",[52,5871,5872],{"__ignoreMap":50},[55,5873,5874],{"class":57,"line":58},[55,5875,5869],{"class":232},[338,5877,5878,5881,5882,5884,5885,5887],{},[341,5879,5880],{},"字符串不可变","：一旦创建了 ",[52,5883,501],{}," 对象，它的内容就不能被修改。任何看似修改字符串的操作，实际上都会创建一个新的 ",[52,5886,501],{}," 对象。",[338,5889,5890,5891,5894],{},"字符串字面量本身也是对象，可以不声明变量直接用，比如 ",[52,5892,5893],{},"\"Hello\".length()"," 直接就能拿到 5。",[615,5896],{},[28,5898,5900],{"id":5899},"_91-字符串连接","9.1 字符串连接",[335,5902,5903,5927],{},[338,5904,5905,5906,5908,5909],{},"使用 ",[52,5907,789],{}," 运算符可以将两个字符串连接起来：",[45,5910,5912],{"className":409,"code":5911,"language":184,"meta":50,"style":50},"\"Hello, \" + \"world\"  \u002F\u002F 结果是 \"Hello, world\"\n",[52,5913,5914],{"__ignoreMap":50},[55,5915,5916,5919,5921,5924],{"class":57,"line":58},[55,5917,5918],{"class":65},"\"Hello, \"",[55,5920,4027],{"class":417},[55,5922,5923],{"class":65}," \"world\"",[55,5925,5926],{"class":432},"  \u002F\u002F 结果是 \"Hello, world\"\n",[338,5928,5929,5930,5933,5934],{},"也可以使用 ",[52,5931,5932],{},"concat(String)"," 方法：",[45,5935,5937],{"className":409,"code":5936,"language":184,"meta":50,"style":50},"String str1 = \"Hello, \";\nString str2 = \"world\";\nSystem.out.println(str1.concat(str2)); \u002F\u002F Hello, world\n",[52,5938,5939,5951,5962],{"__ignoreMap":50},[55,5940,5941,5944,5946,5949],{"class":57,"line":58},[55,5942,5943],{"class":232},"String str1 ",[55,5945,520],{"class":417},[55,5947,5948],{"class":65}," \"Hello, \"",[55,5950,989],{"class":232},[55,5952,5953,5956,5958,5960],{"class":57,"line":226},[55,5954,5955],{"class":232},"String str2 ",[55,5957,520],{"class":417},[55,5959,5923],{"class":65},[55,5961,989],{"class":232},[55,5963,5964,5966,5968,5971,5974,5977],{"class":57,"line":245},[55,5965,865],{"class":232},[55,5967,456],{"class":61},[55,5969,5970],{"class":232},"(str1.",[55,5972,5973],{"class":61},"concat",[55,5975,5976],{"class":232},"(str2)); ",[55,5978,5979],{"class":432},"\u002F\u002F Hello, world\n",[615,5981],{},[28,5983,5985],{"id":5984},"_92-常用字符串方法","9.2 常用字符串方法",[98,5987,5989,5990],{"id":5988},"_921-length","9.2.1 ",[52,5991,5992],{},"length()",[13,5994,5995],{},"返回字符串的长度（字符个数）。",[45,5997,5999],{"className":409,"code":5998,"language":184,"meta":50,"style":50},"String s = \"666\";\nSystem.out.println(s.length()); \u002F\u002F 3\n",[52,6000,6001,6013],{"__ignoreMap":50},[55,6002,6003,6006,6008,6011],{"class":57,"line":58},[55,6004,6005],{"class":232},"String s ",[55,6007,520],{"class":417},[55,6009,6010],{"class":65}," \"666\"",[55,6012,989],{"class":232},[55,6014,6015,6017,6019,6022,6025,6028],{"class":57,"line":226},[55,6016,865],{"class":232},[55,6018,456],{"class":61},[55,6020,6021],{"class":232},"(s.",[55,6023,6024],{"class":61},"length",[55,6026,6027],{"class":232},"()); ",[55,6029,6030],{"class":432},"\u002F\u002F 3\n",[98,6032,6034,6035],{"id":6033},"_922-trim","9.2.2 ",[52,6036,6037],{},"trim()",[13,6039,6040],{},"去除字符串开头和结尾的空白字符，不处理中间的空格。",[45,6042,6044],{"className":409,"code":6043,"language":184,"meta":50,"style":50},"String s = \" abc \";\nSystem.out.println(s.trim()); \u002F\u002F \"abc\"\n",[52,6045,6046,6057],{"__ignoreMap":50},[55,6047,6048,6050,6052,6055],{"class":57,"line":58},[55,6049,6005],{"class":232},[55,6051,520],{"class":417},[55,6053,6054],{"class":65}," \" abc \"",[55,6056,989],{"class":232},[55,6058,6059,6061,6063,6065,6068,6070],{"class":57,"line":226},[55,6060,865],{"class":232},[55,6062,456],{"class":61},[55,6064,6021],{"class":232},[55,6066,6067],{"class":61},"trim",[55,6069,6027],{"class":232},[55,6071,6072],{"class":432},"\u002F\u002F \"abc\"\n",[98,6074,6076,6077],{"id":6075},"_923-substringint-beginindex-int-endindex","9.2.3 ",[52,6078,6079],{},"substring(int beginIndex, int endIndex)",[13,6081,6082,6083,6086,6087,6090],{},"返回从 ",[52,6084,6085],{},"beginIndex"," 到 ",[52,6088,6089],{},"endIndex - 1"," 的子串。如果只给一个参数，则从该索引一直到末尾。",[45,6092,6094],{"className":409,"code":6093,"language":184,"meta":50,"style":50},"String s = \"fundamental\";\nSystem.out.println(s.substring(4, 7)); \u002F\u002F \"ame\"\nSystem.out.println(s.substring(0));    \u002F\u002F \"fundamental\"\n",[52,6095,6096,6107,6133],{"__ignoreMap":50},[55,6097,6098,6100,6102,6105],{"class":57,"line":58},[55,6099,6005],{"class":232},[55,6101,520],{"class":417},[55,6103,6104],{"class":65}," \"fundamental\"",[55,6106,989],{"class":232},[55,6108,6109,6111,6113,6115,6118,6120,6123,6125,6127,6130],{"class":57,"line":226},[55,6110,865],{"class":232},[55,6112,456],{"class":61},[55,6114,6021],{"class":232},[55,6116,6117],{"class":61},"substring",[55,6119,254],{"class":232},[55,6121,6122],{"class":130},"4",[55,6124,876],{"class":232},[55,6126,1068],{"class":130},[55,6128,6129],{"class":232},")); ",[55,6131,6132],{"class":432},"\u002F\u002F \"ame\"\n",[55,6134,6135,6137,6139,6141,6143,6145,6147,6150],{"class":57,"line":245},[55,6136,865],{"class":232},[55,6138,456],{"class":61},[55,6140,6021],{"class":232},[55,6142,6117],{"class":61},[55,6144,254],{"class":232},[55,6146,792],{"class":130},[55,6148,6149],{"class":232},"));    ",[55,6151,6152],{"class":432},"\u002F\u002F \"fundamental\"\n",[98,6154,6156,6157],{"id":6155},"_924-equalsstring","9.2.4 ",[52,6158,6159],{},"equals(String)",[13,6161,6162,6163,1839,6165,965],{},"比较两个字符串的内容是否完全相同，返回 ",[52,6164,1838],{},[52,6166,1842],{},[45,6168,6170],{"className":409,"code":6169,"language":184,"meta":50,"style":50},"String s = \"abc\";\nString r = \"xyz\";\nSystem.out.println(s.equals(r));     \u002F\u002F false\nSystem.out.println(s.equals(\"abc\")); \u002F\u002F true\n",[52,6171,6172,6183,6195,6211],{"__ignoreMap":50},[55,6173,6174,6176,6178,6181],{"class":57,"line":58},[55,6175,6005],{"class":232},[55,6177,520],{"class":417},[55,6179,6180],{"class":65}," \"abc\"",[55,6182,989],{"class":232},[55,6184,6185,6188,6190,6193],{"class":57,"line":226},[55,6186,6187],{"class":232},"String r ",[55,6189,520],{"class":417},[55,6191,6192],{"class":65}," \"xyz\"",[55,6194,989],{"class":232},[55,6196,6197,6199,6201,6203,6205,6208],{"class":57,"line":245},[55,6198,865],{"class":232},[55,6200,456],{"class":61},[55,6202,6021],{"class":232},[55,6204,4069],{"class":61},[55,6206,6207],{"class":232},"(r));     ",[55,6209,6210],{"class":432},"\u002F\u002F false\n",[55,6212,6213,6215,6217,6219,6221,6223,6226,6228],{"class":57,"line":450},[55,6214,865],{"class":232},[55,6216,456],{"class":61},[55,6218,6021],{"class":232},[55,6220,4069],{"class":61},[55,6222,254],{"class":232},[55,6224,6225],{"class":65},"\"abc\"",[55,6227,6129],{"class":232},[55,6229,6230],{"class":432},"\u002F\u002F true\n",[98,6232,6234,6235],{"id":6233},"_925comparetostring","9.2.5",[52,6236,6237],{},"compareTo(String)",[13,6239,6240],{},"按字典序（Unicode 值）比较两个字符串：",[335,6242,6243,6246,6249,6252],{},[338,6244,6245],{},"若当前字符串大于参数，返回正数；",[338,6247,6248],{},"若小于参数，返回负数；",[338,6250,6251],{},"若相等，返回 0。",[338,6253,6254],{},"区分大小写，且短字符串是长字符串的前缀时，短字符串被认为更小。",[45,6256,6258],{"className":409,"code":6257,"language":184,"meta":50,"style":50},"\"apple\".compareTo(\"banana\"); \u002F\u002F 负数\n\"apple\".compareTo(\"apple\");  \u002F\u002F 0\n\"apple\".compareTo(\"Apple\");  \u002F\u002F 正数\n\"apple\".compareTo(\"apples\"); \u002F\u002F 负数\n",[52,6259,6260,6281,6299,6317],{"__ignoreMap":50},[55,6261,6262,6265,6268,6271,6273,6276,6278],{"class":57,"line":58},[55,6263,6264],{"class":65},"\"apple\"",[55,6266,6267],{"class":232},".",[55,6269,6270],{"class":61},"compareTo",[55,6272,254],{"class":232},[55,6274,6275],{"class":65},"\"banana\"",[55,6277,5379],{"class":232},[55,6279,6280],{"class":432},"\u002F\u002F 负数\n",[55,6282,6283,6285,6287,6289,6291,6293,6296],{"class":57,"line":226},[55,6284,6264],{"class":65},[55,6286,6267],{"class":232},[55,6288,6270],{"class":61},[55,6290,254],{"class":232},[55,6292,6264],{"class":65},[55,6294,6295],{"class":232},");  ",[55,6297,6298],{"class":432},"\u002F\u002F 0\n",[55,6300,6301,6303,6305,6307,6309,6312,6314],{"class":57,"line":245},[55,6302,6264],{"class":65},[55,6304,6267],{"class":232},[55,6306,6270],{"class":61},[55,6308,254],{"class":232},[55,6310,6311],{"class":65},"\"Apple\"",[55,6313,6295],{"class":232},[55,6315,6316],{"class":432},"\u002F\u002F 正数\n",[55,6318,6319,6321,6323,6325,6327,6330,6332],{"class":57,"line":450},[55,6320,6264],{"class":65},[55,6322,6267],{"class":232},[55,6324,6270],{"class":61},[55,6326,254],{"class":232},[55,6328,6329],{"class":65},"\"apples\"",[55,6331,5379],{"class":232},[55,6333,6280],{"class":432},[98,6335,6337,6338,6341,6342],{"id":6336},"_926-tolowercase-与-touppercase","9.2.6 ",[52,6339,6340],{},"toLowerCase()"," 与 ",[52,6343,6344],{},"toUpperCase()",[13,6346,6347],{},"将字符串全部转换为小写或大写。",[45,6349,6351],{"className":409,"code":6350,"language":184,"meta":50,"style":50},"String s = \"A Nice Dog\";\nSystem.out.println(s.toLowerCase()); \u002F\u002F a nice dog\nSystem.out.println(s.toUpperCase()); \u002F\u002F A NICE DOG\n",[52,6352,6353,6364,6380],{"__ignoreMap":50},[55,6354,6355,6357,6359,6362],{"class":57,"line":58},[55,6356,6005],{"class":232},[55,6358,520],{"class":417},[55,6360,6361],{"class":65}," \"A Nice Dog\"",[55,6363,989],{"class":232},[55,6365,6366,6368,6370,6372,6375,6377],{"class":57,"line":226},[55,6367,865],{"class":232},[55,6369,456],{"class":61},[55,6371,6021],{"class":232},[55,6373,6374],{"class":61},"toLowerCase",[55,6376,6027],{"class":232},[55,6378,6379],{"class":432},"\u002F\u002F a nice dog\n",[55,6381,6382,6384,6386,6388,6391,6393],{"class":57,"line":245},[55,6383,865],{"class":232},[55,6385,456],{"class":61},[55,6387,6021],{"class":232},[55,6389,6390],{"class":61},"toUpperCase",[55,6392,6027],{"class":232},[55,6394,6395],{"class":432},"\u002F\u002F A NICE DOG\n",[98,6397,6399,6400],{"id":6398},"_927splitstring-regex","9.2.7",[52,6401,6402],{},"split(String regex)",[13,6404,6405],{},"根据指定的正则表达式将字符串分割成字符串数组。",[45,6407,6409],{"className":409,"code":6408,"language":184,"meta":50,"style":50},"String authors = \"Alice, Bob, Carol\";\nString[] authorsList = authors.split(\",\");\n\u002F\u002F authorsList[0] = \"Alice\"\n\u002F\u002F authorsList[1] = \" Bob\"\n\u002F\u002F authorsList[2] = \" Carol\"\n",[52,6410,6411,6423,6445,6450,6455],{"__ignoreMap":50},[55,6412,6413,6416,6418,6421],{"class":57,"line":58},[55,6414,6415],{"class":232},"String authors ",[55,6417,520],{"class":417},[55,6419,6420],{"class":65}," \"Alice, Bob, Carol\"",[55,6422,989],{"class":232},[55,6424,6425,6427,6430,6432,6435,6438,6440,6443],{"class":57,"line":226},[55,6426,501],{"class":417},[55,6428,6429],{"class":232},"[] authorsList ",[55,6431,520],{"class":417},[55,6433,6434],{"class":232}," authors.",[55,6436,6437],{"class":61},"split",[55,6439,254],{"class":232},[55,6441,6442],{"class":65},"\",\"",[55,6444,464],{"class":232},[55,6446,6447],{"class":57,"line":245},[55,6448,6449],{"class":432},"\u002F\u002F authorsList[0] = \"Alice\"\n",[55,6451,6452],{"class":57,"line":450},[55,6453,6454],{"class":432},"\u002F\u002F authorsList[1] = \" Bob\"\n",[55,6456,6457],{"class":57,"line":467},[55,6458,6459],{"class":432},"\u002F\u002F authorsList[2] = \" Carol\"\n",[98,6461,6463,6464],{"id":6462},"_928-containscharsequence-s","9.2.8 ",[52,6465,6466],{},"contains(CharSequence s)",[13,6468,6469,6470,1839,6472,6474,6475,6478,6479,965],{},"检查字符串是否包含指定的字符序列，返回 ",[52,6471,1838],{},[52,6473,1842],{},"。\n如果参数为 ",[52,6476,6477],{},"null","，会抛出 ",[52,6480,6481],{},"NullPointerException",[45,6483,6485],{"className":409,"code":6484,"language":184,"meta":50,"style":50},"\"Hello, World!\".contains(\"Hello\"); \u002F\u002F true\n\"Hello, World!\".contains(\"Java\");  \u002F\u002F false\n",[52,6486,6487,6505],{"__ignoreMap":50},[55,6488,6489,6492,6494,6497,6499,6501,6503],{"class":57,"line":58},[55,6490,6491],{"class":65},"\"Hello, World!\"",[55,6493,6267],{"class":232},[55,6495,6496],{"class":61},"contains",[55,6498,254],{"class":232},[55,6500,1869],{"class":65},[55,6502,5379],{"class":232},[55,6504,6230],{"class":432},[55,6506,6507,6509,6511,6513,6515,6518,6520],{"class":57,"line":226},[55,6508,6491],{"class":65},[55,6510,6267],{"class":232},[55,6512,6496],{"class":61},[55,6514,254],{"class":232},[55,6516,6517],{"class":65},"\"Java\"",[55,6519,6295],{"class":232},[55,6521,6210],{"class":432},[98,6523,6525,6526],{"id":6524},"_929-charatint-index","9.2.9 ",[52,6527,6528],{},"charAt(int index)",[13,6530,6531,6532,6535],{},"返回指定索引处的字符。索引从 0 开始，到 ",[52,6533,6534],{},"length() - 1"," 结束。",[45,6537,6539],{"className":409,"code":6538,"language":184,"meta":50,"style":50},"String str = \"Police\";\nSystem.out.println(str.charAt(0)); \u002F\u002F 'P'\nSystem.out.println(str.charAt(2)); \u002F\u002F 'l'\n",[52,6540,6541,6553,6574],{"__ignoreMap":50},[55,6542,6543,6546,6548,6551],{"class":57,"line":58},[55,6544,6545],{"class":232},"String str ",[55,6547,520],{"class":417},[55,6549,6550],{"class":65}," \"Police\"",[55,6552,989],{"class":232},[55,6554,6555,6557,6559,6562,6565,6567,6569,6571],{"class":57,"line":226},[55,6556,865],{"class":232},[55,6558,456],{"class":61},[55,6560,6561],{"class":232},"(str.",[55,6563,6564],{"class":61},"charAt",[55,6566,254],{"class":232},[55,6568,792],{"class":130},[55,6570,6129],{"class":232},[55,6572,6573],{"class":432},"\u002F\u002F 'P'\n",[55,6575,6576,6578,6580,6582,6584,6586,6588,6590],{"class":57,"line":245},[55,6577,865],{"class":232},[55,6579,456],{"class":61},[55,6581,6561],{"class":232},[55,6583,6564],{"class":61},[55,6585,254],{"class":232},[55,6587,2864],{"class":130},[55,6589,6129],{"class":232},[55,6591,6592],{"class":432},"\u002F\u002F 'l'\n",[98,6594,6596,6597,6341,6600],{"id":6595},"_9210-replacechar-oldchar-char-newchar-与-replacecharsequence-target-charsequence-replacement","9.2.10 ",[52,6598,6599],{},"replace(char oldChar, char newChar)",[52,6601,6602],{},"replace(CharSequence target, CharSequence replacement)",[13,6604,6605],{},"将字符串中指定的字符或字符序列替换为新的字符或序列。",[45,6607,6609],{"className":409,"code":6608,"language":184,"meta":50,"style":50},"\"Hello, World!\".replace('o', '0');          \u002F\u002F \"Hell0, W0rld!\"\n\"Hello, World!\".replace(\"World\", \"Java\");   \u002F\u002F \"Hello, Java!\"\n",[52,6610,6611,6636],{"__ignoreMap":50},[55,6612,6613,6615,6617,6620,6622,6625,6627,6630,6633],{"class":57,"line":58},[55,6614,6491],{"class":65},[55,6616,6267],{"class":232},[55,6618,6619],{"class":61},"replace",[55,6621,254],{"class":232},[55,6623,6624],{"class":65},"'o'",[55,6626,876],{"class":232},[55,6628,6629],{"class":65},"'0'",[55,6631,6632],{"class":232},");          ",[55,6634,6635],{"class":432},"\u002F\u002F \"Hell0, W0rld!\"\n",[55,6637,6638,6640,6642,6644,6646,6649,6651,6653,6656],{"class":57,"line":226},[55,6639,6491],{"class":65},[55,6641,6267],{"class":232},[55,6643,6619],{"class":61},[55,6645,254],{"class":232},[55,6647,6648],{"class":65},"\"World\"",[55,6650,876],{"class":232},[55,6652,6517],{"class":65},[55,6654,6655],{"class":232},");   ",[55,6657,6658],{"class":432},"\u002F\u002F \"Hello, Java!\"\n",[615,6660],{},[28,6662,6664],{"id":6663},"_93-stringbuffer-类可选","9.3 StringBuffer 类（可选）",[335,6666,6667,6677],{},[338,6668,6669,6672,6673,6676],{},[52,6670,6671],{},"StringBuffer"," 用于创建",[341,6674,6675],{},"可变的字符串对象","，内容可以修改。",[338,6678,6679,6680,6682,6683,6685],{},"与 ",[52,6681,501],{}," 不同，",[52,6684,6671],{}," 修改后不会创建新对象。",[98,6687,6689],{"id":6688},"_931-构造方法","9.3.1 构造方法",[335,6691,6692,6698,6704],{},[338,6693,6694,6697],{},[52,6695,6696],{},"StringBuffer()","：创建空缓冲区，初始容量 16。",[338,6699,6700,6703],{},[52,6701,6702],{},"StringBuffer(String str)","：用指定字符串初始化。",[338,6705,6706,6709],{},[52,6707,6708],{},"StringBuffer(int capacity)","：指定初始容量。",[45,6711,6713],{"className":409,"code":6712,"language":184,"meta":50,"style":50},"StringBuffer srb1 = new StringBuffer();\nStringBuffer srb2 = new StringBuffer(\"This is a StringBuffer\");\nStringBuffer srb3 = new StringBuffer(12);\n",[52,6714,6715,6729,6747],{"__ignoreMap":50},[55,6716,6717,6720,6722,6724,6727],{"class":57,"line":58},[55,6718,6719],{"class":232},"StringBuffer srb1 ",[55,6721,520],{"class":417},[55,6723,523],{"class":417},[55,6725,6726],{"class":61}," StringBuffer",[55,6728,528],{"class":232},[55,6730,6731,6734,6736,6738,6740,6742,6745],{"class":57,"line":226},[55,6732,6733],{"class":232},"StringBuffer srb2 ",[55,6735,520],{"class":417},[55,6737,523],{"class":417},[55,6739,6726],{"class":61},[55,6741,254],{"class":232},[55,6743,6744],{"class":65},"\"This is a StringBuffer\"",[55,6746,464],{"class":232},[55,6748,6749,6752,6754,6756,6758,6760,6763],{"class":57,"line":245},[55,6750,6751],{"class":232},"StringBuffer srb3 ",[55,6753,520],{"class":417},[55,6755,523],{"class":417},[55,6757,6726],{"class":61},[55,6759,254],{"class":232},[55,6761,6762],{"class":130},"12",[55,6764,464],{"class":232},[98,6766,6768],{"id":6767},"_932-常用方法","9.3.2 常用方法",[335,6770,6771,6777,6783,6789,6795],{},[338,6772,6773,6776],{},[52,6774,6775],{},"append(String str)","：追加字符串。",[338,6778,6779,6782],{},[52,6780,6781],{},"insert(int offset, String str)","：在指定位置插入字符串。",[338,6784,6785,6788],{},[52,6786,6787],{},"replace(int beginIndex, int endIndex, String str)","：替换指定范围的子串。",[338,6790,6791,6794],{},[52,6792,6793],{},"delete(int beginIndex, int endIndex)","：删除指定范围的子串。",[338,6796,6797,6800],{},[52,6798,6799],{},"reverse()","：反转字符串。",[45,6802,6804],{"className":409,"code":6803,"language":184,"meta":50,"style":50},"StringBuffer sbr = new StringBuffer(\"Hello \");\nsbr.append(\"Java\");                \u002F\u002F \"Hello Java\"\nsbr.insert(6, \"welcome to \");      \u002F\u002F \"Hello welcome to Java\"\nsbr.delete(0, 6);                  \u002F\u002F \"welcome to Java\"\n",[52,6805,6806,6824,6842,6864],{"__ignoreMap":50},[55,6807,6808,6811,6813,6815,6817,6819,6822],{"class":57,"line":58},[55,6809,6810],{"class":232},"StringBuffer sbr ",[55,6812,520],{"class":417},[55,6814,523],{"class":417},[55,6816,6726],{"class":61},[55,6818,254],{"class":232},[55,6820,6821],{"class":65},"\"Hello \"",[55,6823,464],{"class":232},[55,6825,6826,6829,6832,6834,6836,6839],{"class":57,"line":226},[55,6827,6828],{"class":232},"sbr.",[55,6830,6831],{"class":61},"append",[55,6833,254],{"class":232},[55,6835,6517],{"class":65},[55,6837,6838],{"class":232},");                ",[55,6840,6841],{"class":432},"\u002F\u002F \"Hello Java\"\n",[55,6843,6844,6846,6849,6851,6853,6855,6858,6861],{"class":57,"line":245},[55,6845,6828],{"class":232},[55,6847,6848],{"class":61},"insert",[55,6850,254],{"class":232},[55,6852,4694],{"class":130},[55,6854,876],{"class":232},[55,6856,6857],{"class":65},"\"welcome to \"",[55,6859,6860],{"class":232},");      ",[55,6862,6863],{"class":432},"\u002F\u002F \"Hello welcome to Java\"\n",[55,6865,6866,6868,6871,6873,6875,6877,6879,6882],{"class":57,"line":450},[55,6867,6828],{"class":232},[55,6869,6870],{"class":61},"delete",[55,6872,254],{"class":232},[55,6874,792],{"class":130},[55,6876,876],{"class":232},[55,6878,4694],{"class":130},[55,6880,6881],{"class":232},");                  ",[55,6883,6884],{"class":432},"\u002F\u002F \"welcome to Java\"\n",[615,6886],{},[28,6888,6890],{"id":6889},"_94-字符串与字符","9.4 字符串与字符",[335,6892,6893,6900,6912,6988],{},[338,6894,6895,6897,6898,965],{},[52,6896,501],{}," 存储零个或多个字符，用双引号，如 ",[52,6899,6225],{},[338,6901,6902,6904,6905,6908,6909,965],{},[52,6903,1822],{}," 存储",[341,6906,6907],{},"单个字符","，用单引号，如 ",[52,6910,6911],{},"'a'",[338,6913,6914,5482,6917,6919,6920,5482,6923,6925,6926],{},[52,6915,6916],{},"s.charAt(3)",[52,6918,1822],{}," 类型，",[52,6921,6922],{},"s.substring(3, 4)",[52,6924,501],{}," 类型，但内容可能相同。",[45,6927,6929],{"className":409,"code":6928,"language":184,"meta":50,"style":50},"String s = \"Hello\";\nchar c = s.charAt(3);           \u002F\u002F 'l'\nString sub = s.substring(3, 4); \u002F\u002F \"l\"\n",[52,6930,6931,6942,6964],{"__ignoreMap":50},[55,6932,6933,6935,6937,6940],{"class":57,"line":58},[55,6934,6005],{"class":232},[55,6936,520],{"class":417},[55,6938,6939],{"class":65}," \"Hello\"",[55,6941,989],{"class":232},[55,6943,6944,6946,6948,6950,6953,6955,6957,6959,6962],{"class":57,"line":226},[55,6945,1822],{"class":417},[55,6947,4369],{"class":232},[55,6949,520],{"class":417},[55,6951,6952],{"class":232}," s.",[55,6954,6564],{"class":61},[55,6956,254],{"class":232},[55,6958,4699],{"class":130},[55,6960,6961],{"class":232},");           ",[55,6963,6592],{"class":432},[55,6965,6966,6969,6971,6973,6975,6977,6979,6981,6983,6985],{"class":57,"line":245},[55,6967,6968],{"class":232},"String sub ",[55,6970,520],{"class":417},[55,6972,6952],{"class":232},[55,6974,6117],{"class":61},[55,6976,254],{"class":232},[55,6978,4699],{"class":130},[55,6980,876],{"class":232},[55,6982,6122],{"class":130},[55,6984,5379],{"class":232},[55,6986,6987],{"class":432},"\u002F\u002F \"l\"\n",[338,6989,6990,6991,6993,6994,965],{},"字符串中的字符可以单独读取，但不能直接修改，因为 ",[52,6992,501],{}," 不可变。如果需要修改字符，可以使用 ",[52,6995,6671],{},[98,6997,6999],{"id":6998},"_941-char-的整数特性","9.4.1 char 的整数特性",[335,7001,7002,7010],{},[338,7003,7004,7006,7007,7009],{},[52,7005,1822],{}," 可以隐式转换为 ",[52,7008,1250],{},"，也可以参与算术运算。",[338,7011,7012],{},"字符在计算机内部以数值形式存储（Unicode 码点）。",[45,7014,7016],{"className":409,"code":7015,"language":184,"meta":50,"style":50},"char x = 'a';\nSystem.out.println(x);        \u002F\u002F a\nint y = x;\nSystem.out.println(y);        \u002F\u002F 97\nSystem.out.println((char) y); \u002F\u002F a\nSystem.out.println('9' - '0'); \u002F\u002F 9\nSystem.out.println('z' - 'a'); \u002F\u002F 25\n",[52,7017,7018,7032,7044,7056,7068,7084,7106],{"__ignoreMap":50},[55,7019,7020,7022,7025,7027,7030],{"class":57,"line":58},[55,7021,1822],{"class":417},[55,7023,7024],{"class":232}," x ",[55,7026,520],{"class":417},[55,7028,7029],{"class":65}," 'a'",[55,7031,989],{"class":232},[55,7033,7034,7036,7038,7041],{"class":57,"line":226},[55,7035,865],{"class":232},[55,7037,456],{"class":61},[55,7039,7040],{"class":232},"(x);        ",[55,7042,7043],{"class":432},"\u002F\u002F a\n",[55,7045,7046,7048,7051,7053],{"class":57,"line":245},[55,7047,1250],{"class":417},[55,7049,7050],{"class":232}," y ",[55,7052,520],{"class":417},[55,7054,7055],{"class":232}," x;\n",[55,7057,7058,7060,7062,7065],{"class":57,"line":450},[55,7059,865],{"class":232},[55,7061,456],{"class":61},[55,7063,7064],{"class":232},"(y);        ",[55,7066,7067],{"class":432},"\u002F\u002F 97\n",[55,7069,7070,7072,7074,7077,7079,7082],{"class":57,"line":467},[55,7071,865],{"class":232},[55,7073,456],{"class":61},[55,7075,7076],{"class":232},"((",[55,7078,1822],{"class":417},[55,7080,7081],{"class":232},") y); ",[55,7083,7043],{"class":432},[55,7085,7086,7088,7090,7092,7095,7098,7101,7103],{"class":57,"line":473},[55,7087,865],{"class":232},[55,7089,456],{"class":61},[55,7091,254],{"class":232},[55,7093,7094],{"class":65},"'9'",[55,7096,7097],{"class":417}," -",[55,7099,7100],{"class":65}," '0'",[55,7102,5379],{"class":232},[55,7104,7105],{"class":432},"\u002F\u002F 9\n",[55,7107,7108,7110,7112,7114,7117,7119,7121,7123],{"class":57,"line":480},[55,7109,865],{"class":232},[55,7111,456],{"class":61},[55,7113,254],{"class":232},[55,7115,7116],{"class":65},"'z'",[55,7118,7097],{"class":417},[55,7120,7029],{"class":65},[55,7122,5379],{"class":232},[55,7124,7125],{"class":432},"\u002F\u002F 25\n",[615,7127],{},[17,7129,7131],{"id":7130},"_10-数组的概念","10. 数组的概念",[335,7133,7134,7144,7157],{},[338,7135,7136,7137,7140,7141,965],{},"数组用于存储",[341,7138,7139],{},"同一类型","的多个值，这些值在内存中",[341,7142,7143],{},"连续存放",[338,7145,7146,7147,7150,7151,7153,7154,6535],{},"数组通过",[341,7148,7149],{},"索引","访问元素，索引从 ",[52,7152,792],{}," 开始，到 ",[52,7155,7156],{},"长度 - 1",[338,7158,7159,7160],{},"使用索引变量可以方便地表示一组相关的数据，例如：\n",[335,7161,7162,7168],{},[338,7163,7164,7167],{},[52,7165,7166],{},"Sales[Month]"," 表示各月销售额；",[338,7169,7170,7173],{},[52,7171,7172],{},"Marks[Student][Subject]"," 表示学生各科成绩，是一个二维数组。",[13,7175,7176],{},[341,7177,7178],{},"为什么使用数组：",[335,7180,7181,7184],{},[338,7182,7183],{},"用一个变量名加不同索引代替多个独立变量，便于统一管理和循环处理。",[338,7185,7186],{},"计算机为数组分配连续内存，通过起始地址和偏移量定位元素。",[615,7188],{},[28,7190,7192],{"id":7191},"_101一维数组","10.1一维数组",[98,7194,7196],{"id":7195},"_1011-声明与实例化","10.1.1  声明与实例化",[13,7198,7199],{},"Java 数组的声明方式有三种写法，推荐第一种：",[45,7201,7203],{"className":409,"code":7202,"language":184,"meta":50,"style":50},"int[] marks;        \u002F\u002F 推荐\nint []grade;\nint gpa[];\n",[52,7204,7205,7215,7222],{"__ignoreMap":50},[55,7206,7207,7209,7212],{"class":57,"line":58},[55,7208,1250],{"class":417},[55,7210,7211],{"class":232},"[] marks;        ",[55,7213,7214],{"class":432},"\u002F\u002F 推荐\n",[55,7216,7217,7219],{"class":57,"line":226},[55,7218,1250],{"class":417},[55,7220,7221],{"class":232}," []grade;\n",[55,7223,7224,7226],{"class":57,"line":245},[55,7225,1250],{"class":417},[55,7227,7228],{"class":232}," gpa[];\n",[13,7230,7231],{},"实例化数组需要指定大小：",[45,7233,7235],{"className":409,"code":7234,"language":184,"meta":50,"style":50},"marks = new int[5];  \u002F\u002F 长度为 5，索引 0 到 4\n",[52,7236,7237],{"__ignoreMap":50},[55,7238,7239,7242,7244,7246,7248,7251,7254,7257],{"class":57,"line":58},[55,7240,7241],{"class":232},"marks ",[55,7243,520],{"class":417},[55,7245,523],{"class":417},[55,7247,3956],{"class":417},[55,7249,7250],{"class":232},"[",[55,7252,7253],{"class":130},"5",[55,7255,7256],{"class":232},"];  ",[55,7258,7259],{"class":432},"\u002F\u002F 长度为 5，索引 0 到 4\n",[13,7261,7262],{},"也可以声明和实例化合并：",[45,7264,7266],{"className":409,"code":7265,"language":184,"meta":50,"style":50},"int[] marks = new int[5];\n",[52,7267,7268],{"__ignoreMap":50},[55,7269,7270,7272,7275,7277,7279,7281,7283,7285],{"class":57,"line":58},[55,7271,1250],{"class":417},[55,7273,7274],{"class":232},"[] marks ",[55,7276,520],{"class":417},[55,7278,523],{"class":417},[55,7280,3956],{"class":417},[55,7282,7250],{"class":232},[55,7284,7253],{"class":130},[55,7286,7287],{"class":232},"];\n",[98,7289,7291],{"id":7290},"_1012-初始化","10.1.2 初始化",[13,7293,7294],{},"可以在声明时直接给出初始值，此时不需要指定长度：",[45,7296,7298],{"className":409,"code":7297,"language":184,"meta":50,"style":50},"int[] A = new int[] {12, 3, 8, 45, 2};\ndouble[] E = new double[] {10.0, 5.3, 6.9, 0.0, 2};\nString[] EmpName = new String[] {\"Chris\", \"John\", \"Sabina\"};\n",[52,7299,7300,7338,7378],{"__ignoreMap":50},[55,7301,7302,7304,7307,7309,7311,7313,7316,7318,7320,7322,7324,7327,7329,7332,7334,7336],{"class":57,"line":58},[55,7303,1250],{"class":417},[55,7305,7306],{"class":232},"[] A ",[55,7308,520],{"class":417},[55,7310,523],{"class":417},[55,7312,3956],{"class":417},[55,7314,7315],{"class":232},"[] {",[55,7317,6762],{"class":130},[55,7319,876],{"class":232},[55,7321,4699],{"class":130},[55,7323,876],{"class":232},[55,7325,7326],{"class":130},"8",[55,7328,876],{"class":232},[55,7330,7331],{"class":130},"45",[55,7333,876],{"class":232},[55,7335,2864],{"class":130},[55,7337,4702],{"class":232},[55,7339,7340,7342,7345,7347,7349,7352,7354,7357,7359,7362,7364,7367,7369,7372,7374,7376],{"class":57,"line":226},[55,7341,978],{"class":417},[55,7343,7344],{"class":232},"[] E ",[55,7346,520],{"class":417},[55,7348,523],{"class":417},[55,7350,7351],{"class":417}," double",[55,7353,7315],{"class":232},[55,7355,7356],{"class":130},"10.0",[55,7358,876],{"class":232},[55,7360,7361],{"class":130},"5.3",[55,7363,876],{"class":232},[55,7365,7366],{"class":130},"6.9",[55,7368,876],{"class":232},[55,7370,7371],{"class":130},"0.0",[55,7373,876],{"class":232},[55,7375,2864],{"class":130},[55,7377,4702],{"class":232},[55,7379,7380,7382,7385,7387,7389,7392,7394,7397,7399,7402,7404,7407],{"class":57,"line":245},[55,7381,501],{"class":417},[55,7383,7384],{"class":232},"[] EmpName ",[55,7386,520],{"class":417},[55,7388,523],{"class":417},[55,7390,7391],{"class":417}," String",[55,7393,7315],{"class":232},[55,7395,7396],{"class":65},"\"Chris\"",[55,7398,876],{"class":232},[55,7400,7401],{"class":65},"\"John\"",[55,7403,876],{"class":232},[55,7405,7406],{"class":65},"\"Sabina\"",[55,7408,4702],{"class":232},[13,7410,7411],{},"也可以简写为：",[45,7413,7415],{"className":409,"code":7414,"language":184,"meta":50,"style":50},"int[] A = {12, 3, 8, 45, 2};\n",[52,7416,7417],{"__ignoreMap":50},[55,7418,7419,7421,7423,7425,7427,7429,7431,7433,7435,7437,7439,7441,7443,7445],{"class":57,"line":58},[55,7420,1250],{"class":417},[55,7422,7306],{"class":232},[55,7424,520],{"class":417},[55,7426,4678],{"class":232},[55,7428,6762],{"class":130},[55,7430,876],{"class":232},[55,7432,4699],{"class":130},[55,7434,876],{"class":232},[55,7436,7326],{"class":130},[55,7438,876],{"class":232},[55,7440,7331],{"class":130},[55,7442,876],{"class":232},[55,7444,2864],{"class":130},[55,7446,4702],{"class":232},[13,7448,7449,7450,7452,7453,7456],{},"注意：如果已经写了初始化列表，就不能再在 ",[52,7451,5562],{}," 中指定长度，例如 ",[52,7454,7455],{},"new int[5]{1,2,3,4,5}"," 是错误的。",[98,7458,7460],{"id":7459},"_1013-访问与修改","10.1.3 访问与修改",[13,7462,7463],{},"通过索引访问和赋值：",[45,7465,7467],{"className":409,"code":7466,"language":184,"meta":50,"style":50},"marks[0] = 35;\nint first = marks[0];\n",[52,7468,7469,7486],{"__ignoreMap":50},[55,7470,7471,7474,7476,7479,7481,7484],{"class":57,"line":58},[55,7472,7473],{"class":232},"marks[",[55,7475,792],{"class":130},[55,7477,7478],{"class":232},"] ",[55,7480,520],{"class":417},[55,7482,7483],{"class":130}," 35",[55,7485,989],{"class":232},[55,7487,7488,7490,7493,7495,7498,7500],{"class":57,"line":226},[55,7489,1250],{"class":417},[55,7491,7492],{"class":232}," first ",[55,7494,520],{"class":417},[55,7496,7497],{"class":232}," marks[",[55,7499,792],{"class":130},[55,7501,7287],{"class":232},[13,7503,7504,7505,7507],{},"数组长度用 ",[52,7506,6024],{}," 属性获取，不是方法：",[45,7509,7511],{"className":409,"code":7510,"language":184,"meta":50,"style":50},"for (int i = 0; i \u003C marks.length; i++) {\n    System.out.println(marks[i]);\n}\n",[52,7512,7513,7538,7547],{"__ignoreMap":50},[55,7514,7515,7517,7519,7521,7523,7525,7527,7529,7531,7534,7536],{"class":57,"line":58},[55,7516,4282],{"class":417},[55,7518,2927],{"class":232},[55,7520,1250],{"class":417},[55,7522,4449],{"class":232},[55,7524,520],{"class":417},[55,7526,2894],{"class":130},[55,7528,4456],{"class":232},[55,7530,2191],{"class":417},[55,7532,7533],{"class":232}," marks.length; i",[55,7535,2123],{"class":417},[55,7537,511],{"class":232},[55,7539,7540,7542,7544],{"class":57,"line":226},[55,7541,2673],{"class":232},[55,7543,456],{"class":61},[55,7545,7546],{"class":232},"(marks[i]);\n",[55,7548,7549],{"class":57,"line":245},[55,7550,550],{"class":232},[98,7552,7554],{"id":7553},"_1014-数组的特性","10.1.4 数组的特性",[335,7556,7557,7567,7587,7594],{},[338,7558,7559,7560,7563,7564,7566],{},"数组是",[341,7561,7562],{},"对象","，具有 ",[52,7565,6024],{}," 属性。",[338,7568,7569,7570,7573,7574,786,7576,786,7578,7580,7581,7583,7584,7586],{},"数组可以存储",[341,7571,7572],{},"基本类型","（",[52,7575,1250],{},[52,7577,1822],{},[52,7579,978],{}," 等）或",[341,7582,7562],{},"（如 ",[52,7585,501],{},"）。",[338,7588,7589,7590,7593],{},"数组一旦创建，",[341,7591,7592],{},"长度固定","，不能改变。",[338,7595,7596,7599,7600],{},[341,7597,7598],{},"匿名数组","：创建数组但不赋给变量，常用于直接传递给方法：",[45,7601,7603],{"className":409,"code":7602,"language":184,"meta":50,"style":50},"printArray(new int[]{1, 2, 3, 4, 5});\n",[52,7604,7605],{"__ignoreMap":50},[55,7606,7607,7610,7612,7614,7616,7619,7621,7623,7625,7627,7629,7631,7633,7635,7637],{"class":57,"line":58},[55,7608,7609],{"class":61},"printArray",[55,7611,254],{"class":232},[55,7613,5562],{"class":417},[55,7615,3956],{"class":417},[55,7617,7618],{"class":232},"[]{",[55,7620,4685],{"class":130},[55,7622,876],{"class":232},[55,7624,2864],{"class":130},[55,7626,876],{"class":232},[55,7628,4699],{"class":130},[55,7630,876],{"class":232},[55,7632,6122],{"class":130},[55,7634,876],{"class":232},[55,7636,7253],{"class":130},[55,7638,7639],{"class":232},"});\n",[98,7641,7643],{"id":7642},"_1015-示例存储学生姓名和成绩","10.1.5 示例：存储学生姓名和成绩",[45,7645,7647],{"className":409,"code":7646,"language":184,"meta":50,"style":50},"int[] Marks = new int[3];\nString[] StudentName = new String[3];\n\nStudentName[0] = \"Chris\";\nStudentName[1] = \"John\";\nStudentName[2] = \"Sabina\";\n\nMarks[0] = 35;\nMarks[1] = 82;\nMarks[2] = 67;\n\ndouble ClassAvg = (Marks[0] + Marks[1] + Marks[2]) \u002F 3.0;\n\nfor (int i = 0; i \u003C= 2; i++) {\n    System.out.println(i + \"\\t\" + StudentName[i] + \"\\t\" + Marks[i]);\n}\nSystem.out.println(\"Average Marks for Class is \" + ClassAvg);\n",[52,7648,7649,7668,7687,7691,7709,7726,7743,7747,7764,7781,7798,7802,7850,7854,7880,7921,7926],{"__ignoreMap":50},[55,7650,7651,7653,7656,7658,7660,7662,7664,7666],{"class":57,"line":58},[55,7652,1250],{"class":417},[55,7654,7655],{"class":232},"[] Marks ",[55,7657,520],{"class":417},[55,7659,523],{"class":417},[55,7661,3956],{"class":417},[55,7663,7250],{"class":232},[55,7665,4699],{"class":130},[55,7667,7287],{"class":232},[55,7669,7670,7672,7675,7677,7679,7681,7683,7685],{"class":57,"line":226},[55,7671,501],{"class":417},[55,7673,7674],{"class":232},"[] StudentName ",[55,7676,520],{"class":417},[55,7678,523],{"class":417},[55,7680,7391],{"class":417},[55,7682,7250],{"class":232},[55,7684,4699],{"class":130},[55,7686,7287],{"class":232},[55,7688,7689],{"class":57,"line":245},[55,7690,477],{"emptyLinePlaceholder":476},[55,7692,7693,7696,7698,7700,7702,7704,7707],{"class":57,"line":450},[55,7694,7695],{"class":417},"StudentName",[55,7697,7250],{"class":232},[55,7699,792],{"class":130},[55,7701,7478],{"class":232},[55,7703,520],{"class":417},[55,7705,7706],{"class":65}," \"Chris\"",[55,7708,989],{"class":232},[55,7710,7711,7713,7715,7717,7719,7721,7724],{"class":57,"line":467},[55,7712,7695],{"class":417},[55,7714,7250],{"class":232},[55,7716,4685],{"class":130},[55,7718,7478],{"class":232},[55,7720,520],{"class":417},[55,7722,7723],{"class":65}," \"John\"",[55,7725,989],{"class":232},[55,7727,7728,7730,7732,7734,7736,7738,7741],{"class":57,"line":473},[55,7729,7695],{"class":417},[55,7731,7250],{"class":232},[55,7733,2864],{"class":130},[55,7735,7478],{"class":232},[55,7737,520],{"class":417},[55,7739,7740],{"class":65}," \"Sabina\"",[55,7742,989],{"class":232},[55,7744,7745],{"class":57,"line":480},[55,7746,477],{"emptyLinePlaceholder":476},[55,7748,7749,7752,7754,7756,7758,7760,7762],{"class":57,"line":486},[55,7750,7751],{"class":417},"Marks",[55,7753,7250],{"class":232},[55,7755,792],{"class":130},[55,7757,7478],{"class":232},[55,7759,520],{"class":417},[55,7761,7483],{"class":130},[55,7763,989],{"class":232},[55,7765,7766,7768,7770,7772,7774,7776,7779],{"class":57,"line":514},[55,7767,7751],{"class":417},[55,7769,7250],{"class":232},[55,7771,4685],{"class":130},[55,7773,7478],{"class":232},[55,7775,520],{"class":417},[55,7777,7778],{"class":130}," 82",[55,7780,989],{"class":232},[55,7782,7783,7785,7787,7789,7791,7793,7796],{"class":57,"line":531},[55,7784,7751],{"class":417},[55,7786,7250],{"class":232},[55,7788,2864],{"class":130},[55,7790,7478],{"class":232},[55,7792,520],{"class":417},[55,7794,7795],{"class":130}," 67",[55,7797,989],{"class":232},[55,7799,7800],{"class":57,"line":542},[55,7801,477],{"emptyLinePlaceholder":476},[55,7803,7804,7806,7809,7811,7813,7815,7817,7819,7821,7823,7826,7828,7830,7832,7834,7836,7838,7840,7843,7845,7848],{"class":57,"line":547},[55,7805,978],{"class":417},[55,7807,7808],{"class":232}," ClassAvg ",[55,7810,520],{"class":417},[55,7812,2927],{"class":232},[55,7814,7751],{"class":417},[55,7816,7250],{"class":232},[55,7818,792],{"class":130},[55,7820,7478],{"class":232},[55,7822,789],{"class":417},[55,7824,7825],{"class":417}," Marks",[55,7827,7250],{"class":232},[55,7829,4685],{"class":130},[55,7831,7478],{"class":232},[55,7833,789],{"class":417},[55,7835,7825],{"class":417},[55,7837,7250],{"class":232},[55,7839,2864],{"class":130},[55,7841,7842],{"class":232},"]) ",[55,7844,2063],{"class":417},[55,7846,7847],{"class":130}," 3.0",[55,7849,989],{"class":232},[55,7851,7852],{"class":57,"line":3702},[55,7853,477],{"emptyLinePlaceholder":476},[55,7855,7856,7858,7860,7862,7864,7866,7868,7870,7872,7874,7876,7878],{"class":57,"line":3717},[55,7857,4282],{"class":417},[55,7859,2927],{"class":232},[55,7861,1250],{"class":417},[55,7863,4449],{"class":232},[55,7865,520],{"class":417},[55,7867,2894],{"class":130},[55,7869,4456],{"class":232},[55,7871,2197],{"class":417},[55,7873,3276],{"class":130},[55,7875,4897],{"class":232},[55,7877,2123],{"class":417},[55,7879,511],{"class":232},[55,7881,7883,7885,7887,7890,7892,7894,7896,7898,7900,7903,7906,7908,7910,7912,7914,7916,7918],{"class":57,"line":7882},15,[55,7884,2673],{"class":232},[55,7886,456],{"class":61},[55,7888,7889],{"class":232},"(i ",[55,7891,789],{"class":417},[55,7893,4836],{"class":65},[55,7895,4839],{"class":130},[55,7897,4842],{"class":65},[55,7899,4027],{"class":417},[55,7901,7902],{"class":417}," StudentName",[55,7904,7905],{"class":232},"[i] ",[55,7907,789],{"class":417},[55,7909,4836],{"class":65},[55,7911,4839],{"class":130},[55,7913,4842],{"class":65},[55,7915,4027],{"class":417},[55,7917,7825],{"class":417},[55,7919,7920],{"class":232},"[i]);\n",[55,7922,7924],{"class":57,"line":7923},16,[55,7925,550],{"class":232},[55,7927,7929,7931,7933,7935,7938,7940],{"class":57,"line":7928},17,[55,7930,865],{"class":232},[55,7932,456],{"class":61},[55,7934,254],{"class":232},[55,7936,7937],{"class":65},"\"Average Marks for Class is \"",[55,7939,4027],{"class":417},[55,7941,7942],{"class":232}," ClassAvg);\n",[615,7944],{},[28,7946,7948],{"id":7947},"_102-多维数组","10.2 多维数组",[98,7950,7952],{"id":7951},"_1021-二维数组的声明与实例化","10.2.1  二维数组的声明与实例化",[45,7954,7956],{"className":409,"code":7955,"language":184,"meta":50,"style":50},"double[][] Marks;\nMarks = new double[5][6];   \u002F\u002F 5 行 6 列\n",[52,7957,7958,7965],{"__ignoreMap":50},[55,7959,7960,7962],{"class":57,"line":58},[55,7961,978],{"class":417},[55,7963,7964],{"class":232},"[][] Marks;\n",[55,7966,7967,7970,7972,7974,7976,7978,7980,7983,7985,7988],{"class":57,"line":226},[55,7968,7969],{"class":232},"Marks ",[55,7971,520],{"class":417},[55,7973,523],{"class":417},[55,7975,7351],{"class":417},[55,7977,7250],{"class":232},[55,7979,7253],{"class":130},[55,7981,7982],{"class":232},"][",[55,7984,4694],{"class":130},[55,7986,7987],{"class":232},"];   ",[55,7989,7990],{"class":432},"\u002F\u002F 5 行 6 列\n",[13,7992,7993],{},"也可以合并：",[45,7995,7997],{"className":409,"code":7996,"language":184,"meta":50,"style":50},"double[][] Marks = new double[5][6];\n",[52,7998,7999],{"__ignoreMap":50},[55,8000,8001,8003,8006,8008,8010,8012,8014,8016,8018,8020],{"class":57,"line":58},[55,8002,978],{"class":417},[55,8004,8005],{"class":232},"[][] Marks ",[55,8007,520],{"class":417},[55,8009,523],{"class":417},[55,8011,7351],{"class":417},[55,8013,7250],{"class":232},[55,8015,7253],{"class":130},[55,8017,7982],{"class":232},[55,8019,4694],{"class":130},[55,8021,7287],{"class":232},[98,8023,8025],{"id":8024},"_1022-初始化","10.2.2 初始化",[13,8027,8028],{},"方式一：先实例化，再逐个赋值。",[45,8030,8032],{"className":409,"code":8031,"language":184,"meta":50,"style":50},"int[][] Marks = new int[3][2];\nMarks[0][0] = 35;\nMarks[0][1] = 82;\n\u002F\u002F ...\n",[52,8033,8034,8056,8076,8096],{"__ignoreMap":50},[55,8035,8036,8038,8040,8042,8044,8046,8048,8050,8052,8054],{"class":57,"line":58},[55,8037,1250],{"class":417},[55,8039,8005],{"class":232},[55,8041,520],{"class":417},[55,8043,523],{"class":417},[55,8045,3956],{"class":417},[55,8047,7250],{"class":232},[55,8049,4699],{"class":130},[55,8051,7982],{"class":232},[55,8053,2864],{"class":130},[55,8055,7287],{"class":232},[55,8057,8058,8060,8062,8064,8066,8068,8070,8072,8074],{"class":57,"line":226},[55,8059,7751],{"class":417},[55,8061,7250],{"class":232},[55,8063,792],{"class":130},[55,8065,7982],{"class":232},[55,8067,792],{"class":130},[55,8069,7478],{"class":232},[55,8071,520],{"class":417},[55,8073,7483],{"class":130},[55,8075,989],{"class":232},[55,8077,8078,8080,8082,8084,8086,8088,8090,8092,8094],{"class":57,"line":245},[55,8079,7751],{"class":417},[55,8081,7250],{"class":232},[55,8083,792],{"class":130},[55,8085,7982],{"class":232},[55,8087,4685],{"class":130},[55,8089,7478],{"class":232},[55,8091,520],{"class":417},[55,8093,7778],{"class":130},[55,8095,989],{"class":232},[55,8097,8098],{"class":57,"line":450},[55,8099,8100],{"class":432},"\u002F\u002F ...\n",[13,8102,8103],{},"方式二：声明、实例化、初始化一次完成。",[45,8105,8107],{"className":409,"code":8106,"language":184,"meta":50,"style":50},"int[][] Marks = new int[][] {\n    {35, 82},\n    {67, 45},\n    {62, 77}\n};\n",[52,8108,8109,8124,8140,8153,8167],{"__ignoreMap":50},[55,8110,8111,8113,8115,8117,8119,8121],{"class":57,"line":58},[55,8112,1250],{"class":417},[55,8114,8005],{"class":232},[55,8116,520],{"class":417},[55,8118,523],{"class":417},[55,8120,3956],{"class":417},[55,8122,8123],{"class":232},"[][] {\n",[55,8125,8126,8129,8132,8134,8137],{"class":57,"line":226},[55,8127,8128],{"class":232},"    {",[55,8130,8131],{"class":130},"35",[55,8133,876],{"class":232},[55,8135,8136],{"class":130},"82",[55,8138,8139],{"class":232},"},\n",[55,8141,8142,8144,8147,8149,8151],{"class":57,"line":245},[55,8143,8128],{"class":232},[55,8145,8146],{"class":130},"67",[55,8148,876],{"class":232},[55,8150,7331],{"class":130},[55,8152,8139],{"class":232},[55,8154,8155,8157,8160,8162,8165],{"class":57,"line":450},[55,8156,8128],{"class":232},[55,8158,8159],{"class":130},"62",[55,8161,876],{"class":232},[55,8163,8164],{"class":130},"77",[55,8166,550],{"class":232},[55,8168,8169],{"class":57,"line":467},[55,8170,4702],{"class":232},[13,8172,8173],{},"简写：",[45,8175,8177],{"className":409,"code":8176,"language":184,"meta":50,"style":50},"int[][] Marks = {\n    {35, 82},\n    {67, 45},\n    {62, 77}\n};\n",[52,8178,8179,8189,8201,8213,8225],{"__ignoreMap":50},[55,8180,8181,8183,8185,8187],{"class":57,"line":58},[55,8182,1250],{"class":417},[55,8184,8005],{"class":232},[55,8186,520],{"class":417},[55,8188,427],{"class":232},[55,8190,8191,8193,8195,8197,8199],{"class":57,"line":226},[55,8192,8128],{"class":232},[55,8194,8131],{"class":130},[55,8196,876],{"class":232},[55,8198,8136],{"class":130},[55,8200,8139],{"class":232},[55,8202,8203,8205,8207,8209,8211],{"class":57,"line":245},[55,8204,8128],{"class":232},[55,8206,8146],{"class":130},[55,8208,876],{"class":232},[55,8210,7331],{"class":130},[55,8212,8139],{"class":232},[55,8214,8215,8217,8219,8221,8223],{"class":57,"line":450},[55,8216,8128],{"class":232},[55,8218,8159],{"class":130},[55,8220,876],{"class":232},[55,8222,8164],{"class":130},[55,8224,550],{"class":232},[55,8226,8227],{"class":57,"line":467},[55,8228,4702],{"class":232},[98,8230,8232],{"id":8231},"_1023-访问与长度","10.2.3 访问与长度",[335,8234,8235,8241],{},[338,8236,8237,8240],{},[52,8238,8239],{},"array.length"," 返回第一维的长度，即行数。",[338,8242,8243,8246,8247,8250],{},[52,8244,8245],{},"array[i].length"," 返回第 ",[52,8248,8249],{},"i"," 行的列数。",[45,8252,8254],{"className":409,"code":8253,"language":184,"meta":50,"style":50},"int[][] twoDimArray = {\n    {1, 2, 3},\n    {4, 5, 6},\n    {7, 8, 9}\n};\nSystem.out.println(\"Number of rows: \" + twoDimArray.length);       \u002F\u002F 3\nSystem.out.println(\"Length of first row: \" + twoDimArray[0].length); \u002F\u002F 3\n",[52,8255,8256,8267,8283,8299,8316,8320,8338],{"__ignoreMap":50},[55,8257,8258,8260,8263,8265],{"class":57,"line":58},[55,8259,1250],{"class":417},[55,8261,8262],{"class":232},"[][] twoDimArray ",[55,8264,520],{"class":417},[55,8266,427],{"class":232},[55,8268,8269,8271,8273,8275,8277,8279,8281],{"class":57,"line":226},[55,8270,8128],{"class":232},[55,8272,4685],{"class":130},[55,8274,876],{"class":232},[55,8276,2864],{"class":130},[55,8278,876],{"class":232},[55,8280,4699],{"class":130},[55,8282,8139],{"class":232},[55,8284,8285,8287,8289,8291,8293,8295,8297],{"class":57,"line":245},[55,8286,8128],{"class":232},[55,8288,6122],{"class":130},[55,8290,876],{"class":232},[55,8292,7253],{"class":130},[55,8294,876],{"class":232},[55,8296,4694],{"class":130},[55,8298,8139],{"class":232},[55,8300,8301,8303,8305,8307,8309,8311,8314],{"class":57,"line":450},[55,8302,8128],{"class":232},[55,8304,1068],{"class":130},[55,8306,876],{"class":232},[55,8308,7326],{"class":130},[55,8310,876],{"class":232},[55,8312,8313],{"class":130},"9",[55,8315,550],{"class":232},[55,8317,8318],{"class":57,"line":467},[55,8319,4702],{"class":232},[55,8321,8322,8324,8326,8328,8331,8333,8336],{"class":57,"line":473},[55,8323,865],{"class":232},[55,8325,456],{"class":61},[55,8327,254],{"class":232},[55,8329,8330],{"class":65},"\"Number of rows: \"",[55,8332,4027],{"class":417},[55,8334,8335],{"class":232}," twoDimArray.length);       ",[55,8337,6030],{"class":432},[55,8339,8340,8342,8344,8346,8349,8351,8354,8356,8359],{"class":57,"line":480},[55,8341,865],{"class":232},[55,8343,456],{"class":61},[55,8345,254],{"class":232},[55,8347,8348],{"class":65},"\"Length of first row: \"",[55,8350,4027],{"class":417},[55,8352,8353],{"class":232}," twoDimArray[",[55,8355,792],{"class":130},[55,8357,8358],{"class":232},"].length); ",[55,8360,6030],{"class":432},[98,8362,8364],{"id":8363},"_1024-锯齿数组","10.2.4 锯齿数组",[13,8366,8367],{},"Java 的多维数组本质是“数组的数组”，每一行的长度可以不同。",[45,8369,8371],{"className":409,"code":8370,"language":184,"meta":50,"style":50},"int[][] jagged = new int[3][];\njagged[0] = new int[2];\njagged[1] = new int[4];\njagged[2] = new int[3];\n",[52,8372,8373,8393,8414,8434],{"__ignoreMap":50},[55,8374,8375,8377,8380,8382,8384,8386,8388,8390],{"class":57,"line":58},[55,8376,1250],{"class":417},[55,8378,8379],{"class":232},"[][] jagged ",[55,8381,520],{"class":417},[55,8383,523],{"class":417},[55,8385,3956],{"class":417},[55,8387,7250],{"class":232},[55,8389,4699],{"class":130},[55,8391,8392],{"class":232},"][];\n",[55,8394,8395,8398,8400,8402,8404,8406,8408,8410,8412],{"class":57,"line":226},[55,8396,8397],{"class":232},"jagged[",[55,8399,792],{"class":130},[55,8401,7478],{"class":232},[55,8403,520],{"class":417},[55,8405,523],{"class":417},[55,8407,3956],{"class":417},[55,8409,7250],{"class":232},[55,8411,2864],{"class":130},[55,8413,7287],{"class":232},[55,8415,8416,8418,8420,8422,8424,8426,8428,8430,8432],{"class":57,"line":245},[55,8417,8397],{"class":232},[55,8419,4685],{"class":130},[55,8421,7478],{"class":232},[55,8423,520],{"class":417},[55,8425,523],{"class":417},[55,8427,3956],{"class":417},[55,8429,7250],{"class":232},[55,8431,6122],{"class":130},[55,8433,7287],{"class":232},[55,8435,8436,8438,8440,8442,8444,8446,8448,8450,8452],{"class":57,"line":450},[55,8437,8397],{"class":232},[55,8439,2864],{"class":130},[55,8441,7478],{"class":232},[55,8443,520],{"class":417},[55,8445,523],{"class":417},[55,8447,3956],{"class":417},[55,8449,7250],{"class":232},[55,8451,4699],{"class":130},[55,8453,7287],{"class":232},[615,8455],{},[28,8457,8459],{"id":8458},"_103-选择排序算法","10.3 选择排序算法",[13,8461,8462],{},"选择排序的基本思想：每一轮从未排序部分中选出最小元素，放到已排序部分的末尾。",[98,8464,8466],{"id":8465},"_1031-简化版选择排序","10.3.1 简化版选择排序",[335,8468,8469,8472,8475,8478],{},[338,8470,8471],{},"从第一个元素开始，假设它是最小的。",[338,8473,8474],{},"与后面所有元素比较，如果发现更小的，就交换。",[338,8476,8477],{},"一轮结束后，第一个位置就是当前最小值。",[338,8479,8480],{},"对第二个、第三个位置重复，直到整个数组有序。",[98,8482,8484],{"id":8483},"_1032-优化版选择排序","10.3.2 优化版选择排序",[335,8486,8487,8493,8496],{},[338,8488,8489,8490,8492],{},"每一轮只记录最小元素的",[341,8491,7149],{},"，不立即交换。",[338,8494,8495],{},"一轮结束后，再将最小元素与当前位置交换。",[338,8497,8498],{},"减少交换次数，效率更高。",[98,8500,8502],{"id":8501},"_1033-伪代码","10.3.3 伪代码",[45,8504,8509],{"className":8505,"code":8507,"language":8508,"meta":50},[8506],"language-text","for i = 从数组开头到末尾\n    寻找最小元素，并记录其索引\n    for j = i 到数组末尾\n        if (第 i 个元素 > 第 j 个元素) then\n            记录 j 为当前最小索引\n    end for\n    交换第 i 个元素与最小索引处的元素\nend for\n","text",[52,8510,8507],{"__ignoreMap":50},[98,8512,8514],{"id":8513},"_1034-排序过程示例","10.3.4 排序过程示例",[13,8516,8517,8518,8521],{},"以数组 ",[52,8519,8520],{},"[3, 2, 1, 4, 0, 5]"," 为例：",[335,8523,8524,8536,8547,8553,8564],{},[338,8525,8526,8527,8529,8530,8532,8533,965],{},"第 1 轮：找到最小值 ",[52,8528,792],{},"，与第一个元素 ",[52,8531,4699],{}," 交换，得到 ",[52,8534,8535],{},"[0, 2, 1, 4, 3, 5]",[338,8537,8538,8539,8541,8542,8532,8544,965],{},"第 2 轮：在剩余部分找到最小值 ",[52,8540,4685],{},"，与第二个元素 ",[52,8543,2864],{},[52,8545,8546],{},"[0, 1, 2, 4, 3, 5]",[338,8548,8549,8550,8552],{},"第 3 轮：",[52,8551,2864],{}," 已在正确位置，无需交换。",[338,8554,8555,8556,8558,8559,8532,8561,965],{},"第 4 轮：找到 ",[52,8557,4699],{},"，与第四个元素 ",[52,8560,6122],{},[52,8562,8563],{},"[0, 1, 2, 3, 4, 5]",[338,8565,8566],{},"第 5 轮：数组已有序。",[615,8568],{},[17,8570,8572],{"id":8571},"_11-模块化编程","11 模块化编程",[28,8574,8576],{"id":8575},"_111程序设计方式的发展","11.1程序设计方式的发展",[98,8578,8580],{"id":8579},"_1111-非结构化编程","11.1.1 非结构化编程",[335,8582,8583,8586],{},[338,8584,8585],{},"程序只有一个主程序，数据通常是全局的。",[338,8587,8588,8589],{},"缺点：\n",[335,8590,8591,8594,8597],{},[338,8592,8593],{},"相同语句序列需要重复复制。",[338,8595,8596],{},"出错时每个副本都要修改，维护困难。",[338,8598,8599],{},"只适合非常小的程序。",[98,8601,8603],{"id":8602},"_1112-过程式编程","11.1.2 过程式编程",[335,8605,8606,8609,8612,8615,8618],{},[338,8607,8608],{},"把重复的语句序列提取为过程，并给过程命名。",[338,8610,8611],{},"通过过程调用执行，执行完后回到调用位置继续。",[338,8613,8614],{},"可以带参数，也可以有子过程。",[338,8616,8617],{},"程序可看作一系列过程调用，数据在过程间传递。",[338,8619,8588,8620],{},[335,8621,8622,8625],{},[338,8623,8624],{},"函数可重用性较差。",[338,8626,8627],{},"函数容易依赖全局变量和其他函数，封装性不足。",[98,8629,8631],{"id":8630},"_1113-模块化编程","11.1.3 模块化编程",[335,8633,8634,8637,8640,8643,8646],{},[338,8635,8636],{},"把功能相近的过程组织到独立模块中。",[338,8638,8639],{},"程序由多个较小部分组成，模块之间通过过程调用交互。",[338,8641,8642],{},"主程序负责协调调用，并传递适当数据。",[338,8644,8645],{},"每个模块可以有自己的数据，维护内部状态。",[338,8647,8648],{},"但每个模块只有一个状态，且在整个程序中最多存在一次。",[98,8650,8652],{"id":8651},"_1114-面向对象编程","11.1.4 面向对象编程",[335,8654,8655,8658,8661,8664],{},[338,8656,8657],{},"使用类和对象来设计程序。",[338,8659,8660],{},"以对象为基本单位，关注用户感知的组件。",[338,8662,8663],{},"把数据和操作数据的方法放在一起。",[338,8665,8666,8667],{},"优点：\n",[335,8668,8669,8672,8675],{},[338,8670,8671],{},"更易于软件设计，可以用高层概念思考问题。",[338,8673,8674],{},"更易于维护、测试、调试。",[338,8676,8677],{},"可重用已有代码，避免重复造轮子。",[615,8679],{},[28,8681,8683],{"id":8682},"_112-类与对象","11.2 类与对象",[98,8685,8687],{"id":8686},"_1121-对象","11.2.1 对象",[335,8689,8690,8693],{},[338,8691,8692],{},"对象是拥有状态和行为的实体。",[338,8694,8695],{},"可以是物理的，如椅子、汽车；也可以是逻辑的，如银行系统。",[98,8697,8699],{"id":8698},"_1122-类","11.2.2 类",[335,8701,8702,8705,8708],{},[338,8703,8704],{},"类是创建对象的模板或蓝图。",[338,8706,8707],{},"对象是类的一个实例。",[338,8709,8710,8711,8714],{},"例如：定义 ",[52,8712,8713],{},"Book"," 类，就可以创建出《代码大全》《重构》等一个个对象。",[98,8716,8718],{"id":8717},"_1123-类的组成","11.2.3 类的组成",[335,8720,8721,8727,8733],{},[338,8722,8723,8726],{},[341,8724,8725],{},"名称","：标识类。",[338,8728,8729,8732],{},[341,8730,8731],{},"变量","：属性、状态、字段。",[338,8734,8735,8738],{},[341,8736,8737],{},"方法","：行为、功能、操作。",[13,8740,4661],{},[335,8742,8743,8761],{},[338,8744,8745,8747,8748,786,8751,8754,8755,786,8758,965],{},[52,8746,8713],{}," 类：变量 ",[52,8749,8750],{},"title",[52,8752,8753],{},"price","，方法 ",[52,8756,8757],{},"getTitle()",[52,8759,8760],{},"getPrice()",[338,8762,8763,8747,8766,786,8769,786,8772,8754,8775,965],{},[52,8764,8765],{},"Car",[52,8767,8768],{},"brand",[52,8770,8771],{},"model",[52,8773,8774],{},"year",[52,8776,8777],{},"displayInfo()",[98,8779,8781],{"id":8780},"_1124-类定义语法","11.2.4 类定义语法",[45,8783,8785],{"className":409,"code":8784,"language":184,"meta":50,"style":50},"public class Book {\n    String title;\n    double price;\n\n    String getTitle() {\n        \u002F\u002F ...\n    }\n\n    double getPrice() {\n        \u002F\u002F ...\n    }\n}\n",[52,8786,8787,8798,8803,8811,8815,8825,8830,8834,8838,8847,8851,8855],{"__ignoreMap":50},[55,8788,8789,8791,8793,8796],{"class":57,"line":58},[55,8790,418],{"class":417},[55,8792,421],{"class":417},[55,8794,8795],{"class":61}," Book",[55,8797,427],{"class":232},[55,8799,8800],{"class":57,"line":226},[55,8801,8802],{"class":232},"    String title;\n",[55,8804,8805,8808],{"class":57,"line":245},[55,8806,8807],{"class":417},"    double",[55,8809,8810],{"class":232}," price;\n",[55,8812,8813],{"class":57,"line":450},[55,8814,477],{"emptyLinePlaceholder":476},[55,8816,8817,8820,8823],{"class":57,"line":467},[55,8818,8819],{"class":232},"    String ",[55,8821,8822],{"class":61},"getTitle",[55,8824,447],{"class":232},[55,8826,8827],{"class":57,"line":473},[55,8828,8829],{"class":432},"        \u002F\u002F ...\n",[55,8831,8832],{"class":57,"line":480},[55,8833,470],{"class":232},[55,8835,8836],{"class":57,"line":486},[55,8837,477],{"emptyLinePlaceholder":476},[55,8839,8840,8842,8845],{"class":57,"line":514},[55,8841,8807],{"class":417},[55,8843,8844],{"class":61}," getPrice",[55,8846,447],{"class":232},[55,8848,8849],{"class":57,"line":531},[55,8850,8829],{"class":432},[55,8852,8853],{"class":57,"line":542},[55,8854,470],{"class":232},[55,8856,8857],{"class":57,"line":547},[55,8858,550],{"class":232},[13,8860,8861,8863],{},[52,8862,418],{}," 是访问控制修饰符。",[615,8865],{},[28,8867,8869],{"id":8868},"_113-方法","11.3 方法",[98,8871,8873],{"id":8872},"_1131-方法的概念","11.3.1 方法的概念",[335,8875,8876,8879,8882,8885],{},[338,8877,8878],{},"方法相当于传统语言中的函数。",[338,8880,8881],{},"方法声明指定调用时执行的代码。",[338,8883,8884],{},"调用方法时，控制流跳转到方法内部执行，执行完返回调用处继续。",[338,8886,8887],{},"方法可以返回值，也可以不返回值。",[98,8889,8891],{"id":8890},"_1132-标准库方法与用户定义方法","11.3.2 标准库方法与用户定义方法",[335,8893,8894,8908],{},[338,8895,8896,8897,786,8899,786,8902,786,8905,965],{},"标准库方法：Java 类库中已定义的方法，如 ",[52,8898,5992],{},[52,8900,8901],{},"equals()",[52,8903,8904],{},"compareTo()",[52,8906,8907],{},"sqrt()",[338,8909,8910],{},"用户定义方法：程序员根据需求自己编写的方法。",[98,8912,8914],{"id":8913},"_1133-方法声明结构","11.3.3 方法声明结构",[45,8916,8918],{"className":409,"code":8917,"language":184,"meta":50,"style":50},"\u003C访问修饰符> \u003C返回类型> \u003C方法名>(参数列表) {\n    \u002F\u002F 方法体\n    return 值;\n}\n",[52,8919,8920,8947,8952,8960],{"__ignoreMap":50},[55,8921,8922,8924,8927,8929,8932,8935,8937,8939,8942,8944],{"class":57,"line":58},[55,8923,2191],{"class":417},[55,8925,8926],{"class":232},"访问修饰符",[55,8928,2194],{"class":417},[55,8930,8931],{"class":417}," \u003C",[55,8933,8934],{"class":232},"返回类型",[55,8936,2194],{"class":417},[55,8938,8931],{"class":417},[55,8940,8941],{"class":232},"方法名",[55,8943,2194],{"class":417},[55,8945,8946],{"class":232},"(参数列表) {\n",[55,8948,8949],{"class":57,"line":226},[55,8950,8951],{"class":432},"    \u002F\u002F 方法体\n",[55,8953,8954,8957],{"class":57,"line":245},[55,8955,8956],{"class":417},"    return",[55,8958,8959],{"class":232}," 值;\n",[55,8961,8962],{"class":57,"line":450},[55,8963,550],{"class":232},[335,8965,8966,8978,8986,8994,9000],{},[338,8967,8968,8970,8971,786,8973,786,8975,8977],{},[341,8969,8926],{},"：如 ",[52,8972,418],{},[52,8974,5769],{},[52,8976,5736],{},"、默认。",[338,8979,8980,8982,8983,965],{},[341,8981,8934],{},"：方法返回的数据类型；不返回值时用 ",[52,8984,8985],{},"void",[338,8987,8988,8990,8991,965],{},[341,8989,8941],{},"：遵循 Java 命名规范，通常小写开头，多词用驼峰，如 ",[52,8992,8993],{},"areaOfCircle()",[338,8995,8996,8999],{},[341,8997,8998],{},"参数列表","：逗号分隔，包含类型和变量名；无参数则留空。",[338,9001,9002,9005],{},[341,9003,9004],{},"方法签名","：方法名 + 参数列表。",[98,9007,9009,9010],{"id":9008},"_1134-方法体与-return","11.3.4 方法体与 ",[52,9011,9012],{},"return",[335,9014,9015,9022,9025,9030,9033,9043],{},[338,9016,9017,9018,9021],{},"方法体放在花括号 ",[52,9019,9020],{},"{}"," 中。",[338,9023,9024],{},"方法体包含程序逻辑，可看作一个小程序。",[338,9026,9027,9029],{},[52,9028,9012],{}," 标记方法逻辑结束，并返回一个值。",[338,9031,9032],{},"返回值类型必须与方法头声明的返回类型一致。",[338,9034,9035,9036,9038,9039,9042],{},"若返回类型为 ",[52,9037,8985],{},"，可以写 ",[52,9040,9041],{},"return;"," 或不写。",[338,9044,9045,9046,9048],{},"建议把 ",[52,9047,9012],{}," 放在方法末尾，结构更清晰。",[98,9050,9052],{"id":9051},"_1135-示例判断奇偶","11.3.5 示例：判断奇偶",[13,9054,9055],{},"方式一：",[45,9057,9059],{"className":409,"code":9058,"language":184,"meta":50,"style":50},"public static String numberType(int num) {\n    if (num % 2 == 0) {\n        return \"Even\";\n    } else {\n        return \"Odd\";\n    }\n}\n",[52,9060,9061,9080,9098,9108,9117,9126,9130],{"__ignoreMap":50},[55,9062,9063,9065,9067,9070,9073,9075,9077],{"class":57,"line":58},[55,9064,418],{"class":417},[55,9066,491],{"class":417},[55,9068,9069],{"class":232}," String ",[55,9071,9072],{"class":61},"numberType",[55,9074,254],{"class":232},[55,9076,1250],{"class":417},[55,9078,9079],{"class":232}," num) {\n",[55,9081,9082,9084,9087,9089,9091,9094,9096],{"class":57,"line":226},[55,9083,3061],{"class":417},[55,9085,9086],{"class":232}," (num ",[55,9088,747],{"class":417},[55,9090,3276],{"class":130},[55,9092,9093],{"class":417}," ==",[55,9095,2894],{"class":130},[55,9097,511],{"class":232},[55,9099,9100,9103,9106],{"class":57,"line":245},[55,9101,9102],{"class":417},"        return",[55,9104,9105],{"class":65}," \"Even\"",[55,9107,989],{"class":232},[55,9109,9110,9113,9115],{"class":57,"line":450},[55,9111,9112],{"class":232},"    } ",[55,9114,2737],{"class":417},[55,9116,427],{"class":232},[55,9118,9119,9121,9124],{"class":57,"line":467},[55,9120,9102],{"class":417},[55,9122,9123],{"class":65}," \"Odd\"",[55,9125,989],{"class":232},[55,9127,9128],{"class":57,"line":473},[55,9129,470],{"class":232},[55,9131,9132],{"class":57,"line":480},[55,9133,550],{"class":232},[13,9135,9136],{},"方式二：",[45,9138,9140],{"className":409,"code":9139,"language":184,"meta":50,"style":50},"public static String numberType(int num) {\n    String s = \"\";\n    if (num % 2 == 0) {\n        s = \"Even\";\n    } else {\n        s = \"Odd\";\n    }\n    return s;\n}\n",[52,9141,9142,9158,9170,9186,9197,9205,9215,9219,9226],{"__ignoreMap":50},[55,9143,9144,9146,9148,9150,9152,9154,9156],{"class":57,"line":58},[55,9145,418],{"class":417},[55,9147,491],{"class":417},[55,9149,9069],{"class":232},[55,9151,9072],{"class":61},[55,9153,254],{"class":232},[55,9155,1250],{"class":417},[55,9157,9079],{"class":232},[55,9159,9160,9163,9165,9168],{"class":57,"line":226},[55,9161,9162],{"class":232},"    String s ",[55,9164,520],{"class":417},[55,9166,9167],{"class":65}," \"\"",[55,9169,989],{"class":232},[55,9171,9172,9174,9176,9178,9180,9182,9184],{"class":57,"line":245},[55,9173,3061],{"class":417},[55,9175,9086],{"class":232},[55,9177,747],{"class":417},[55,9179,3276],{"class":130},[55,9181,9093],{"class":417},[55,9183,2894],{"class":130},[55,9185,511],{"class":232},[55,9187,9188,9191,9193,9195],{"class":57,"line":450},[55,9189,9190],{"class":232},"        s ",[55,9192,520],{"class":417},[55,9194,9105],{"class":65},[55,9196,989],{"class":232},[55,9198,9199,9201,9203],{"class":57,"line":467},[55,9200,9112],{"class":232},[55,9202,2737],{"class":417},[55,9204,427],{"class":232},[55,9206,9207,9209,9211,9213],{"class":57,"line":473},[55,9208,9190],{"class":232},[55,9210,520],{"class":417},[55,9212,9123],{"class":65},[55,9214,989],{"class":232},[55,9216,9217],{"class":57,"line":480},[55,9218,470],{"class":232},[55,9220,9221,9223],{"class":57,"line":486},[55,9222,8956],{"class":417},[55,9224,9225],{"class":232}," s;\n",[55,9227,9228],{"class":57,"line":514},[55,9229,550],{"class":232},[13,9231,9232],{},"方式一效率较高，但多个出口；方式二结构更清晰，推荐使用。",[98,9234,9236,9237,1495],{"id":9235},"_1136-示例void-方法","11.3.6 示例：",[52,9238,8985],{},[45,9240,9242],{"className":409,"code":9241,"language":184,"meta":50,"style":50},"public static void centredPrint(String s) {\n    int totLen = ((80 - s.length()) \u002F 2) + s.length();\n    String r = String.format(\"%\" + totLen + \"s\", s);\n    System.out.println(r);\n}\n",[52,9243,9244,9258,9297,9326,9335],{"__ignoreMap":50},[55,9245,9246,9248,9250,9252,9255],{"class":57,"line":58},[55,9247,418],{"class":417},[55,9249,491],{"class":417},[55,9251,441],{"class":417},[55,9253,9254],{"class":61}," centredPrint",[55,9256,9257],{"class":232},"(String s) {\n",[55,9259,9260,9263,9266,9268,9271,9274,9276,9278,9280,9283,9285,9287,9289,9291,9293,9295],{"class":57,"line":226},[55,9261,9262],{"class":417},"    int",[55,9264,9265],{"class":232}," totLen ",[55,9267,520],{"class":417},[55,9269,9270],{"class":232}," ((",[55,9272,9273],{"class":130},"80",[55,9275,7097],{"class":417},[55,9277,6952],{"class":232},[55,9279,6024],{"class":61},[55,9281,9282],{"class":232},"()) ",[55,9284,2063],{"class":417},[55,9286,3276],{"class":130},[55,9288,260],{"class":232},[55,9290,789],{"class":417},[55,9292,6952],{"class":232},[55,9294,6024],{"class":61},[55,9296,528],{"class":232},[55,9298,9299,9302,9304,9307,9309,9311,9314,9316,9318,9320,9323],{"class":57,"line":245},[55,9300,9301],{"class":232},"    String r ",[55,9303,520],{"class":417},[55,9305,9306],{"class":232}," String.",[55,9308,1020],{"class":61},[55,9310,254],{"class":232},[55,9312,9313],{"class":65},"\"%\"",[55,9315,4027],{"class":417},[55,9317,9265],{"class":232},[55,9319,789],{"class":417},[55,9321,9322],{"class":65}," \"s\"",[55,9324,9325],{"class":232},", s);\n",[55,9327,9328,9330,9332],{"class":57,"line":450},[55,9329,2673],{"class":232},[55,9331,456],{"class":61},[55,9333,9334],{"class":232},"(r);\n",[55,9336,9337],{"class":57,"line":467},[55,9338,550],{"class":232},[13,9340,9341],{},"该方法居中打印字符串，不返回值。",[615,9343],{},[28,9345,9347],{"id":9346},"_114-方法的调用","11.4 方法的调用",[335,9349,9350,9357,9376,9390,9404],{},[338,9351,9352,9353,9356],{},"方法通常从另一个方法中调用，最常见的是从 ",[52,9354,9355],{},"main"," 方法调用。",[338,9358,9359,9360],{},"静态方法调用形式：",[45,9361,9363],{"className":409,"code":9362,"language":184,"meta":50,"style":50},"ClassName.MethodName(args)\n",[52,9364,9365],{"__ignoreMap":50},[55,9366,9367,9370,9373],{"class":57,"line":58},[55,9368,9369],{"class":232},"ClassName.",[55,9371,9372],{"class":61},"MethodName",[55,9374,9375],{"class":232},"(args)\n",[338,9377,9378,9379],{},"如果调用同类中的方法，可以省略类名：",[45,9380,9382],{"className":409,"code":9381,"language":184,"meta":50,"style":50},"MethodName(args)\n",[52,9383,9384],{"__ignoreMap":50},[55,9385,9386,9388],{"class":57,"line":58},[55,9387,9372],{"class":61},[55,9389,9375],{"class":232},[338,9391,9392,9393],{},"方法返回值可用于：",[335,9394,9395,9398,9401],{},[338,9396,9397],{},"赋给变量；",[338,9399,9400],{},"作为表达式的一部分；",[338,9402,9403],{},"作为另一个方法的参数。",[338,9405,9406,9408],{},[52,9407,8985],{}," 方法通常作为独立语句调用。",[13,9410,4661],{},[45,9412,9414],{"className":409,"code":9413,"language":184,"meta":50,"style":50},"public class MyFirstProgram {\n    public static void main(String[] args) {\n        for (int i = 1; i \u003C= 10; i++) {\n            System.out.println(i + \"\\t\" + numberType(i));\n        }\n    }\n\n    public static String numberType(int num) {\n        if (num % 2 == 0)\n            return \"Even\";\n        else\n            return \"Odd\";\n    }\n}\n",[52,9415,9416,9427,9447,9474,9499,9504,9508,9512,9531,9547,9556,9560,9568,9572],{"__ignoreMap":50},[55,9417,9418,9420,9422,9425],{"class":57,"line":58},[55,9419,418],{"class":417},[55,9421,421],{"class":417},[55,9423,9424],{"class":61}," MyFirstProgram",[55,9426,427],{"class":232},[55,9428,9429,9431,9433,9435,9437,9439,9441,9443,9445],{"class":57,"line":226},[55,9430,438],{"class":417},[55,9432,491],{"class":417},[55,9434,441],{"class":417},[55,9436,496],{"class":61},[55,9438,254],{"class":232},[55,9440,501],{"class":417},[55,9442,504],{"class":232},[55,9444,508],{"class":507},[55,9446,511],{"class":232},[55,9448,9449,9452,9454,9456,9458,9460,9462,9464,9466,9468,9470,9472],{"class":57,"line":245},[55,9450,9451],{"class":417},"        for",[55,9453,2927],{"class":232},[55,9455,1250],{"class":417},[55,9457,4449],{"class":232},[55,9459,520],{"class":417},[55,9461,2611],{"class":130},[55,9463,4456],{"class":232},[55,9465,2197],{"class":417},[55,9467,3964],{"class":130},[55,9469,4897],{"class":232},[55,9471,2123],{"class":417},[55,9473,511],{"class":232},[55,9475,9476,9479,9481,9483,9485,9487,9489,9491,9493,9496],{"class":57,"line":450},[55,9477,9478],{"class":232},"            System.out.",[55,9480,456],{"class":61},[55,9482,7889],{"class":232},[55,9484,789],{"class":417},[55,9486,4836],{"class":65},[55,9488,4839],{"class":130},[55,9490,4842],{"class":65},[55,9492,4027],{"class":417},[55,9494,9495],{"class":61}," numberType",[55,9497,9498],{"class":232},"(i));\n",[55,9500,9501],{"class":57,"line":467},[55,9502,9503],{"class":232},"        }\n",[55,9505,9506],{"class":57,"line":473},[55,9507,470],{"class":232},[55,9509,9510],{"class":57,"line":480},[55,9511,477],{"emptyLinePlaceholder":476},[55,9513,9514,9516,9518,9520,9522,9524,9526,9529],{"class":57,"line":486},[55,9515,438],{"class":417},[55,9517,491],{"class":417},[55,9519,9069],{"class":232},[55,9521,9072],{"class":61},[55,9523,254],{"class":232},[55,9525,1250],{"class":417},[55,9527,9528],{"class":507}," num",[55,9530,511],{"class":232},[55,9532,9533,9535,9537,9539,9541,9543,9545],{"class":57,"line":514},[55,9534,3073],{"class":417},[55,9536,9086],{"class":232},[55,9538,747],{"class":417},[55,9540,3276],{"class":130},[55,9542,9093],{"class":417},[55,9544,2894],{"class":130},[55,9546,242],{"class":232},[55,9548,9549,9552,9554],{"class":57,"line":531},[55,9550,9551],{"class":417},"            return",[55,9553,9105],{"class":65},[55,9555,989],{"class":232},[55,9557,9558],{"class":57,"line":542},[55,9559,3187],{"class":417},[55,9561,9562,9564,9566],{"class":57,"line":547},[55,9563,9551],{"class":417},[55,9565,9123],{"class":65},[55,9567,989],{"class":232},[55,9569,9570],{"class":57,"line":3702},[55,9571,470],{"class":232},[55,9573,9574],{"class":57,"line":3717},[55,9575,550],{"class":232},[615,9577],{},[28,9579,9581],{"id":9580},"_115-参数传递","11.5 参数传递",[98,9583,9585],{"id":9584},"_1151-基本数据类型","11.5.1 基本数据类型",[335,9587,9588,9591],{},[338,9589,9590],{},"传递的是值的副本。",[338,9592,9593],{},"方法内修改参数，不影响原变量。",[45,9595,9597],{"className":409,"code":9596,"language":184,"meta":50,"style":50},"public static void modifyPrimitive(int num) {\n    num = 20;\n}\n",[52,9598,9599,9616,9628],{"__ignoreMap":50},[55,9600,9601,9603,9605,9607,9610,9612,9614],{"class":57,"line":58},[55,9602,418],{"class":417},[55,9604,491],{"class":417},[55,9606,441],{"class":417},[55,9608,9609],{"class":61}," modifyPrimitive",[55,9611,254],{"class":232},[55,9613,1250],{"class":417},[55,9615,9079],{"class":232},[55,9617,9618,9621,9623,9626],{"class":57,"line":226},[55,9619,9620],{"class":232},"    num ",[55,9622,520],{"class":417},[55,9624,9625],{"class":130}," 20",[55,9627,989],{"class":232},[55,9629,9630],{"class":57,"line":245},[55,9631,550],{"class":232},[13,9633,9634],{},"调用后原变量仍为原值。",[98,9636,9638],{"id":9637},"_1152-引用数据类型","11.5.2 引用数据类型",[335,9640,9641,9644,9647],{},[338,9642,9643],{},"传递的是对象的引用。",[338,9645,9646],{},"方法内修改对象内容，会影响原对象。",[338,9648,9649],{},"常见引用类型：类、接口、数组、字符串、集合、枚举。",[45,9651,9653],{"className":409,"code":9652,"language":184,"meta":50,"style":50},"public static void modifyArray(int[] array) {\n    if (array.length > 0) {\n        array[0] = 99;\n    }\n}\n",[52,9654,9655,9673,9686,9702,9706],{"__ignoreMap":50},[55,9656,9657,9659,9661,9663,9666,9668,9670],{"class":57,"line":58},[55,9658,418],{"class":417},[55,9660,491],{"class":417},[55,9662,441],{"class":417},[55,9664,9665],{"class":61}," modifyArray",[55,9667,254],{"class":232},[55,9669,1250],{"class":417},[55,9671,9672],{"class":232},"[] array) {\n",[55,9674,9675,9677,9680,9682,9684],{"class":57,"line":226},[55,9676,3061],{"class":417},[55,9678,9679],{"class":232}," (array.length ",[55,9681,2194],{"class":417},[55,9683,2894],{"class":130},[55,9685,511],{"class":232},[55,9687,9688,9691,9693,9695,9697,9700],{"class":57,"line":245},[55,9689,9690],{"class":232},"        array[",[55,9692,792],{"class":130},[55,9694,7478],{"class":232},[55,9696,520],{"class":417},[55,9698,9699],{"class":130}," 99",[55,9701,989],{"class":232},[55,9703,9704],{"class":57,"line":450},[55,9705,470],{"class":232},[55,9707,9708],{"class":57,"line":467},[55,9709,550],{"class":232},[13,9711,9712],{},"原数组第一个元素会被修改。",[615,9714],{},[28,9716,9718],{"id":9717},"_116-变量作用域","11.6 变量作用域",[13,9720,9721],{},"变量只在特定区域内可见，这个区域称为作用域。",[98,9723,9725],{"id":9724},"_1161-局部变量","11.6.1 局部变量",[335,9727,9728,9731,9734,9737],{},[338,9729,9730],{},"在方法、构造器或代码块内声明。",[338,9732,9733],{},"只在声明它的块内可访问。",[338,9735,9736],{},"使用后离开作用域，内存释放。",[338,9738,9739],{},"使用前必须初始化，否则编译错误。",[98,9741,9743],{"id":9742},"_1162-实例变量","11.6.2  实例变量",[335,9745,9746,9749,9752,9755,9777],{},[338,9747,9748],{},"在类内、方法外声明。",[338,9750,9751],{},"类的所有方法都可访问。",[338,9753,9754],{},"属于对象实例。",[338,9756,9757,9758],{},"有默认值：\n",[335,9759,9760,9765,9772],{},[338,9761,9762,9763,1863],{},"数值类型为 ",[52,9764,792],{},[338,9766,9767,9769,9770,1863],{},[52,9768,1832],{}," 为 ",[52,9771,1842],{},[338,9773,9774,9775,965],{},"对象引用为 ",[52,9776,6477],{},[338,9778,9779],{},"实例销毁前一直保留值。",[98,9781,9783],{"id":9782},"_1163-类变量静态变量","11.6.3  类变量（静态变量）",[335,9785,9786,9791,9794,9797,9800],{},[338,9787,1985,9788,9790],{},[52,9789,2257],{}," 声明，在类内、方法外。",[338,9792,9793],{},"属于类，不属于某个实例。",[338,9795,9796],{},"所有实例共享。",[338,9798,9799],{},"可通过类名访问。",[338,9801,9802],{},"也有默认值，程序结束前一直保留。",[98,9804,9806],{"id":9805},"_1164-方法参数","11.6.4  方法参数",[335,9808,9809,9812],{},[338,9810,9811],{},"调用方法时传入的变量。",[338,9813,9814],{},"作用域限于所在方法，属于局部变量。",[615,9816],{},[28,9818,9820],{"id":9819},"_117-面向对象示例car-类","11.7 面向对象示例：Car 类",[45,9822,9824],{"className":409,"code":9823,"language":184,"meta":50,"style":50},"class Car {\n    String brand;\n    String model;\n    int year;\n\n    public void displayInfo() {\n        System.out.println(\"车型：\" + brand + \" \" + model + \"（\" + year + \" 年）\");\n    }\n\n    public static void main(String[] args) {\n        Car car1 = new Car();\n        car1.brand = \"BYD\";\n        car1.model = \"Seal\";\n        car1.year = 2023;\n\n        Car car2 = new Car();\n        car2.brand = \"Volvo\";\n        car2.model = \"XC40\";\n        car2.year = 2021;\n\n        car1.displayInfo();\n        car2.displayInfo();\n    }\n}\n",[52,9825,9826,9836,9841,9846,9853,9857,9868,9911,9915,9919,9939,9952,9964,9976,9988,9992,10005,10017,10030,10043,10048,10059,10069,10074],{"__ignoreMap":50},[55,9827,9828,9831,9834],{"class":57,"line":58},[55,9829,9830],{"class":417},"class",[55,9832,9833],{"class":61}," Car",[55,9835,427],{"class":232},[55,9837,9838],{"class":57,"line":226},[55,9839,9840],{"class":232},"    String brand;\n",[55,9842,9843],{"class":57,"line":245},[55,9844,9845],{"class":232},"    String model;\n",[55,9847,9848,9850],{"class":57,"line":450},[55,9849,9262],{"class":417},[55,9851,9852],{"class":232}," year;\n",[55,9854,9855],{"class":57,"line":467},[55,9856,477],{"emptyLinePlaceholder":476},[55,9858,9859,9861,9863,9866],{"class":57,"line":473},[55,9860,438],{"class":417},[55,9862,441],{"class":417},[55,9864,9865],{"class":61}," displayInfo",[55,9867,447],{"class":232},[55,9869,9870,9872,9874,9876,9879,9881,9884,9886,9889,9891,9894,9896,9899,9901,9904,9906,9909],{"class":57,"line":480},[55,9871,453],{"class":232},[55,9873,456],{"class":61},[55,9875,254],{"class":232},[55,9877,9878],{"class":65},"\"车型：\"",[55,9880,4027],{"class":417},[55,9882,9883],{"class":232}," brand ",[55,9885,789],{"class":417},[55,9887,9888],{"class":65}," \" \"",[55,9890,4027],{"class":417},[55,9892,9893],{"class":232}," model ",[55,9895,789],{"class":417},[55,9897,9898],{"class":65}," \"（\"",[55,9900,4027],{"class":417},[55,9902,9903],{"class":232}," year ",[55,9905,789],{"class":417},[55,9907,9908],{"class":65}," \" 年）\"",[55,9910,464],{"class":232},[55,9912,9913],{"class":57,"line":486},[55,9914,470],{"class":232},[55,9916,9917],{"class":57,"line":514},[55,9918,477],{"emptyLinePlaceholder":476},[55,9920,9921,9923,9925,9927,9929,9931,9933,9935,9937],{"class":57,"line":531},[55,9922,438],{"class":417},[55,9924,491],{"class":417},[55,9926,441],{"class":417},[55,9928,496],{"class":61},[55,9930,254],{"class":232},[55,9932,501],{"class":417},[55,9934,504],{"class":232},[55,9936,508],{"class":507},[55,9938,511],{"class":232},[55,9940,9941,9944,9946,9948,9950],{"class":57,"line":542},[55,9942,9943],{"class":232},"        Car car1 ",[55,9945,520],{"class":417},[55,9947,523],{"class":417},[55,9949,9833],{"class":61},[55,9951,528],{"class":232},[55,9953,9954,9957,9959,9962],{"class":57,"line":547},[55,9955,9956],{"class":232},"        car1.brand ",[55,9958,520],{"class":417},[55,9960,9961],{"class":65}," \"BYD\"",[55,9963,989],{"class":232},[55,9965,9966,9969,9971,9974],{"class":57,"line":3702},[55,9967,9968],{"class":232},"        car1.model ",[55,9970,520],{"class":417},[55,9972,9973],{"class":65}," \"Seal\"",[55,9975,989],{"class":232},[55,9977,9978,9981,9983,9986],{"class":57,"line":3717},[55,9979,9980],{"class":232},"        car1.year ",[55,9982,520],{"class":417},[55,9984,9985],{"class":130}," 2023",[55,9987,989],{"class":232},[55,9989,9990],{"class":57,"line":7882},[55,9991,477],{"emptyLinePlaceholder":476},[55,9993,9994,9997,9999,10001,10003],{"class":57,"line":7923},[55,9995,9996],{"class":232},"        Car car2 ",[55,9998,520],{"class":417},[55,10000,523],{"class":417},[55,10002,9833],{"class":61},[55,10004,528],{"class":232},[55,10006,10007,10010,10012,10015],{"class":57,"line":7928},[55,10008,10009],{"class":232},"        car2.brand ",[55,10011,520],{"class":417},[55,10013,10014],{"class":65}," \"Volvo\"",[55,10016,989],{"class":232},[55,10018,10020,10023,10025,10028],{"class":57,"line":10019},18,[55,10021,10022],{"class":232},"        car2.model ",[55,10024,520],{"class":417},[55,10026,10027],{"class":65}," \"XC40\"",[55,10029,989],{"class":232},[55,10031,10033,10036,10038,10041],{"class":57,"line":10032},19,[55,10034,10035],{"class":232},"        car2.year ",[55,10037,520],{"class":417},[55,10039,10040],{"class":130}," 2021",[55,10042,989],{"class":232},[55,10044,10046],{"class":57,"line":10045},20,[55,10047,477],{"emptyLinePlaceholder":476},[55,10049,10051,10054,10057],{"class":57,"line":10050},21,[55,10052,10053],{"class":232},"        car1.",[55,10055,10056],{"class":61},"displayInfo",[55,10058,528],{"class":232},[55,10060,10062,10065,10067],{"class":57,"line":10061},22,[55,10063,10064],{"class":232},"        car2.",[55,10066,10056],{"class":61},[55,10068,528],{"class":232},[55,10070,10072],{"class":57,"line":10071},23,[55,10073,470],{"class":232},[55,10075,10077],{"class":57,"line":10076},24,[55,10078,550],{"class":232},[335,10080,10081,10086,10097,10100],{},[338,10082,10083,10085],{},[52,10084,8765],{}," 是类，包含实例变量和方法。",[338,10087,10088,786,10091,2689,10094,10096],{},[52,10089,10090],{},"car1",[52,10092,10093],{},"car2",[52,10095,8765],{}," 的对象。",[338,10098,10099],{},"每个对象有自己的属性值。",[338,10101,10102,10103,965],{},"通过对象调用方法：",[52,10104,10105],{},"car1.displayInfo()",[615,10107],{},[28,10109,10111],{"id":10110},"_118-补充基本类型与引用类型","11.8 补充：基本类型与引用类型",[335,10113,10114,10134,10140],{},[338,10115,10116,406,10118,786,10120,786,10122,786,10124,786,10126,786,10128,786,10130,786,10132,965],{},[341,10117,7572],{},[52,10119,1832],{},[52,10121,1764],{},[52,10123,1774],{},[52,10125,1250],{},[52,10127,1793],{},[52,10129,1803],{},[52,10131,978],{},[52,10133,1822],{},[338,10135,10136,10139],{},[341,10137,10138],{},"引用类型","：类、接口、数组、枚举等。",[338,10141,10142],{},"引用类型存储的是对象的地址或引用。",[98,10144,10146],{"id":10145},"_1181-工具类","11.8.1 工具类",[335,10148,10149,10152,10155,10158],{},[338,10150,10151],{},"Java 中的“utility”通常指工具类。",[338,10153,10154],{},"工具类提供一组静态方法，用于常见任务。",[338,10156,10157],{},"例如字符串操作、数学运算、输入输出等。",[338,10159,10160],{},"工具类封装可重用代码，不属于特定对象实例。",[615,10162],{},[28,10164,10166],{"id":10165},"_119-核心要点","11.9 核心要点",[335,10168,10169,10172,10175,10178,10183,10186,10189,10192],{},[338,10170,10171],{},"模块化编程把程序分解为多个模块，便于管理和重用。",[338,10173,10174],{},"面向对象编程以类和对象为基础，类封装数据和方法。",[338,10176,10177],{},"方法是组织程序、实现代码复用的基本单位。",[338,10179,10180,10181,965],{},"方法由方法头和方法体组成，可返回值或 ",[52,10182,8985],{},[338,10184,10185],{},"静态方法通过类名调用，同类中可省略类名。",[338,10187,10188],{},"基本类型传值，引用类型传引用。",[338,10190,10191],{},"变量作用域决定变量的可见范围，包括局部变量、实例变量、类变量和方法参数。",[338,10193,10194],{},"合理使用方法、类和对象，可以写出结构清晰、易维护、可重用的程序。",[10196,10197,10198],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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 .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":50,"searchDepth":245,"depth":245,"links":10200},[10201,10202,10207,10208,10209,10210,10213,10214,10215,10216,10220,10223,10229,10234,10239,10242,10249,10250,10251,10252,10253,10259,10264,10269,10276,10282,10284,10286,10288,10290,10291,10293,10294,10295,10296,10298,10300,10301,10302,10303,10305,10306,10328,10332,10335,10342,10348,10354,10360,10366,10376,10377,10381,10387,10388,10391],{"id":30,"depth":226,"text":31},{"id":87,"depth":226,"text":88,"children":10203},[10204,10205,10206],{"id":100,"depth":245,"text":101},{"id":159,"depth":245,"text":160},{"id":170,"depth":245,"text":171},{"id":301,"depth":226,"text":302},{"id":329,"depth":226,"text":330},{"id":359,"depth":226,"text":360},{"id":390,"depth":226,"text":391,"children":10211},[10212],{"id":394,"depth":245,"text":395},{"id":565,"depth":226,"text":566},{"id":623,"depth":226,"text":624},{"id":633,"depth":226,"text":634},{"id":657,"depth":226,"text":658,"children":10217},[10218,10219],{"id":661,"depth":245,"text":662},{"id":685,"depth":245,"text":686},{"id":1180,"depth":226,"text":1181,"children":10221},[10222],{"id":1184,"depth":245,"text":1185},{"id":1300,"depth":226,"text":1301,"children":10224},[10225,10227],{"id":1422,"depth":245,"text":10226},"3.3.1. 输出：告别 System.out",{"id":1483,"depth":245,"text":10228},"3.3.2. 输入：IO.readln() 一步到位",{"id":1591,"depth":226,"text":1592,"children":10230},[10231,10232,10233],{"id":1635,"depth":245,"text":1636},{"id":1665,"depth":245,"text":1666},{"id":1694,"depth":245,"text":1695},{"id":1723,"depth":226,"text":1724,"children":10235},[10236,10237,10238],{"id":1743,"depth":245,"text":1744},{"id":1846,"depth":245,"text":1847},{"id":1872,"depth":245,"text":1873},{"id":1899,"depth":226,"text":1900,"children":10240},[10241],{"id":1949,"depth":245,"text":1950},{"id":2007,"depth":226,"text":2008,"children":10243},[10244,10245,10246,10247,10248],{"id":2014,"depth":245,"text":2015},{"id":2106,"depth":245,"text":2107},{"id":2147,"depth":245,"text":2148},{"id":2185,"depth":245,"text":2186},{"id":2216,"depth":245,"text":2217},{"id":2242,"depth":226,"text":2243},{"id":2375,"depth":226,"text":2376},{"id":2408,"depth":226,"text":2409},{"id":2440,"depth":226,"text":2441},{"id":2479,"depth":226,"text":10254,"children":10255},"5.3 if 语句",[10256,10257,10258],{"id":2487,"depth":245,"text":2487},{"id":2530,"depth":245,"text":2530},{"id":2636,"depth":245,"text":2636},{"id":2707,"depth":226,"text":10260,"children":10261},"5.4 if...else 语句",[10262,10263],{"id":2714,"depth":245,"text":2487},{"id":2759,"depth":245,"text":2760},{"id":3014,"depth":226,"text":10265,"children":10266},"5.5 嵌套 if",[10267],{"id":3104,"depth":245,"text":10268},"5.5.1 else 的绑定问题",{"id":3219,"depth":226,"text":10270,"children":10271},"5.6 多分支与 else if",[10272,10274],{"id":3226,"depth":245,"text":10273},"5.6.1 用多个独立 if 的问题",{"id":3323,"depth":245,"text":10275},"5.6.2 改进：else if 链",{"id":3441,"depth":226,"text":10277,"children":10278},"5.7 switch-case 语句",[10279,10280,10281],{"id":3462,"depth":245,"text":3463},{"id":3540,"depth":245,"text":3541},{"id":3588,"depth":245,"text":3589},{"id":3876,"depth":226,"text":10283},"6.1 while 循环",{"id":4126,"depth":226,"text":10285},"6.2 do...while 循环",{"id":4278,"depth":226,"text":10287},"6.3 for 循环",{"id":4619,"depth":226,"text":10289},"6.4 for-each 循环",{"id":4735,"depth":226,"text":4736},{"id":4859,"depth":226,"text":10292},"6.6 break 语句",{"id":4961,"depth":226,"text":4962},{"id":5053,"depth":226,"text":5054},{"id":5144,"depth":226,"text":5145},{"id":5241,"depth":226,"text":10297},"7.1 使用 Random 类",{"id":5473,"depth":226,"text":10299},"7.2  使用 Math.random()",{"id":5550,"depth":226,"text":5551},{"id":5622,"depth":226,"text":5623},{"id":5682,"depth":226,"text":5683},{"id":5824,"depth":226,"text":10304},"8.4  非访问修饰符 static",{"id":5899,"depth":226,"text":5900},{"id":5984,"depth":226,"text":5985,"children":10307},[10308,10310,10312,10314,10316,10318,10320,10322,10324,10326],{"id":5988,"depth":245,"text":10309},"9.2.1 length()",{"id":6033,"depth":245,"text":10311},"9.2.2 trim()",{"id":6075,"depth":245,"text":10313},"9.2.3 substring(int beginIndex, int endIndex)",{"id":6155,"depth":245,"text":10315},"9.2.4 equals(String)",{"id":6233,"depth":245,"text":10317},"9.2.5compareTo(String)",{"id":6336,"depth":245,"text":10319},"9.2.6 toLowerCase() 与 toUpperCase()",{"id":6398,"depth":245,"text":10321},"9.2.7split(String regex)",{"id":6462,"depth":245,"text":10323},"9.2.8 contains(CharSequence s)",{"id":6524,"depth":245,"text":10325},"9.2.9 charAt(int index)",{"id":6595,"depth":245,"text":10327},"9.2.10 replace(char oldChar, char newChar) 与 replace(CharSequence target, CharSequence replacement)",{"id":6663,"depth":226,"text":6664,"children":10329},[10330,10331],{"id":6688,"depth":245,"text":6689},{"id":6767,"depth":245,"text":6768},{"id":6889,"depth":226,"text":6890,"children":10333},[10334],{"id":6998,"depth":245,"text":6999},{"id":7191,"depth":226,"text":7192,"children":10336},[10337,10338,10339,10340,10341],{"id":7195,"depth":245,"text":7196},{"id":7290,"depth":245,"text":7291},{"id":7459,"depth":245,"text":7460},{"id":7553,"depth":245,"text":7554},{"id":7642,"depth":245,"text":7643},{"id":7947,"depth":226,"text":7948,"children":10343},[10344,10345,10346,10347],{"id":7951,"depth":245,"text":7952},{"id":8024,"depth":245,"text":8025},{"id":8231,"depth":245,"text":8232},{"id":8363,"depth":245,"text":8364},{"id":8458,"depth":226,"text":8459,"children":10349},[10350,10351,10352,10353],{"id":8465,"depth":245,"text":8466},{"id":8483,"depth":245,"text":8484},{"id":8501,"depth":245,"text":8502},{"id":8513,"depth":245,"text":8514},{"id":8575,"depth":226,"text":8576,"children":10355},[10356,10357,10358,10359],{"id":8579,"depth":245,"text":8580},{"id":8602,"depth":245,"text":8603},{"id":8630,"depth":245,"text":8631},{"id":8651,"depth":245,"text":8652},{"id":8682,"depth":226,"text":8683,"children":10361},[10362,10363,10364,10365],{"id":8686,"depth":245,"text":8687},{"id":8698,"depth":245,"text":8699},{"id":8717,"depth":245,"text":8718},{"id":8780,"depth":245,"text":8781},{"id":8868,"depth":226,"text":8869,"children":10367},[10368,10369,10370,10371,10373,10374],{"id":8872,"depth":245,"text":8873},{"id":8890,"depth":245,"text":8891},{"id":8913,"depth":245,"text":8914},{"id":9008,"depth":245,"text":10372},"11.3.4 方法体与 return",{"id":9051,"depth":245,"text":9052},{"id":9235,"depth":245,"text":10375},"11.3.6 示例：void 方法",{"id":9346,"depth":226,"text":9347},{"id":9580,"depth":226,"text":9581,"children":10378},[10379,10380],{"id":9584,"depth":245,"text":9585},{"id":9637,"depth":245,"text":9638},{"id":9717,"depth":226,"text":9718,"children":10382},[10383,10384,10385,10386],{"id":9724,"depth":245,"text":9725},{"id":9742,"depth":245,"text":9743},{"id":9782,"depth":245,"text":9783},{"id":9805,"depth":245,"text":9806},{"id":9819,"depth":226,"text":9820},{"id":10110,"depth":226,"text":10111,"children":10389},[10390],{"id":10145,"depth":245,"text":10146},{"id":10165,"depth":226,"text":10166},"学习",null,"2026-10-05","学习 Java 基础语法时的个人笔记：JDK 安装、输入输出、变量与运算符、条件与循环、字符串、数组与方法。示例代码均为自写，运行结果来自本地实测。","md",false,{},"\u002Fposts\u002Fjava\u002Fjava-basics-notes",{"title":5,"description":10395},"Java 学习笔记","posts\u002Fjava\u002Fjava-basics-notes",[248,10404,10405],"基础语法","学习笔记","cqNNz_4ec8Gp1HOrfxneKLvX9RCE0nzDpCmTOWGRVq4",[10408,10415,10421,10427,10433,10438,10443,10448,10453,10458,10463,10468,10473,10478,10483,10488,10493,10498,10503,10508,10513,10518,10523,10528,10533,10538,10543,10548,10553,10559,10563,10567,10571,10575,10579,10583,10587,10591,10595,10599,10603,10608,10612,10618,10622,10626,10630,10634,10638,10642,10646,10651,10655,10659,10664,10665,10671,10675,10680,10684],{"path":10409,"title":10410,"description":10411,"date":10412,"series":10413,"seriesOrder":10414},"\u002Fposts\u002Fswdesign\u002Fsw-design-notes-28","软件分析与设计笔记 28：draw.io 作图手册：五张图的符号位置、落笔顺序与自检","不模拟软件界面，只讲清三件事：每个 UML 符号在 draw.io 里搜什么词、一张图该按什么顺序落笔、画完拿什么标准自查。覆盖用例图、活动图、顺序图、类图、界面草图五种图纸，末尾附「最容易画反的十二笔」总检表。","2026-11-19","软件分析与设计笔记",28,{"path":10416,"title":10417,"description":10418,"date":10419,"series":10413,"seriesOrder":10420},"\u002Fposts\u002Fswdesign\u002Fsw-design-notes-27","软件分析与设计笔记 27：Paper 1 应试：从读案例到交卷的一次完整演算","拿一份完整的案例，从头到尾走一遍：怎么读案例列角色、怎么在四个小问之间分配时间、每一张图从哪一句话推出来、两张表怎么填、交卷前拿什么清单自查。附 C25 真题与样卷的题型分值对照。","2026-11-18",27,{"path":10422,"title":10423,"description":10424,"date":10425,"series":10413,"seriesOrder":10426},"\u002Fposts\u002Fswdesign\u002Fsw-design-notes-26","软件分析与设计笔记 26：总结：把整条链路串起来","系列收尾：从需求到代码的完整链路回顾、每一环的产出与验收方式、六条贯穿全系列的原则，以及一份可以直接拿去做项目自查的清单。","2026-11-17",26,{"path":10428,"title":10429,"description":10430,"date":10431,"series":10413,"seriesOrder":10432},"\u002Fposts\u002Fswdesign\u002Fsw-design-notes-25","软件分析与设计笔记 25：代码重构：坏味道与手法","重构不改变外部行为、只改善内部结构：四种常见坏味道与对应手法、为什么动手之前必须先有测试、什么时候该重构，以及重构和前面那些设计模型是什么关系。","2026-11-16",25,{"path":10434,"title":10435,"description":10436,"date":10437,"series":10413,"seriesOrder":10076},"\u002Fposts\u002Fswdesign\u002Fsw-design-notes-24","软件分析与设计笔记 24：设计原则：内聚、耦合与多态","好设计怎么衡量：内聚与耦合分别在说什么、一次从「差设计」到「多态重设计」的完整对照、抽象类与接口的选择依据，以及复用为什么会从优势变成风险。","2026-11-15",{"path":10439,"title":10440,"description":10441,"date":10442,"series":10413,"seriesOrder":10071},"\u002Fposts\u002Fswdesign\u002Fsw-design-notes-23","软件分析与设计笔记 23：设计建模：从对象模型到能实现的方案","分析模型能用但还不能直接开工：对象模型怎么映射到关系模型、继承映射的三种方案怎么选、数据访问层与 Data Broker 解决什么问题，以及三层架构与 MVC 的分工。","2026-11-14",{"path":10444,"title":10445,"description":10446,"date":10447,"series":10413,"seriesOrder":10061},"\u002Fposts\u002Fswdesign\u002Fsw-design-notes-22","软件分析与设计笔记 22：分析建模：边界、实体与控制对象","不经过分析直接写代码会踩什么坑、三种分析对象各管一段、怎么用顺序图完成一次用例实现，以及从顺序图导出类的属性、操作与关系的方法。","2026-11-13",{"path":10449,"title":10450,"description":10451,"date":10452,"series":10413,"seriesOrder":10050},"\u002Fposts\u002Fswdesign\u002Fsw-design-notes-21","软件分析与设计笔记 21：UML：类图与顺序图","为什么需要一种共同的画法：类符号三格怎么画、五种关系的符号与设计含义、每种关系落到 Java 是什么写法，顺序图的三要素怎么摆；以及这三种最容易找不到的符号在 draw.io 里各搜什么词。","2026-11-12",{"path":10454,"title":10455,"description":10456,"date":10457,"series":10413,"seriesOrder":10045},"\u002Fposts\u002Fswdesign\u002Fsw-design-notes-20","软件分析与设计笔记 20：面向对象概念：对象、关系与多态","面向对象不是「用某个语言写代码」：对象与类的区别、封装真正在保护什么、五种关系（依赖、关联、聚合、组合、继承）各自何时用，以及多态为什么能减少条件判断。","2026-11-11",{"path":10459,"title":10460,"description":10461,"date":10462,"series":10413,"seriesOrder":10032},"\u002Fposts\u002Fswdesign\u002Fsw-design-notes-19","软件分析与设计笔记 19：规范化与逻辑数据模型","一次改地址引发的数据不一致，讲清规范化的真正动机；UNF 到 3NF 每一步在解决什么问题，派生字段为什么不能存，优化为什么和规范化方向相反，以及逻辑数据模型在 3NF 之上补了什么。","2026-11-10",{"path":10464,"title":10465,"description":10466,"date":10467,"series":10413,"seriesOrder":10019},"\u002Fposts\u002Fswdesign\u002Fsw-design-notes-18","软件分析与设计笔记 18：数据库分析：实体、关系与数据字典","为什么不能拿到需求就动手建表：实体与关系怎么判定、基数为什么必须由业务方确认、数据命名要遵守什么规则，以及数据字典四列里最容易被空着的那一列。","2026-11-09",{"path":10469,"title":10470,"description":10471,"date":10472,"series":10413,"seriesOrder":7928},"\u002Fposts\u002Fswdesign\u002Fsw-design-notes-17","软件分析与设计笔记 17：用生成式 AI 做设计与开发：能用的场景与要防的坑","生成式 AI 在工作流里真正站得住的三个场景 —— 造示例数据、解释陌生代码、起草初稿；它为什么会复现社会偏见、为什么会编得像真的，以及哪些内容绝不能直接采用。","2026-11-08",{"path":10474,"title":10475,"description":10476,"date":10477,"series":10413,"seriesOrder":7923},"\u002Fposts\u002Fswdesign\u002Fsw-design-notes-16","软件分析与设计笔记 16：从 persona 到 URS：一份交付物的完整骨架","把前面十几篇串成一份能交出去的东西：用户需求规格说明书的九个部分、每一章来自哪个环节、由谁确认，以及面向决策者的提案该讲清哪三件事。","2026-11-07",{"path":10479,"title":10480,"description":10481,"date":10482,"series":10413,"seriesOrder":7882},"\u002Fposts\u002Fswdesign\u002Fsw-design-notes-15","软件分析与设计笔记 15：非功能需求：把「快、稳、安全」变成数字","为什么「系统要快」不是一条需求：非功能需求怎么量化，决定性能的用户量、交易量、数据量三张表怎么估，安全需求要写清什么，以及可靠性的「不可用」该怎么定义。","2026-11-06",{"path":10484,"title":10485,"description":10486,"date":10487,"series":10413,"seriesOrder":3717},"\u002Fposts\u002Fswdesign\u002Fsw-design-notes-14","软件分析与设计笔记 14：软件测试：层级、方法与等价类划分","「我们测过了」这句话问题在哪：为什么静态评审和动态测试缺一不可，五个测试层级各自验证什么，白盒与黑盒的差别，以及用等价类划分和边界值把无限输入变成有限用例的方法。","2026-11-05",{"path":10489,"title":10490,"description":10491,"date":10492,"series":10413,"seriesOrder":3702},"\u002Fposts\u002Fswdesign\u002Fsw-design-notes-13","软件分析与设计笔记 13：需求获取：五种调查方法与一场访谈","需求从哪里来：五种事实调查方法各自适合回答什么、代价是什么，访谈从准备到记录的全过程，问卷设计里最容易犯的错，以及访谈记录必须写下来的那几项信息。","2026-11-04",{"path":10494,"title":10495,"description":10496,"date":10497,"series":10413,"seriesOrder":547},"\u002Fposts\u002Fswdesign\u002Fsw-design-notes-12","软件分析与设计笔记 12：前端设计：把流程变成屏幕","界面设计不是「画得好看」：从活动图走到屏幕的三步，CRUD 任务流怎么当检查表，界面必须回答的三个问题，信息架构与五种导航类型，视觉一致性与留白，以及移动端与 Web 端的差别。","2026-11-03",{"path":10499,"title":10500,"description":10501,"date":10502,"series":10413,"seriesOrder":542},"\u002Fposts\u002Fswdesign\u002Fsw-design-notes-11","软件分析与设计笔记 11：Agentic AI 与业务流程自动化","AI agent 到底是什么：五项能力与四个核心组件，什么场景该用定时任务、什么该用程序、什么才值得用 agent，两种实现路径的差别，必须提前防住的四类失败模式，以及设计方法从提示词到编排的演进。","2026-11-02",{"path":10504,"title":10505,"description":10506,"date":10507,"series":10413,"seriesOrder":531},"\u002Fposts\u002Fswdesign\u002Fsw-design-notes-10","软件分析与设计笔记 10：精炼用例模型：include、extend 与泛化","三种精炼用例关系的判断标准：include 什么时候用、它和 extend 的区别到底在哪、参与者泛化与用例泛化各解决什么问题，以及精炼到什么程度就该停手。","2026-11-01",{"path":10509,"title":10510,"description":10511,"date":10512,"series":10413,"seriesOrder":514},"\u002Fposts\u002Fswdesign\u002Fsw-design-notes-09","软件分析与设计笔记 09：功能需求（二）：从流程到业务实体","活动图画完之后，怎么从流程里筛出真正的业务实体：三条判断标准、哪些名词其实不该建实体、属性从哪里来，以及领域模型和后面的数据模型分别负责什么。","2026-10-31",{"path":10514,"title":10515,"description":10516,"date":10517,"series":10413,"seriesOrder":486},"\u002Fposts\u002Fswdesign\u002Fsw-design-notes-08","软件分析与设计笔记 08：功能需求（一）：用例模型与活动图","从用户故事到用例的翻译过程：什么才算「好」的参与者，系统边界怎么划，用例描述必须写清哪四件事，活动图怎么把分支、并行与泳道画清楚，以及这两个图在 draw.io 里各用哪个形状、最容易画错哪一笔。","2026-10-30",{"path":10519,"title":10520,"description":10521,"date":10522,"series":10413,"seriesOrder":480},"\u002Fposts\u002Fswdesign\u002Fsw-design-notes-07","软件分析与设计笔记 07：用户故事：把需求写成可验收的一句话","用户故事的三段结构，怎么从用户画像和数据地图里把它提取出来，一条故事多大算合适、时序为什么也是需求的一部分，以及验收标准怎么写才算真的可验收。","2026-10-29",{"path":10524,"title":10525,"description":10526,"date":10527,"series":10413,"seriesOrder":473},"\u002Fposts\u002Fswdesign\u002Fsw-design-notes-06","软件分析与设计笔记 06：范围界定（数据侧）：用数据校验你的判断","访谈结论和数字对不上时该怎么办：分析的四个层次分别在回答什么问题、为什么不能跳级、数据准备与搜集怎么做成一张应用地图，以及数据最容易在哪几个地方骗你。","2026-10-28",{"path":10529,"title":10530,"description":10531,"date":10532,"series":10413,"seriesOrder":467},"\u002Fposts\u002Fswdesign\u002Fsw-design-notes-05","软件分析与设计笔记 05：范围界定（用户侧）：用户画像与客户旅程图","为什么「所有用户」是一个陷阱，项目边界该怎么划，用户画像要写哪五个要素、最容易写成什么废纸，客户旅程图怎么把阶段、想法和情绪画在同一张纸上，以及怎么从这两样东西一步步推到可验证的需求。","2026-10-27",{"path":10534,"title":10535,"description":10536,"date":10537,"series":10413,"seriesOrder":450},"\u002Fposts\u002Fswdesign\u002Fsw-design-notes-04","软件分析与设计笔记 04：接手陌生案例的第一步：三问与一张表","拿到一个完全陌生的业务案例，怎么从零开始不跑偏：只问 Who、What、Why 三个问题，把「问题—事实—假设—理由」记成一张四列表，说清为什么假设必须写明理由，以及带着问题进访谈为什么比空手去有效得多。","2026-10-26",{"path":10539,"title":10540,"description":10541,"date":10542,"series":10413,"seriesOrder":245},"\u002Fposts\u002Fswdesign\u002Fsw-design-notes-03","软件分析与设计笔记 03：Agile 与 Scrum：迭代、角色与产出物","从「三周做完交付，客户说这不是我要的」讲起，说清瀑布式与迭代式的根本差别，Scrum 的三个角色和三种产出物，一个 sprint 里四次固定活动各自在解决什么问题，以及敏捷里最常见的几个误解。","2026-10-25",{"path":10544,"title":10545,"description":10546,"date":10547,"series":10413,"seriesOrder":226},"\u002Fposts\u002Fswdesign\u002Fsw-design-notes-02","软件分析与设计笔记 02：设计思维、用户驱动与数据驱动","从「客服要一个能一次看完所有排期的界面」这个翻车案例讲起，说清设计思维到底是什么、用户驱动与数据驱动各自能看见什么又看不见什么、为什么真正的落点是把两者合起来的 data-informed design，以及访谈中怎么问出有用的信息。","2026-10-24",{"path":10549,"title":10550,"description":10551,"date":10552,"series":10413,"seriesOrder":58},"\u002Fposts\u002Fswdesign\u002Fsw-design-notes-01","软件分析与设计笔记 01：课程地图与从需求到设计的主干","这一篇不写具体方法，先把整条链路铺开：软件分析与设计到底要解决什么问题，从需求到设计分成哪两段，中间有哪十几个环节，一份完整的交付物里应该有什么，以及后面 27 篇笔记怎么排、新人该按什么顺序读。","2026-10-23",{"path":10554,"title":10555,"description":10556,"date":10557,"series":10558,"seriesOrder":58},"\u002Fposts\u002Fjavaspring\u002Fspring-notes-01","Spring 学习笔记 01：IoC、依赖注入与第一个 Spring Boot 应用","从「手写 new 出来的三层结构」的痛点讲起，说清 IoC 容器、Bean 与依赖注入是怎么回事，再用 Maven 与 Spring Initializr 跑起第一个能返回 JSON 的应用。","2026-10-15","Spring 学习笔记",{"path":10560,"title":10561,"description":10562,"date":10557,"series":10558,"seriesOrder":226},"\u002Fposts\u002Fjavaspring\u002Fspring-notes-02","Spring 学习笔记 02：Spring Data JPA 基础——实体映射与 Repository","用 ORM 把类映射到表：@Entity、@Id、@GeneratedValue 怎么用，CrudRepository 三层接口怎么选，H2 与 MySQL 怎么配，以及 ddl-auto 到底该写哪个值。",{"path":10564,"title":10565,"description":10566,"date":10557,"series":10558,"seriesOrder":245},"\u002Fposts\u002Fjavaspring\u002Fspring-notes-03","Spring 学习笔记 03：JPA 查询——派生方法、JPQL 与分页排序","Repository 自带的方法只够按主键查，这篇讲三种自己造查询的方式：方法名派生、@Query 写 JPQL、原生 SQL，以及 Pageable 分页排序和投影返回。",{"path":10568,"title":10569,"description":10570,"date":10557,"series":10558,"seriesOrder":450},"\u002Fposts\u002Fjavaspring\u002Fspring-notes-04","Spring 学习笔记 04：JPA 关联映射与仓储测试","一对多、多对多怎么映射，谁负责维护外键，FetchType 与 CascadeType 该怎么选，顺带用 @DataJpaTest 与 AssertJ 把仓储层测起来。",{"path":10572,"title":10573,"description":10574,"date":10557,"series":10558,"seriesOrder":467},"\u002Fposts\u002Fjavaspring\u002Fspring-notes-05","Spring 学习笔记 05：Spring MVC 与 Thymeleaf 入门","一次页面请求在 Spring MVC 里走了哪几步，@Controller 怎么把数据交给模板，@PathVariable 与 @RequestParam 怎么取参数，以及控制器为什么必须是无状态的。",{"path":10576,"title":10577,"description":10578,"date":10557,"series":10558,"seriesOrder":473},"\u002Fposts\u002Fjavaspring\u002Fspring-notes-06","Spring 学习笔记 06：表单绑定与服务端校验","把表单字段绑到对象上，用 Bean Validation 注解做服务端校验，把错误信息显示回用户刚填的那一页，再补上自定义校验注解与全局异常处理。",{"path":10580,"title":10581,"description":10582,"date":10557,"series":10558,"seriesOrder":480},"\u002Fposts\u002Fjavaspring\u002Fspring-notes-07","Spring 学习笔记 07：Thymeleaf 片段复用与国际化","用 th:fragment 与 th:insert\u002Fth:replace 把导航栏、页脚抽成片段，页面套用统一布局，再用 messages.properties 与 LocaleResolver 做中英文切换。",{"path":10584,"title":10585,"description":10586,"date":10557,"series":10558,"seriesOrder":486},"\u002Fposts\u002Fjavaspring\u002Fspring-notes-08","Spring 学习笔记 08：HTTP Session 与会话状态管理","HTTP 无状态带来的问题，Cookie 与 Session 怎么分工，Spring 里读写会话的几种方式，以及会话固定、超时、多实例共享这些必须想清楚的事。",{"path":10588,"title":10589,"description":10590,"date":10557,"series":10558,"seriesOrder":514},"\u002Fposts\u002Fjavaspring\u002Fspring-notes-09","Spring 学习笔记 09：拦截器 HandlerInterceptor","登录检查、权限判断、请求耗时统计这类横切逻辑该放哪：HandlerInterceptor 的三个回调各在什么时机执行，怎么注册与排除路径，以及它和过滤器的分工。",{"path":10592,"title":10593,"description":10594,"date":10557,"series":10558,"seriesOrder":531},"\u002Fposts\u002Fjavaspring\u002Fspring-notes-10","Spring 学习笔记 10：Service 层与事务","一组数据库操作要么全成功要么全失败，靠 @Transactional 怎么做到；传播行为、隔离级别、回滚规则怎么选，以及自调用失效、乐观锁悲观锁这些实战里的坑。",{"path":10596,"title":10597,"description":10598,"date":10557,"series":10558,"seriesOrder":542},"\u002Fposts\u002Fjavaspring\u002Fspring-notes-11","Spring 学习笔记 11：REST API 基础——把 Service 暴露成接口","同一套 Service 怎么同时服务页面和客户端：@RestController 的路由与方法语义、状态码怎么给、DTO 怎么定，以及 MockMvc 端到端和切片测试的两种写法与各自的坑。",{"path":10600,"title":10601,"description":10602,"date":10557,"series":10558,"seriesOrder":547},"\u002Fposts\u002Fjavaspring\u002Fspring-notes-12","Spring 学习笔记 12：REST 进阶——版本、更新、跨域与文档化","接口能跑通之后要处理的几件事：URL 与响应结构怎么定、版本怎么演进、更新怎么做到可安全重试、CORS 怎么配、HATEOAS 与 Spring Data REST 该不该用。",{"path":10604,"title":10605,"description":10606,"date":10607,"series":10401,"seriesOrder":450},"\u002Fposts\u002Fjava\u002Fjava-functionalprogramming-notes","Java 函数式编程笔记：Lambda、函数式接口与 Streams","学习 Java 函数式编程时的个人笔记：Lambda 表达式的五步简写与方法引用、常见函数式接口、Stream 流水线与惰性求值，以及创建流、中间操作、终止操作与收集器的用法。示例代码均为自写，运行结果来自本地实测。","2026-10-13",{"path":10609,"title":10610,"description":10611,"date":10607,"series":10401,"seriesOrder":245},"\u002Fposts\u002Fjava\u002Fjava-generics-notes","Java 泛型笔记：泛型方法、有界类型与泛型类","学习 Java 泛型时的个人笔记：从重复的重载方法与多态尝试讲起，再到泛型方法与类型推断、有界泛型类型、Comparable 与 Number 边界，以及泛型类在集合中的用法。示例代码均为自写，运行结果来自本地实测。",{"path":10613,"title":10614,"description":10615,"date":10616,"series":10617,"seriesOrder":450},"\u002Fposts\u002Fmysql\u002Fmysql-learning-04","MySQL 学习笔记 04：数据操纵（增删改）","MySQL 学习笔记第四篇：INSERT 插入（含批量插入与 INSERT ... SELECT）、UPDATE 更新、DELETE 删除，以及各自的坑。","2026-10-10","SQL 学习笔记",{"path":10619,"title":10620,"description":10621,"date":10616,"series":10617,"seriesOrder":467},"\u002Fposts\u002Fmysql\u002Fmysql-learning-05","MySQL 学习笔记 05：DDL 概览","MySQL 学习笔记第五篇：数据定义语言概览——Schema、Table、View、Index、Constraints 这几类对象分别对应哪些 CREATE \u002F ALTER \u002F DROP 命令。",{"path":10623,"title":10624,"description":10625,"date":10616,"series":10617,"seriesOrder":473},"\u002Fposts\u002Fmysql\u002Fmysql-learning-06","MySQL 学习笔记 06：CREATE TABLE 与数据类型","MySQL 学习笔记第六篇：CREATE TABLE 的完整语法、常用数据类型的选型建议，以及外键的两种定义方式。",{"path":10627,"title":10628,"description":10629,"date":10616,"series":10617,"seriesOrder":480},"\u002Fposts\u002Fmysql\u002Fmysql-learning-07","MySQL 学习笔记 07：索引","MySQL 学习笔记第七篇：索引的作用与 B+ 树结构、单列与复合索引的创建、索引的代价与适用场景。",{"path":10631,"title":10632,"description":10633,"date":10616,"series":10617,"seriesOrder":486},"\u002Fposts\u002Fmysql\u002Fmysql-learning-08","MySQL 学习笔记 08：DROP 与 ALTER","MySQL 学习笔记第八篇：DROP 删除数据库对象、ALTER 修改表结构，以及常见的坑。",{"path":10635,"title":10636,"description":10637,"date":10616,"series":10617,"seriesOrder":514},"\u002Fposts\u002Fmysql\u002Fmysql-learning-09","MySQL 学习笔记 09：约束与数据完整性","MySQL 学习笔记第九篇：SQL 约束——NOT NULL、CHECK、PRIMARY KEY、FOREIGN KEY 等如何保证数据完整性，以及它们的对比。",{"path":10639,"title":10640,"description":10641,"date":10616,"series":10617,"seriesOrder":531},"\u002Fposts\u002Fmysql\u002Fmysql-learning-10","MySQL 学习笔记 10：视图","MySQL 学习笔记第十篇：视图（Views）的定义与特性、和表的对比、创建与使用，以及可更新视图的限制。",{"path":10643,"title":10644,"description":10645,"date":10616,"series":10617,"seriesOrder":542},"\u002Fposts\u002Fmysql\u002Fmysql-learning-11","MySQL 学习笔记 11：存储过程","MySQL 学习笔记第十一篇：存储过程（Stored Procedures）的概念、创建与调用、带参数的写法，以及优缺点。",{"path":10647,"title":10648,"description":10649,"date":10650,"series":10617,"seriesOrder":58},"\u002Fposts\u002Fmysql\u002Fmysql-learning-01","MySQL 学习笔记 01：MySQL 基础知识","MySQL 学习笔记第一篇：MySQL Server 与 Workbench 的安装，数据库与 DBMS 的基本概念，关系模型、ACID 事务、常见数据类型，以及后续的学习路线。","2026-10-09",{"path":10652,"title":10653,"description":10654,"date":10650,"series":10617,"seriesOrder":226},"\u002Fposts\u002Fmysql\u002Fmysql-learning-02","MySQL 学习笔记 02：SELECT 查询与过滤","MySQL 学习笔记第二篇：SELECT 的基本语法与逻辑执行顺序，WHERE 过滤（比较、LIKE、IN、BETWEEN、NULL）、各种 JOIN、UNION 与子查询。",{"path":10656,"title":10657,"description":10658,"date":10650,"series":10617,"seriesOrder":245},"\u002Fposts\u002Fmysql\u002Fmysql-learning-03","MySQL 学习笔记 03：聚合、分组与输出控制","MySQL 学习笔记第三篇：COUNT\u002FSUM\u002FAVG 等聚合函数、GROUP BY 分组、HAVING 过滤、ORDER BY 与 LIMIT，以及一条 SELECT 的完整逻辑执行顺序。",{"path":10660,"title":10661,"description":10662,"date":10663,"series":10401,"seriesOrder":226},"\u002Fposts\u002Fjava\u002Fjava-oop-notes","Java 面向对象笔记：类、继承、多态与异常","学习 Java 面向对象编程时的个人笔记：类与对象、封装与访问修饰符、继承与多态、集合、抽象类与接口、异常处理。示例代码均为自写，运行结果来自本地实测。","2026-10-06",{"path":10399,"title":5,"description":10395,"date":10394,"series":10401,"seriesOrder":58},{"path":10666,"title":10667,"description":10668,"date":10669,"series":10670,"seriesOrder":58},"\u002Fposts\u002Fgit\u002Fgit-install-and-basics","Git 安装与基本使用","从装好 Git 到跑通日常提交流程，把最常用的几条命令和它们背后的三个区域讲清楚。","2026-10-04","Git 入门",{"path":10672,"title":10673,"description":10674,"date":10669,"series":10670,"seriesOrder":226},"\u002Fposts\u002Fgit\u002Flocal-remote-repository","本地远程仓库的部署","用自己的机器当 Git 服务器：建一个裸仓库、走 SSH 连上去，把本地提交推上去。",{"path":10676,"title":10677,"description":10678,"date":10669,"series":10679,"seriesOrder":58},"\u002Fposts\u002Fguide\u002Fguide-file-layout","文件都放在哪","文章、图片、封面分别放在仓库的什么位置，哪些目录可以放手改、哪些碰了会出问题。","博客使用指南",{"path":10681,"title":10682,"description":10683,"date":10669,"series":10679,"seriesOrder":226},"\u002Fposts\u002Fguide\u002Fguide-frontmatter","frontmatter 每个字段是什么意思","文章开头那段被横线包住的字段，逐个说明作用、默认行为和写错的后果。",{"path":10685,"title":10686,"description":10687,"date":10669,"series":10679,"seriesOrder":245},"\u002Fposts\u002Fguide\u002Fguide-markdown","正文怎么写 —— Markdown 与排版效果","标题、链接、图片、代码、表格分别怎么写，以及本站对它们做了哪些自定义处理。",1793268151699]