<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>黑曜星叙</title><description> 分享 日常 记录 学习 心得</description><link>https://love.xtllnn.xyz/</link><templateTheme>Firefly</templateTheme><templateThemeVersion>6.15.6</templateThemeVersion><templateThemeUrl>https://github.com/CuteLeaf/Firefly</templateThemeUrl><lastBuildDate>2026年9月3日 17:16:22</lastBuildDate><item><title>Java IO流 学习总结（附代码示例）💧</title><link>https://love.xtllnn.xyz/posts/blog/java-io%E6%B5%81-%E5%AD%A6%E4%B9%A0%E6%80%BB%E7%BB%93%E9%99%84%E4%BB%A3%E7%A0%81%E7%A4%BA%E4%BE%8B/</link><guid isPermaLink="true">https://love.xtllnn.xyz/posts/blog/java-io%E6%B5%81-%E5%AD%A6%E4%B9%A0%E6%80%BB%E7%BB%93%E9%99%84%E4%BB%A3%E7%A0%81%E7%A4%BA%E4%BE%8B/</guid><description>这是一篇IO流知识点总结的文章</description><pubDate>Sun, 30 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;本文概述📖&lt;a href=&quot;#本文概述&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;在这篇文章中我会总结 IO 流的知识，以及我对各个知识点的了解。希望对你有所帮助~&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;作者的废话&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;那就废话不多说，马上开始喵🐱~。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;什么是IO流？🤔&lt;a href=&quot;#什么是io流&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;&lt;strong&gt;IO 流是可以操作任何数据源的 API（代码工具）。&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;那么什么是数据源呢？数据源有：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;🗂️ &lt;strong&gt;文件&lt;/strong&gt;：存在硬盘上的纯文本文件、音视频文件、压缩包等等&lt;/li&gt;
&lt;li&gt;🧠 &lt;strong&gt;内存&lt;/strong&gt;：内存里面的缓存数据&lt;/li&gt;
&lt;li&gt;🌐 &lt;strong&gt;网络&lt;/strong&gt;：网站上的一些网络资源&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;这些都是数据源，IO 流就是可以操作这些数据源的工具。&lt;/p&gt;&lt;p&gt;比如可以把视频文件变成压缩包、从网站上的数据读取到本地文件、拷贝文件…&lt;/p&gt;&lt;p&gt;现在知道 IO 流有多么强大了吧喵~只要简单几十行代码就可以操作数据。(&lt;em&gt;^▽^&lt;/em&gt;)&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;💡 但是 IO 流是通过什么去获取到数据源所在的位置的呢？那就是 &lt;mark&gt;路径&lt;/mark&gt; 还有 &lt;mark&gt;链接&lt;/mark&gt; 🔗！&lt;/p&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;提醒&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;下面会讲述路径跟链接以及相应的 API。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;File📃&lt;a href=&quot;#file&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;File 类可以用来表示本地文件或文件夹的路径，并且还可以查看文件的信息、创建文件夹和文件、删除文件夹跟文件。&lt;/p&gt;&lt;p&gt;下面来展示一下在 Java 中怎么创建 File 的对象：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;//使用绝对路径创建File对象&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;File&lt;/span&gt;&lt;span&gt; file1 &lt;/span&gt;&lt;span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;File&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;D:&lt;/span&gt;&lt;span&gt;\\&lt;/span&gt;&lt;span&gt;Java&lt;/span&gt;&lt;span&gt;\\&lt;/span&gt;&lt;span&gt;Project&lt;/span&gt;&lt;span&gt;\\&lt;/span&gt;&lt;span&gt;a.txt&quot;&lt;/span&gt;&lt;span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;//使用相对路径创建File对象&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;File&lt;/span&gt;&lt;span&gt; file2 &lt;/span&gt;&lt;span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;File&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;Project&lt;/span&gt;&lt;span&gt;\\&lt;/span&gt;&lt;span&gt;a.txt&quot;&lt;/span&gt;&lt;span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;看到这可知，&lt;strong&gt;路径有两种&lt;/strong&gt;：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;mark&gt;绝对路径&lt;/mark&gt;：从盘符开始的路径，比如上面代码中的 &lt;code&gt;D:\&lt;/code&gt;，这是&lt;strong&gt;唯一的&lt;/strong&gt;，无论在哪个软件都能定位到在哪&lt;/li&gt;
&lt;li&gt;&lt;mark&gt;相对路径&lt;/mark&gt;：从当前工作目录（也就是当前程序运行的位置）开始的路径，换一个位置可能就找不到了&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;但把它们拆开看又多了两种：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;mark&gt;父级路径&lt;/mark&gt;：拿 &lt;span&gt;D:\Java\Project\a.txt&lt;/span&gt; 来举例，&lt;span&gt;D:\Java\Project&lt;/span&gt; 就是父级路径，也就是当前路径的上一级&lt;/li&gt;
&lt;li&gt;&lt;mark&gt;子级路径&lt;/mark&gt;：这个更好分辨，除开父级路径剩下的就是子级路径。还是拿上面的绝对路径举例，&lt;span&gt;a.txt&lt;/span&gt; 就是它的子级路径&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;URL-链接🔗&lt;a href=&quot;#url-链接&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;链接就是我们访问网站的链接喵~那有没有什么 API 可以存放链接呢？当然有咯喵！&lt;/p&gt;&lt;p&gt;下面是 URL 创建对象的代码：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;// 存放单个链接&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;URL&lt;/span&gt;&lt;span&gt; baidu &lt;/span&gt;&lt;span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;URL&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;https://www.baidu.com?wd=java&quot;&lt;/span&gt;&lt;span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;跟 File 差不多，就是把数据源的链接变成字符串存进去。&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;IO 流通过这些路径或链接去操作文件，那就会产出异常。比如：路径上的文件不存在、网站访问不到，这些情况都会出异常。&lt;/p&gt;&lt;p&gt;那异常出现了，作为一名负责的程序员当然要去解决啦！那具体怎么解决咧？马上就来讲喵~&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;注意&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;下面会讲述异常的相关知识，很重要哦~&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;异常👾&lt;a href=&quot;#异常&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;异常其实随处可见，你的代码报错了，那一片红其实就是异常。我们平时解决异常一般都是改参数，但是遇到 &lt;mark&gt;编译时异常&lt;/mark&gt; 就不能单单修改参数就可以解决的了。&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;异常有两种：&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;



















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;类型&lt;/th&gt;&lt;th&gt;发生时机&lt;/th&gt;&lt;th&gt;典型例子&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;mark&gt;编译时异常&lt;/mark&gt;&lt;/td&gt;&lt;td&gt;点击 IDEA 的「开始运行程序」按钮之后会进行编译，这时出现的问题（只要 .class 文件没有生成的时候报错，都叫编译时的问题）&lt;/td&gt;&lt;td&gt;如 URL 构造等检查型异常&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;mark&gt;运行时异常&lt;/mark&gt;&lt;/td&gt;&lt;td&gt;当程序编译完没问题后，程序开始运行才出现的异常&lt;/td&gt;&lt;td&gt;数组越界、空指针异常、算术错误等等&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;异常的解决方式：&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;提醒&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;这个解决方法主要针对于编译时异常，对于运行时异常是可有可无的。因为编译时异常你必须要解决，不解决就过不了编译，一直报错。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;方式一：抛出或声明异常&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;抛出或声明异常就是告诉调用者：用这个方法会出现这些异常，出现了异常你要处理。那如果调用者不处理，调用者也抛出异常，就会让 JVM（虚拟机）处理——&amp;gt;爆红🔴&lt;/p&gt;&lt;p&gt;&lt;strong&gt;方式二：捕获异常&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;目的&lt;/strong&gt;：当代码出现异常时，可以让程序继续往下执行，不会像 JVM 处理异常那样，出现异常就停止程序&lt;/li&gt;
&lt;li&gt;&lt;mark&gt;捕获异常不是为了”让代码不报错”，而是为了”让代码在报错时依然可控”。&lt;/mark&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;抛出 &amp;amp; 声明异常代码演示：&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;// 声明异常&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;static&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;main&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;String&lt;/span&gt;&lt;span&gt;[] args) throws MalformedURLException {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;// 创建链接对象&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;URL&lt;/span&gt;&lt;span&gt; baidu &lt;/span&gt;&lt;span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;URL&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;https://www.baidu.com?wd=java&quot;&lt;/span&gt;&lt;span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;// 抛出异常&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;static&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;registerUser&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;String&lt;/span&gt;&lt;span&gt;&lt;span&gt; name&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; age){&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;// 业务校验：如果年龄不合法，主动抛出异常&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt;&lt;span&gt; (age &lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;            &lt;/span&gt;&lt;span&gt;// 这里的 throw 就是&quot;主动抛出&quot;，程序会立即终止执行，跳到调用方的 catch 块&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;            &lt;/span&gt;&lt;span&gt;throw&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;IllegalArgumentException&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;用户年龄不能小于18岁，当前输入：&quot;&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; age)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;// 只有校验通过才会执行到这里&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;out&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;用户 &quot;&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; name &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&quot; 注册成功！&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;先看第一个 main 方法，&lt;mark&gt;throws MalformedURLException&lt;/mark&gt; 这个就是&lt;strong&gt;声明异常&lt;/strong&gt;。这个异常必须声明，因为 URL 是会出现编译时异常的；声明异常也告诉调用者：运行这个方法可能会导致这样的异常。&lt;/li&gt;
&lt;li&gt;第二个是&lt;strong&gt;抛出异常&lt;/strong&gt;，&lt;mark&gt;throw new IllegalArgumentException()&lt;/mark&gt; 是主动抛出，表示传递的数据不对，我要抛出异常让调用者解决。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;捕获异常代码演示：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;static&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;main&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;String&lt;/span&gt;&lt;span&gt;[] args) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;out&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;=== 程序开始 ===&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;try&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;            &lt;/span&gt;&lt;span&gt;System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;out&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;进入try块&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;            &lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; result &lt;/span&gt;&lt;span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;// 这里会报错（除数不能为0）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;            &lt;/span&gt;&lt;span&gt;System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;out&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;这行不会打印，因为上面已经炸了&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;} &lt;/span&gt;&lt;span&gt;catch&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;Exception&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;e&lt;/span&gt;&lt;span&gt;) {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;            &lt;/span&gt;&lt;span&gt;System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;out&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;捕获到异常：&quot;&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;e&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getMessage&lt;/span&gt;&lt;span&gt;());&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;} &lt;/span&gt;&lt;span&gt;finally&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;            &lt;/span&gt;&lt;span&gt;System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;out&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;finally执行：无论try里是否出错，我都要跑！&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;out&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;=== 程序结束（未崩溃）===&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;try…catch…finally 是捕获异常的完整格式：&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;mark&gt;try&lt;/mark&gt;：里面的代码表示可能会发生异常的代码&lt;/li&gt;
&lt;li&gt;&lt;mark&gt;catch&lt;/mark&gt;：try 的代码发生异常，catch 就会去接收异常，接收到异常就会执行里面的代码&lt;/li&gt;
&lt;li&gt;&lt;mark&gt;finally&lt;/mark&gt;：无论 try 是否出现异常，最后都会执行&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;捕获异常的 4 个注意点：&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;没遇到问题&lt;/strong&gt;：try 中没有遇到问题，就不会执行 catch 里的代码，而是把 try 里面所有的代码全部执行完毕，跳过 catch 往下执行&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;遇到多个问题&lt;/strong&gt;：try 中遇到多个问题，就要写多个 catch。catch 小括号中的参数是父子关系（多态）去接收异常，异常符合才会进入对应的 catch；如果多个异常之间存在父子关系，那么 &lt;mark&gt;父类一定要写在最下面&lt;/mark&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;没有被捕获&lt;/strong&gt;：try 中遇到的问题没有被捕获，那就相当于 try…catch 的代码白写了，最终还是会交给虚拟机进行处理&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;try 中出错&lt;/strong&gt;：try 中遇到了问题，try 下面的代码就不会执行，直接跳到对应的 catch 当中执行语句体；但如果没有对应的 catch 与之匹配，那么还是会交给虚拟机进行处理&lt;/li&gt;
&lt;/ol&gt;&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;自定义异常：&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;我们写代码的时候，时常会抛出异常，但是抛出的异常是Java定义好的很多时候可能表达不了自己写的程序出的是什么异常。这时我们就可以去自定义异常了。&lt;br /&gt;
&lt;span&gt;自定义运行时异常代码示例：&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;/**&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;* 自定义运行时异常&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;* 继承 RuntimeException，无需显式捕获或声明抛出&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;*/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;MyRuntimeException&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;extends&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;RuntimeException&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;// 无参构造&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;MyRuntimeException&lt;/span&gt;&lt;span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;super&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;// 带消息的构造&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;MyRuntimeException&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;String&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;message&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;super&lt;/span&gt;&lt;span&gt;(message);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;// 带消息和原因的构造&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;MyRuntimeException&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;String&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;message&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;/span&gt;&lt;span&gt;Throwable&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;cause&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;super&lt;/span&gt;&lt;span&gt;(message, cause);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;// 带原因的构造&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;MyRuntimeException&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;Throwable&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;cause&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;super&lt;/span&gt;&lt;span&gt;(cause);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;span&gt;自定义编译时时异常代码示例：&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;/**&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;* 自定义编译时异常（受检异常）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;* 继承 Exception，必须由调用者捕获或声明抛出（throws）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;*/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;MyCheckedException&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;extends&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Exception&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;// 无参构造&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;MyCheckedException&lt;/span&gt;&lt;span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;super&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;// 带消息的构造&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;MyCheckedException&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;String&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;message&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;super&lt;/span&gt;&lt;span&gt;(message);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;// 带消息和原因的构造&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;MyCheckedException&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;String&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;message&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;/span&gt;&lt;span&gt;Throwable&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;cause&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;super&lt;/span&gt;&lt;span&gt;(message, cause);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;// 带原因的构造&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;MyCheckedException&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;Throwable&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;cause&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;super&lt;/span&gt;&lt;span&gt;(cause);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;hr /&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;提醒&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;下面会讲述不同 IO 流的用法与区别~&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;不同种类的IO流🎯&lt;a href=&quot;#不同种类的io流&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;IO流的分类&lt;a href=&quot;#io流的分类&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;IO 流可以从&lt;strong&gt;两个维度&lt;/strong&gt;来分类：&lt;/p&gt;





























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;分类方式&lt;/th&gt;&lt;th&gt;类型&lt;/th&gt;&lt;th&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;按照流向分类&lt;/td&gt;&lt;td&gt;&lt;mark&gt;输入流&lt;/mark&gt;&lt;/td&gt;&lt;td&gt;读取数据&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;mark&gt;输出流&lt;/mark&gt;&lt;/td&gt;&lt;td&gt;写出数据&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;按照操作文件类型分类&lt;/td&gt;&lt;td&gt;&lt;mark&gt;字节流&lt;/mark&gt;&lt;/td&gt;&lt;td&gt;可以操作所有类型的数据（音频、视频、图片…）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;mark&gt;字符流&lt;/mark&gt;&lt;/td&gt;&lt;td&gt;只能操作纯文本文件（能用记事本打开、能读得懂的就是纯文本文件）&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;基本流与高级流&lt;a href=&quot;#基本流与高级流&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;什么是基本流？&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;基本流直接连接数据源，可以读写字节 / 字符：&lt;/p&gt;





























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;接口&lt;/th&gt;&lt;th&gt;类型&lt;/th&gt;&lt;th&gt;作用&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;OutputStream&lt;/code&gt;&lt;/td&gt;&lt;td&gt;字节输出流&lt;/td&gt;&lt;td&gt;写出字节数据&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;InputStream&lt;/code&gt;&lt;/td&gt;&lt;td&gt;字节输入流&lt;/td&gt;&lt;td&gt;读取字节数据&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;Writer&lt;/code&gt;&lt;/td&gt;&lt;td&gt;字符输出流&lt;/td&gt;&lt;td&gt;写出字符数据&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;Reader&lt;/code&gt;&lt;/td&gt;&lt;td&gt;字符输入流&lt;/td&gt;&lt;td&gt;读取字符数据&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;注意：上面这些都是接口&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;要使用这些 IO 流，就得调用它们的&lt;strong&gt;实现类&lt;/strong&gt;。比如你要用字节读取的方式读取本地文件，那么在前面加个 File 就行了——&lt;code&gt;FileInputStream&lt;/code&gt;，后面的高级流也是一样的。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;字节流 vs 字符流&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;字节流读取数据是一个字节一个字节地读取、写出的；而字符流是根据系统默认或指定的字符集去读取、写出的——一次会读写一个字节或者读多个字节。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;什么是高级流？&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;高级流底层还是用基本流去读写数据，但因为拥有 &lt;mark&gt;特有方法或特性&lt;/mark&gt;，读写的效率更高了：&lt;/p&gt;





































































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;流名称&lt;/th&gt;&lt;th&gt;类型&lt;/th&gt;&lt;th&gt;特点 / 特有方法&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;BufferedOutputStream&lt;/code&gt;&lt;/td&gt;&lt;td&gt;字节缓冲输出流&lt;/td&gt;&lt;td&gt;写出数据的时候会有&lt;strong&gt;缓冲区&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;BufferedInputStream&lt;/code&gt;&lt;/td&gt;&lt;td&gt;字节缓冲输入流&lt;/td&gt;&lt;td&gt;读取数据的时候会有&lt;strong&gt;缓冲区&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;BufferedWriter&lt;/code&gt;&lt;/td&gt;&lt;td&gt;字符缓冲输出流&lt;/td&gt;&lt;td&gt;写出数据的时候会有缓冲区（Writer 自身也有）；特有方法 &lt;code&gt;newLine()&lt;/code&gt; 可以&lt;strong&gt;跨平台换行&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;BufferedReader&lt;/code&gt;&lt;/td&gt;&lt;td&gt;字符缓冲输入流&lt;/td&gt;&lt;td&gt;读取数据的时候会有缓冲区（Reader 自身也有）；特有方法 &lt;code&gt;readLine()&lt;/code&gt; 可以&lt;strong&gt;一次读取一整行&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;InputStreamReader&lt;/code&gt;&lt;/td&gt;&lt;td&gt;转换输入流&lt;/td&gt;&lt;td&gt;把&lt;strong&gt;字节流转换成字符流&lt;/strong&gt;，让字节流拥有字符流的特性——一次读一个或多个字节，再把字节转换成字符&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;OutputStreamWriter&lt;/code&gt;&lt;/td&gt;&lt;td&gt;转换输出流&lt;/td&gt;&lt;td&gt;把&lt;strong&gt;字节流转换成字符流&lt;/strong&gt;，让字节流拥有字符流的特性——把内存中的字符转换成字节，再一次写一个或多个字节，可以使用字符流的方法&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;ObjectOutputStream&lt;/code&gt;&lt;/td&gt;&lt;td&gt;序列化流&lt;/td&gt;&lt;td&gt;可以把&lt;strong&gt;对象写到文件当中&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;ObjectInputStream&lt;/code&gt;&lt;/td&gt;&lt;td&gt;反序列化流&lt;/td&gt;&lt;td&gt;可以把&lt;strong&gt;文件中的对象读到内存中&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;PrintStream&lt;/code&gt;&lt;/td&gt;&lt;td&gt;字节打印流&lt;/td&gt;&lt;td&gt;可以把数据写到文件中，&lt;strong&gt;没有缓冲区&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;PrintWriter&lt;/code&gt;&lt;/td&gt;&lt;td&gt;字符打印流&lt;/td&gt;&lt;td&gt;可以把数据写到文件中，&lt;strong&gt;有缓冲区&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;ZipInputStream&lt;/code&gt;&lt;/td&gt;&lt;td&gt;解压缩流&lt;/td&gt;&lt;td&gt;可以把&lt;strong&gt;压缩包解压成文件&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;ZipOutputStream&lt;/code&gt;&lt;/td&gt;&lt;td&gt;压缩流&lt;/td&gt;&lt;td&gt;可以把&lt;strong&gt;文件变成压缩包&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;序列化流注意事项&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;
&lt;li&gt;使用序列化流的时候，要写出的对象一定要实现 &lt;mark&gt;Serializable&lt;/mark&gt; 接口——这个可以理解为”许可证”，没有这个许可证，你就不能把这个对象写出到文件中&lt;/li&gt;
&lt;li&gt;使用反序列化流的时候，会出现&lt;strong&gt;序列号不匹配&lt;/strong&gt;的情况。这是因为在读取之前更改了原本的对象，导致序列号变更，所以在写出之前要把 &lt;mark&gt;序列号固定下来&lt;/mark&gt;&lt;/li&gt;
&lt;li&gt;&lt;mark&gt;transient（瞬间关键字）&lt;/mark&gt;：当你不想让某个成员变量或方法被序列化时，可以在修饰符后加上这个关键字，避免被序列化&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;打印流的特点&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;特点 1&lt;/strong&gt;：打印流只能操作文件的目的地，不操作数据源&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;特点 2&lt;/strong&gt;：特有的写出方法可以实现数据&lt;strong&gt;原样写出&lt;/strong&gt;——例如：打印 &lt;code&gt;97&lt;/code&gt;，文件中也是 &lt;code&gt;97&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;特点 3&lt;/strong&gt;：特有的写出方法可以实现&lt;strong&gt;自动刷新、自动换行&lt;/strong&gt;。特有方法：
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;println&lt;/code&gt;：打印任意数据，自动刷新，自动换行&lt;/li&gt;
&lt;li&gt;&lt;code&gt;print&lt;/code&gt;：打印任意数据，不换行&lt;/li&gt;
&lt;li&gt;&lt;code&gt;printf&lt;/code&gt;：带占位符的打印语句，不换行&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;总结🎉&lt;a href=&quot;#总结&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;到这里，IO 流的知识就全部讲完啦喵~ 最后我们再来快速回顾一下整篇笔记：&lt;/p&gt;




























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;知识点&lt;/th&gt;&lt;th&gt;一句话总结&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;mark&gt;IO流&lt;/mark&gt;&lt;/td&gt;&lt;td&gt;可以操作&lt;strong&gt;任何数据源&lt;/strong&gt;的 API（代码工具），比如文件、内存、网络&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;mark&gt;File / URL&lt;/mark&gt;&lt;/td&gt;&lt;td&gt;通过&lt;strong&gt;路径 / 链接&lt;/strong&gt;来定位数据源的位置&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;mark&gt;异常处理&lt;/mark&gt;&lt;/td&gt;&lt;td&gt;编译时异常必须解决：&lt;strong&gt;声明抛出&lt;/strong&gt; 或 &lt;strong&gt;try…catch…finally 捕获&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;mark&gt;基本流&lt;/mark&gt;&lt;/td&gt;&lt;td&gt;直接连接数据源，读写&lt;strong&gt;字节 / 字符&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;mark&gt;高级流&lt;/mark&gt;&lt;/td&gt;&lt;td&gt;底层还是用基本流，靠&lt;strong&gt;特有方法或特性&lt;/strong&gt;提升读写效率&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;学习小建议&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;动手敲一遍&lt;/strong&gt;：每个流都写个小 Demo 跑一跑，比看十遍记得牢&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;先记住分类&lt;/strong&gt;：输入 / 输出、字节 / 字符，把这两个维度刻在脑子里，后面学什么都好归类&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;多留意特有方法&lt;/strong&gt;：&lt;code&gt;newLine()&lt;/code&gt;、&lt;code&gt;readLine()&lt;/code&gt;、&lt;code&gt;println&lt;/code&gt; 这些才是高级流的精华&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;序列化记得加”许可证”&lt;/strong&gt;：写对象前先实现 &lt;code&gt;Serializable&lt;/code&gt;，再固定好序列号&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;最后送大家一句话：&lt;mark&gt;IO 流并不难，多敲多练，熟能生巧&lt;/mark&gt;喵~ 💧&lt;/p&gt;&lt;p&gt;希望这篇笔记能帮到你，我们下次再见喵~ 🐱✨&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;</content:encoded></item><item><title>Java 集合 学习心得📖</title><link>https://love.xtllnn.xyz/posts/blog/java-%E9%9B%86%E5%90%88-%E5%AD%A6%E4%B9%A0%E5%BF%83%E5%BE%97/</link><guid isPermaLink="true">https://love.xtllnn.xyz/posts/blog/java-%E9%9B%86%E5%90%88-%E5%AD%A6%E4%B9%A0%E5%BF%83%E5%BE%97/</guid><description>在这里我会讲述学习Java集合的心得</description><pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;写在前面✨&lt;a href=&quot;#写在前面&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;你好呀！欢迎你来到这里~ 听我的故事。&lt;/p&gt;&lt;p&gt;在这里，我将会讲讲学习完 Java 集合之后的一些学习心得。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;我学到了什么？💡&lt;a href=&quot;#我学到了什么&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;集合是来源于数据结构的，所以在学习集合的初期，我没有一上来就去学习集合——因为集合实在是太多了，没有把基础打好，可能看了就忘了。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;初期我做了这些&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;
&lt;li&gt;复习数据结构&lt;/li&gt;
&lt;li&gt;把代码基础打牢&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;这些其实花了 2 天时间，其实挺值的。如果直接去学习集合，虽然说知道怎么用，但是不能理解底层是怎么操作的，那样会忘得很快。&lt;/p&gt;&lt;section&gt;&lt;h2&gt;Collection集合🗂️&lt;a href=&quot;#collection集合️&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;首先从 Collection 单列集合开始学&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;




























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;集合&lt;/th&gt;&lt;th&gt;底层数据结构&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;ArrayList&lt;/code&gt;&lt;/td&gt;&lt;td&gt;顺序表&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;LinkedList&lt;/code&gt;&lt;/td&gt;&lt;td&gt;双向链表&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;HashSet&lt;/code&gt;&lt;/td&gt;&lt;td&gt;哈希表&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;LinkedHashSet&lt;/code&gt;&lt;/td&gt;&lt;td&gt;哈希表 + 双向链表的组合&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;TreeSet&lt;/code&gt;&lt;/td&gt;&lt;td&gt;红黑树&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;ul&gt;
&lt;li&gt;学习单列集合通用的 API 以及遍历方法&lt;/li&gt;
&lt;li&gt;跟着视频扒了扒源码&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;在学习 Collection 集合时，让我印象最深刻的是&lt;strong&gt;扒源码&lt;/strong&gt;的那次：看着老师一步步扒源码、一步步带着我去分析，看完之后，感觉浑浊的脑浆都变得&lt;mark&gt;清澈见底&lt;/mark&gt;。万万没想到这么牛逼的想法，是上个世纪的老前辈想出来的。&lt;/p&gt;&lt;p&gt;在那时，我也对编程知识愈发感兴趣了，嘿嘿😁&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;Map集合🗺️&lt;a href=&quot;#map集合️&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;接着就开始学习 Map 集合了&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;HashMap&lt;/code&gt; 集合&lt;/li&gt;
&lt;li&gt;&lt;code&gt;LinkedHashMap&lt;/code&gt; 集合&lt;/li&gt;
&lt;li&gt;&lt;code&gt;TreeMap&lt;/code&gt; 集合&lt;/li&gt;
&lt;li&gt;学习了相关的遍历方法以及 API&lt;/li&gt;
&lt;li&gt;扒了扒源码&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Map 集合其实跟 Collection 集合差不多，不过就是一次存一个数据，变成一次存一对数据了。&lt;/p&gt;&lt;p&gt;有了前面学习集合的基础之后，Map 集合也不过如此。当我看源码的时候很意外——在没有视频分析的情况下，看得还是如此通透👋，这也许是前面学习集合和复习数据结构的功劳。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;Stream流 &amp;amp;&amp;amp; 方法引用🌊&lt;a href=&quot;#stream流--方法引用&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;学习 Stream 流跟方法引用：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Stream 流的&lt;strong&gt;中间方法&lt;/strong&gt;跟&lt;strong&gt;终结方法&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;方法引用：静态方法、成员方法、构造方法…&lt;/li&gt;
&lt;li&gt;Stream 流跟方法引用结合&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;学习这俩的时候，Stream 流让我看到了一个方法原来可以这么凌乱（用匿名内部类）…不过可读性倒是挺好。&lt;/p&gt;&lt;p&gt;刚学方法引用的时候觉得没什么，也在疑惑为什么要这么用？在我结合 Stream 流跟方法引用去写一些编程题的时候，我才意识到&lt;mark&gt;代码可以这么简洁&lt;/mark&gt;——看来是前辈们想出的偷懒的方法😄，不过可读性变低了。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;我想到了什么？🤔&lt;a href=&quot;#我想到了什么&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;在学习的期间我其实很痛苦😔，API 学完忘了又忘，甚至有些知识第二天就忘了…哈哈哈。&lt;/p&gt;&lt;section&gt;&lt;h2&gt;把所有知识都记住，才能变成编程大牛吗？🧠&lt;a href=&quot;#把所有知识都记住才能变成编程大牛吗&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;在学习 Java 的时候，我一直都认为要像学文科那样把知识全部记住才行。我觉得查 API、问 AI 这些效率太慢了，不如把所有知识的每一个细节都记下来，这样我的效率就会更高了。可…现实是这么残酷，我越是这么做，记下来的也很快就忘了…&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;后来我越来越焦躁，进度也停滞了…&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;在此期间，我看了很多学习编程的案例、听了学长对编程的讲解，发现：许多编程大牛都逃不过遗忘。&lt;/p&gt;&lt;p&gt;那一刻我忽然就释怀了——原来我所想象的大牛不是记忆超人，而是&lt;mark&gt;他们早就学会了在遗忘的时候去查文档、查笔记、查自己以前写过的代码&lt;/mark&gt;，而不是跟知识点死磕。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;为什么这些知识在大佬手中可以变成一个大项目？🚀&lt;a href=&quot;#为什么这些知识在大佬手中可以变成一个大项目&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;我在刷题的时候会用到很多集合相关的知识，可刷题只是为了解决问题，并没有&lt;mark&gt;创造一个新事物&lt;/mark&gt;。&lt;/p&gt;&lt;p&gt;我在那时就挺好奇的：为什么这些知识在大佬手中可以变成好玩的游戏、精美的网站、有趣的模组，可在我手中只是用来解决问题的工具？&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;以下仅为我个人理解⬇️&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;我在刷题的时候，注意力全在”怎么把这道题 AC”上。集合对我而言，就是 &lt;code&gt;List&lt;/code&gt;、&lt;code&gt;Set&lt;/code&gt;、&lt;code&gt;Map&lt;/code&gt; 这些容器——装完数据、做完操作、提交，就结束了。&lt;/p&gt;&lt;p&gt;可大佬看到的就不一样了：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;code&gt;List&lt;/code&gt; 可以是存放&lt;strong&gt;角色&lt;/strong&gt;的容器&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Set&lt;/code&gt; 可以用来存放、排序游戏中&lt;strong&gt;唯一性的道具&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;这也许就是不同点吧。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;尾声🌙&lt;a href=&quot;#尾声&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;其实本想再说说未来想干些什么的，但想了想，这对于我来说还是太过遥远了。现在的想法对于未来的我来说会很幼稚。😃&lt;/p&gt;&lt;p&gt;但~是！“幼稚”不代表不正确，所以我还是想说出来！未来的我看到这篇文章的时候，可能会笑、可能会羞耻，但也可能会找到那时破解困难的种子。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;将来我想自己做一款精美的游戏🎮&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;
&lt;li&gt;类型：视觉小说&lt;/li&gt;
&lt;li&gt;然后上架到 Steam，让每一位热爱视觉小说的人都可以玩到！&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;这就是我未来最想做的事了。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;p&gt;刷题还会继续，&lt;mark&gt;种子已经种下&lt;/mark&gt;。&lt;/p&gt;&lt;p&gt;下次打开 IDEA 的时候，我大概会对着 Map 发一会呆，然后偷偷想：&lt;/p&gt;&lt;p&gt;“这个键值对，以后会是谁对谁说的话呢？”&lt;/p&gt;&lt;p&gt;&lt;mark&gt;尾声，也是序章。&lt;/mark&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;hr /&gt;&lt;/section&gt;</content:encoded></item><item><title>学习编程的苦恼</title><link>https://love.xtllnn.xyz/posts/blog/%E5%AD%A6%E4%B9%A0%E7%BC%96%E7%A8%8B%E7%9A%84%E8%8B%A6%E6%81%BC/</link><guid isPermaLink="true">https://love.xtllnn.xyz/posts/blog/%E5%AD%A6%E4%B9%A0%E7%BC%96%E7%A8%8B%E7%9A%84%E8%8B%A6%E6%81%BC/</guid><description>在一次学习疲惫期的有感而发</description><pubDate>Sun, 09 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hello~今天更新的是第二篇文章！！！&lt;br /&gt;
今天就来讲讲我这段时间的学习上的苦恼与心得扒&lt;/p&gt;
&lt;section&gt;&lt;h1&gt;学习的苦恼&lt;a href=&quot;#学习的苦恼&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;blockquote&gt;&lt;p&gt;学Java已经学了一个月，感觉学到了很多东西 挺开心的。&lt;br /&gt;
但是啊越往后学就越发现前面学的东西有些都往了 比如：&lt;br /&gt;
API里面的方法 Date System Runtime这些类里面的方法都忘的差不多了&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;在Java集合里面学到数据结构时 我才意识到我忘的太多了 串、树、图这些章节的东西都忘了┭┮﹏┭┮&lt;br /&gt;
这就像是我好不容易刷到99%好感度的女主然后因为太久没接触她以为我在钓鱼好感度直接降到冰点有什么区别呢？&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;那么该怎么解决呢？请跟我细细道来~&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;解决方法&lt;a href=&quot;#解决方法&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;建议 &amp;gt; 下面是我在这段遗忘知识的时期的解决方法与建议&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;p&gt;📜希望看到这篇文章并且跟我有这种学习困恼的网友有所帮助&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;section&gt;&lt;h3&gt;1.放松焦躁的心态💓&lt;a href=&quot;#1放松焦躁的心态&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;当我们学习了一个知识 不久之后就忘了这时我们就会很焦躁 在心里会去贬低自己&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;CAUTION&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;千万不要去贬低自己哦~&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;我们背单词的时候也会有这种情况 这是生理规律——网上有个很火的词叫艾宾浩斯遗忘曲线&lt;br /&gt;
学了一个月或者更长的时间 如果没有可以去反复记忆 忘掉80%的知识细节是非常正常的&lt;br /&gt;
注意了！ 是知识的细节 而不是把知识全忘了。当你打开书去会看学过的东西时 你就会发现你又想起来了！&lt;/p&gt;&lt;section&gt;&lt;h4&gt;所以不要因为”忘了”就否定自己的的努力&lt;a href=&quot;#所以不要因为忘了就否定自己的的努力&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;你学的数据结构思维、面向对象思想，其实已经潜移默化地留在你脑子里了，只是还没有形成肌肉记忆而已。&lt;br /&gt;
————这句话来自我的学长跟我计算机规划方向的时候说的&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;section&gt;&lt;h3&gt;2.不要死记硬背 要学会”查文档&quot;&quot;查笔记”🖥️&lt;a href=&quot;#2不要死记硬背-要学会查文档查笔记️&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;看到这个标题有人就要问了：&lt;strong&gt;不是，不背那考试怎么办？ 那面试怎么办？&lt;/strong&gt;&lt;br /&gt;
我是说死记硬背哦~ 举个例子说说什么叫死记硬背：&lt;br /&gt;
当你拿着单词本去背了一个月的单词后 你到最后记下的也应该不超过100个——本人亲测过┭┮﹏┭┮ 这个应该是大多数人的状况吧 (身边的人也是这么跟我说的)&lt;br /&gt;
&lt;strong&gt;那为什么会出现这种情况呢？&lt;/strong&gt;&lt;br /&gt;
单个单词和单个单词之间本就没有逻辑，你再去放在一起去记忆这样会大大增加你大脑的负担&lt;br /&gt;
&lt;strong&gt;所以要让记忆变得“有场景、有关联”。&lt;/strong&gt;&lt;br /&gt;
背单词要把单词放在句子里、放在文章中去背，那样才不容易忘————这是来自于我英语老师Morty的方法&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://space.bilibili.com/388576777?spm_id_from=333.1387.follow.user_card.click&quot; target=&quot;_blank&quot;&gt;点这里跳转到Morty老师的主页&lt;/a&gt;&lt;/p&gt;&lt;p&gt;学Java的API跟数据结构也是一样的，与其死记硬背有哪些API、这些API有哪些方法、这个数据结构代码是怎么写的…&lt;br /&gt;
不如想想 &lt;strong&gt;“我什么场景下会用到它们？”&lt;/strong&gt;。大脑天生喜欢故事和逻辑，不喜欢枯燥的列表。&lt;br /&gt;
如果忘记了方法那么就去查文档，现实中其实没有那么多人可以把这么多API记住的人脑是有限的嘛~&lt;/p&gt;&lt;/section&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;section&gt;&lt;h3&gt;3.实践才是最靠谱的记忆法&lt;a href=&quot;#3实践才是最靠谱的记忆法&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;当你学习了一个知识点，但在你刷题做项目的时候很少会用到，那自然会忘的很快，因为你只是见过
不代表你真的记住了&lt;br /&gt;
就像你听别人讲了一遍怎么游泳、怎么刹车，和真正跳进水里扑腾、真正踩下刹车的感受是完全不一样的！&lt;br /&gt;
学数据结构跟Java也是一样的，数据结构听再多都是伪代码你自己不去实现在考试、在面试中还是写不出来。Java你不上手跟着视频去敲一遍你永远记不住。&lt;br /&gt;
我的建议是： &lt;strong&gt;看过十遍视频，不如亲手敲一遍代码&lt;/strong&gt;&lt;/p&gt;&lt;/section&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;（注：本文学习方法均为个人主观心得，不构成普适性建议，请结合自身学习情况理性参考哦~）&lt;/em&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;总结一下&lt;a href=&quot;#总结一下&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;blockquote&gt;&lt;p&gt;好啦~ 也是到了最后阶段啦~&lt;br /&gt;
发这篇文章也是因为学了一个月Java 发现自己前面学的知识细节全忘光了。&lt;br /&gt;
但仔细想想，这反而是让我摸索出正确的学习方法的契机。如果你也跟我一样，别急着怀疑自己。忘记细节也关系&lt;br /&gt;
只要记得上面的方法：多查笔记文档、多实践、多敲代码。&lt;br /&gt;
哪怕每天只写十几行，最难的不过是坚持，你跟Java的”好感度”一定会重新拉满的！大家一起加油~&lt;/p&gt;&lt;/blockquote&gt;&lt;/section&gt;</content:encoded></item><item><title>在2026年的夏天 我按下了发布按键</title><link>https://love.xtllnn.xyz/posts/blog/%E5%9C%A82026%E5%B9%B4%E7%9A%84%E5%A4%8F%E5%A4%A9-%E6%88%91%E6%8C%89%E4%B8%8B%E4%BA%86%E5%8F%91%E5%B8%83%E6%8C%89%E9%94%AE/</link><guid isPermaLink="true">https://love.xtllnn.xyz/posts/blog/%E5%9C%A82026%E5%B9%B4%E7%9A%84%E5%A4%8F%E5%A4%A9-%E6%88%91%E6%8C%89%E4%B8%8B%E4%BA%86%E5%8F%91%E5%B8%83%E6%8C%89%E9%94%AE/</guid><description>这个夏天不是起点 只是把酝酿已久的念头 变成了第一个铅字。不保证有用 但保证真实</description><pubDate>Wed, 05 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;&lt;p&gt;收到录取信息跟专业的那天 我跟很多同龄人一样激动的一晚上睡不着觉&lt;br /&gt;
为了让这3年来紧绷的经得到放纵，我本该好好庆祝。&lt;br /&gt;
但事实上，我打开电脑开始搜索”&lt;strong&gt;如何搭建个人博客&lt;/strong&gt;”。&lt;br /&gt;
我很庆幸能以最低分录进这个学校的&lt;strong&gt;人工智能&lt;/strong&gt;专业——可能是对AI的兴趣 也可能是想享受那种&lt;br /&gt;
搓出&lt;strong&gt;精美画面&lt;/strong&gt;的&lt;strong&gt;游戏&lt;/strong&gt;或是&lt;strong&gt;网站&lt;/strong&gt;的快感。&lt;br /&gt;
说实话,我也分不太清。&lt;/p&gt;&lt;/blockquote&gt;
&lt;section&gt;&lt;h1&gt;为什么写博客🔥&lt;a href=&quot;#为什么写博客&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;blockquote&gt;&lt;p&gt;但我很清楚一件事：&lt;strong&gt;不管我到底是因为AI或是编程还是因为想搓游戏才选了这个专业&lt;br /&gt;
我都需要一个地方，把这些年胡思乱想和以后的踩坑记录都装进去&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;所以才有了这个博客。&lt;/p&gt;&lt;p&gt;它不会很专业——毕竟我只是个准大一。但它会很真实。我会把学编程和AI时跑不通 的代码、调不对的模型、熬夜看文档的崩溃，全都写在这里。&lt;/p&gt;&lt;p&gt;如果你也是刚入门的新人 欢迎一起。如果你是大佬…轻点喷，我玻璃心┭┮﹏┭┮ 但我学的快。&lt;/p&gt;&lt;/blockquote&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;第一个打算做的项目🖥️&lt;a href=&quot;#第一个打算做的项目️&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;blockquote&gt;&lt;p&gt;我摊牌了！我其实是位二刺猿。这个项目我打算做个&lt;strong&gt;AI老婆管理器&lt;/strong&gt;的网站(&lt;em&gt;^▽^&lt;/em&gt;)&lt;br /&gt;
然后有&lt;strong&gt;100个老婆&lt;/strong&gt; &lt;span&gt;(想想就兴奋(p≧w≦q))&lt;/span&gt; 列表，每个性格、样式都不一样咳咳…这个等到时候再说。&lt;br /&gt;
更重要的是我想要在里面接入好几种AI模型 这样她们可以跟我对话。可能会耗很多token😭但这都值得！&lt;br /&gt;
至于进度——我现在刚学到Java集合 接下来准备学习MySQL和JavaWeb&lt;br /&gt;
学完这些就可以开始我的项目实现啦~🚀&lt;/p&gt;&lt;/blockquote&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;酷酷的收尾🦐&lt;a href=&quot;#酷酷的收尾&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;blockquote&gt;&lt;p&gt;不知不觉就来到了尾声，嗯那么…就这样吧。&lt;/p&gt;&lt;p&gt;第一篇写到这，我去写代码了。&lt;/p&gt;&lt;p&gt;如果你也是二次元，也在学编程 或者&lt;br /&gt;
单纯想看一个准大一新生怎么&lt;strong&gt;为了纸片人硬啃全栈开发&lt;/strong&gt;——下篇见。&lt;/p&gt;&lt;p&gt;进度条：1%（新建文件夹成功📂）&lt;/p&gt;&lt;p&gt;&lt;em&gt;2026年8月5日&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/section&gt;</content:encoded></item></channel></rss>