From e1938c5f1f468437db71dd7f2518cafd496ff5c5 Mon Sep 17 00:00:00 2001 From: itwanger Date: Wed, 17 Nov 2021 09:53:58 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=A0=87=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/array/array.md | 2 -- docs/array/print.md | 2 -- docs/basic-extra-meal/48-keywords.md | 2 -- docs/basic-extra-meal/annotation.md | 2 -- docs/basic-extra-meal/box.md | 2 +- docs/basic-extra-meal/comparable-omparator.md | 2 +- docs/basic-extra-meal/deep-copy.md | 2 +- docs/basic-extra-meal/enum.md | 2 +- docs/basic-extra-meal/equals-hashcode.md | 2 +- docs/basic-extra-meal/fanshe.md | 2 +- docs/basic-extra-meal/generic.md | 2 +- docs/basic-extra-meal/immutable.md | 2 +- docs/basic-extra-meal/int-cache.md | 2 +- docs/basic-extra-meal/java-naming.md | 1 - docs/basic-extra-meal/java-unicode.md | 2 +- docs/basic-extra-meal/override-overload.md | 2 +- docs/basic-extra-meal/pass-by-value.md | 2 +- docs/basic-extra-meal/true-generic.md | 2 +- docs/basic-extra-meal/varables.md | 2 +- .../what-happen-when-javac.md | 2 +- docs/basic-grammar/basic-data-type.md | 2 +- docs/basic-grammar/flow-control.md | 2 +- docs/basic-grammar/javadoc.md | 2 +- docs/basic-grammar/operator.md | 2 +- docs/collection/arraylist.md | 2 +- docs/collection/big-o.md | 2 +- docs/collection/fail-fast.md | 2 +- docs/collection/gailan.md | 1 - docs/collection/hash.md | 2 +- docs/collection/hashmap-interview.md | 2 +- docs/collection/hashmap-loadfactor.md | 2 +- docs/collection/hashmap-resize.md | 1 - docs/collection/hashmap-thread-nosafe.md | 1 - docs/collection/iterator-iterable.md | 2 +- docs/collection/linkedlist.md | 2 +- docs/collection/list-war-1.md | 2 +- docs/collection/list-war-2.md | 2 +- docs/common-tool/arrays.md | 1 - docs/common-tool/collections.md | 2 +- docs/common-tool/hutool.md | 2 +- docs/exception/gailan.md | 2 +- docs/exception/shijian.md | 2 +- docs/exception/throw-throws.md | 2 +- docs/exception/try-catch-finally.md | 1 - docs/exception/try-with-resouces.md | 1 - docs/io/shangtou.md | 2 +- docs/jvm/what-is-jvm.md | 2 +- docs/oo/abstract.md | 2 +- docs/oo/code-init.md | 1 - docs/oo/construct.md | 2 +- docs/oo/final.md | 1 - docs/oo/instanceof.md | 2 +- docs/oo/interface.md | 2 +- docs/oo/method.md | 2 +- docs/oo/object-class.md | 2 +- docs/oo/static.md | 2 +- docs/oo/this-super.md | 2 +- docs/oo/var.md | 2 +- docs/overview/hello-world.md | 2 +- docs/overview/idea.md | 2 +- docs/overview/java-advantage.md | 2 +- docs/overview/java-history.md | 2 +- docs/overview/jdk-jre.md | 2 +- docs/overview/what-is-java.md | 2 +- docs/string/constant-pool.md | 2 +- docs/string/equals.md | 2 +- docs/string/immutable.md | 2 +- docs/string/intern.md | 2 +- docs/string/join.md | 2 +- docs/string/split.md | 2 +- images/logo-01.png | Bin 0 -> 15358 bytes index.html | 31 +++++++----------- 72 files changed, 69 insertions(+), 93 deletions(-) create mode 100644 images/logo-01.png diff --git a/docs/array/array.md b/docs/array/array.md index 677b370d5..9b802c7f1 100644 --- a/docs/array/array.md +++ b/docs/array/array.md @@ -1,5 +1,3 @@ -## 数组 - “哥,我看你之前的文章里提到,ArrayList 的内部是用数组实现的,我就对数组非常感兴趣,想深入地了解一下,今天终于到这个环节了,好期待呀!”三妹的语气里显得很兴奋。 “的确是的,看 ArrayList 的源码就一清二楚了。”我一边说,一边打开 Intellij IDEA,并找到了 ArrayList 的源码。 diff --git a/docs/array/print.md b/docs/array/print.md index 33902b1a0..6797901d0 100644 --- a/docs/array/print.md +++ b/docs/array/print.md @@ -1,5 +1,3 @@ -## 打印数组 - “哥,之前听你说,数组也是一个对象,但 Java 中并未明确的定义这样一个类。”看来三妹有在用心地学习。 “是的,因此数组也就没有机会覆盖 `Object.toString()` 方法。如果尝试直接打印数组的话,输出的结果并不是我们预期的结果。”我接着三妹的话继续说。 diff --git a/docs/basic-extra-meal/48-keywords.md b/docs/basic-extra-meal/48-keywords.md index 5c63b0fdc..170e3ab9f 100644 --- a/docs/basic-extra-meal/48-keywords.md +++ b/docs/basic-extra-meal/48-keywords.md @@ -1,5 +1,3 @@ -## Java 中常用的 48 个关键字 - “二哥,就我之前学过的这些 Java 代码中,有 public、static、void、main 等等,它们应该都是关键字吧?”三妹的脸上泛着甜甜的笑容,我想她在学习 Java 方面已经变得越来越自信了。 “是的,三妹。Java 中的关键字可不少呢!你一下子可能记不了那么多,不过,先保留个印象吧,对以后的学习会很有帮助。” diff --git a/docs/basic-extra-meal/annotation.md b/docs/basic-extra-meal/annotation.md index 3fd64d56d..822c46b7b 100644 --- a/docs/basic-extra-meal/annotation.md +++ b/docs/basic-extra-meal/annotation.md @@ -1,5 +1,3 @@ -## 注解 - “二哥,这节讲注解吗?”三妹问。 “是的。”我说,“注解是 Java 中非常重要的一部分,但经常被忽视也是真的。之所以这么说是因为我们更倾向成为一名注解的使用者而不是创建者。`@Override` 注解用过吧?但你知道怎么自定义一个注解吗?” diff --git a/docs/basic-extra-meal/box.md b/docs/basic-extra-meal/box.md index eacee6e76..058f04b37 100644 --- a/docs/basic-extra-meal/box.md +++ b/docs/basic-extra-meal/box.md @@ -1,4 +1,4 @@ -## 自动装箱与拆箱 + “哥,听说 Java 的每个基本类型都对应了一个包装类型,比如说 int 的包装类型为 Integer,double 的包装类型为 Double,是这样吗?”从三妹这句话当中,能听得出来,她已经提前预习这块内容了。 diff --git a/docs/basic-extra-meal/comparable-omparator.md b/docs/basic-extra-meal/comparable-omparator.md index 2cf7a1767..31849b873 100644 --- a/docs/basic-extra-meal/comparable-omparator.md +++ b/docs/basic-extra-meal/comparable-omparator.md @@ -1,4 +1,4 @@ -## 马蜂窝一面:Comparable和Comparator有什么区别? + 那天,小二去马蜂窝面试,面试官老王一上来就甩给了他一道面试题:请问Comparable和Comparator有什么区别?小二差点笑出声,因为三年前,也就是 2021 年,他在《Java 程序员进阶之路》专栏上看到过这题😆。 diff --git a/docs/basic-extra-meal/deep-copy.md b/docs/basic-extra-meal/deep-copy.md index ad46c602a..5013062a7 100644 --- a/docs/basic-extra-meal/deep-copy.md +++ b/docs/basic-extra-meal/deep-copy.md @@ -1,4 +1,4 @@ -## 浅拷贝与深拷贝 + “哥,听说浅拷贝和深拷贝是 Java 面试中经常会被问到的一个问题,是这样吗?” diff --git a/docs/basic-extra-meal/enum.md b/docs/basic-extra-meal/enum.md index 300a6ab6e..d2e59ea6b 100644 --- a/docs/basic-extra-meal/enum.md +++ b/docs/basic-extra-meal/enum.md @@ -1,4 +1,4 @@ -## 枚举 + “今天我们来学习枚举吧,三妹!”我说,“同学让你去她家玩了两天,感觉怎么样呀?” diff --git a/docs/basic-extra-meal/equals-hashcode.md b/docs/basic-extra-meal/equals-hashcode.md index 7e8f84d8c..cb718fe41 100644 --- a/docs/basic-extra-meal/equals-hashcode.md +++ b/docs/basic-extra-meal/equals-hashcode.md @@ -1,4 +1,4 @@ -## 为什么重写 equals 时必须重写 hashCode 方法 + “二哥,我在读《Effective Java》 的时候,第 11 条规约说重写 equals 的时候必须要重写 hashCode 方法,这是为什么呀?”三妹单刀直入地问。 diff --git a/docs/basic-extra-meal/fanshe.md b/docs/basic-extra-meal/fanshe.md index cd2f4c21e..49f4cfd60 100644 --- a/docs/basic-extra-meal/fanshe.md +++ b/docs/basic-extra-meal/fanshe.md @@ -1,4 +1,4 @@ -## 深入理解 Java 中的反射 + “二哥,什么是反射呀?”三妹开门见山地问。 diff --git a/docs/basic-extra-meal/generic.md b/docs/basic-extra-meal/generic.md index 41b45d25b..020f134e1 100644 --- a/docs/basic-extra-meal/generic.md +++ b/docs/basic-extra-meal/generic.md @@ -1,4 +1,4 @@ -## 泛型 + “二哥,为什么要设计泛型啊?”三妹开门见山地问。 diff --git a/docs/basic-extra-meal/immutable.md b/docs/basic-extra-meal/immutable.md index 2cd8e3715..bdd188ae4 100644 --- a/docs/basic-extra-meal/immutable.md +++ b/docs/basic-extra-meal/immutable.md @@ -1,4 +1,4 @@ -## 手撸了一个Java的不可变对象,很哇塞! + >二哥,你能给我说说为什么 String 是 immutable 类(不可变对象)吗?我想研究它,想知道为什么它就不可变了,这种强烈的愿望就像想研究浩瀚的星空一样。但无奈自身功力有限,始终觉得雾里看花终隔一层。二哥你的文章总是充满趣味性,我想一定能够说明白,我也一定能够看明白,能在接下来写一写吗? diff --git a/docs/basic-extra-meal/int-cache.md b/docs/basic-extra-meal/int-cache.md index df7cbe22b..6440e5050 100644 --- a/docs/basic-extra-meal/int-cache.md +++ b/docs/basic-extra-meal/int-cache.md @@ -1,4 +1,4 @@ -## new Integer(18) 与 Integer.valueOf(18) 有什么区别 + “三妹,今天我们来补一个小的知识点:Java 数据类型缓存池。”我喝了一口枸杞泡的茶后对三妹说,“考你一个问题哈:`new Integer(18) 与 Integer.valueOf(18) ` 的区别是什么?” diff --git a/docs/basic-extra-meal/java-naming.md b/docs/basic-extra-meal/java-naming.md index c7f155408..53f9a5286 100644 --- a/docs/basic-extra-meal/java-naming.md +++ b/docs/basic-extra-meal/java-naming.md @@ -1,4 +1,3 @@ -## Java 命名约定 “二哥,Java 中的命名约定都有哪些呢?”三妹的脸上泛着甜甜的笑容,她开始对接下来要学习的内容充满期待了,这正是我感到欣慰的地方。 diff --git a/docs/basic-extra-meal/java-unicode.md b/docs/basic-extra-meal/java-unicode.md index 4d3462321..dcbb6c8f9 100644 --- a/docs/basic-extra-meal/java-unicode.md +++ b/docs/basic-extra-meal/java-unicode.md @@ -1,4 +1,4 @@ -## Java 默认的编码方式 Unicode + “二哥,[上一篇](https://mp.weixin.qq.com/s/twim3w_dp5ctCigjLGIbFw)文章中提到了 Unicode,说 Java 中的 char 类型之所以占 2 个字节,是因为 Java 使用的是 Unicode 字符集而不是 ASCII 字符集,我有点迷,想了解一下,能细致给我说说吗?” diff --git a/docs/basic-extra-meal/override-overload.md b/docs/basic-extra-meal/override-overload.md index f6162c7ef..854033596 100644 --- a/docs/basic-extra-meal/override-overload.md +++ b/docs/basic-extra-meal/override-overload.md @@ -1,4 +1,4 @@ -## 方法重载和方法重写 + ### 01、开篇 diff --git a/docs/basic-extra-meal/pass-by-value.md b/docs/basic-extra-meal/pass-by-value.md index dfe1fa3bf..35c0628a6 100644 --- a/docs/basic-extra-meal/pass-by-value.md +++ b/docs/basic-extra-meal/pass-by-value.md @@ -1,4 +1,4 @@ -## Java 到底是值传递还是引用传递 + “哥,说说 Java 到底是值传递还是引用传递吧?”三妹一脸的困惑,看得出来她被这个问题折磨得不轻。 diff --git a/docs/basic-extra-meal/true-generic.md b/docs/basic-extra-meal/true-generic.md index 167736f66..6c3efb9cb 100644 --- a/docs/basic-extra-meal/true-generic.md +++ b/docs/basic-extra-meal/true-generic.md @@ -1,4 +1,4 @@ -## Java 不能实现真正泛型的原因是什么? + “二哥,为啥 Java 不能实现真正泛型啊?”三妹开门见山地问。 diff --git a/docs/basic-extra-meal/varables.md b/docs/basic-extra-meal/varables.md index 44291ebf1..23d389439 100644 --- a/docs/basic-extra-meal/varables.md +++ b/docs/basic-extra-meal/varables.md @@ -1,4 +1,4 @@ -## 从原理上搞懂可变参数,就靠它了 + 为了让铁粉们能白票到阿里云的服务器,老王当了整整两天的客服,真正体验到了什么叫做“为人民群众谋福利”的不易和辛酸。正在他眼睛红肿打算要休息之际,小二跑过来问他:“Java 的可变参数究竟是怎么一回事?”老王一下子又清醒了,他爱 Java,他爱传道解惑,他爱这群尊敬他的读者。 diff --git a/docs/basic-extra-meal/what-happen-when-javac.md b/docs/basic-extra-meal/what-happen-when-javac.md index acc5cb2c6..5fa75f059 100644 --- a/docs/basic-extra-meal/what-happen-when-javac.md +++ b/docs/basic-extra-meal/what-happen-when-javac.md @@ -1,4 +1,4 @@ -## Java程序在编译期发生了什么 + “二哥,看了上一篇 [Hello World](https://mp.weixin.qq.com/s/191I_2CVOxVuyfLVtb4jhg) 的程序后,我很好奇,它是怎么在 Run 面板里打印出‘三妹,少看手机少打游戏,好好学,美美哒’呢?”三妹咪了一口麦香可可奶茶后对我说。 diff --git a/docs/basic-grammar/basic-data-type.md b/docs/basic-grammar/basic-data-type.md index d6b03e7f9..a2a5ae624 100644 --- a/docs/basic-grammar/basic-data-type.md +++ b/docs/basic-grammar/basic-data-type.md @@ -1,4 +1,4 @@ -## 基本数据类型 + “二哥,[上一节](https://mp.weixin.qq.com/s/IgBpLGn0L1HZymgI4hWGVA)提到了 Java 变量的数据类型,是不是指定了类型就限定了变量的取值范围啊?”三妹吸了一口麦香可可奶茶后对我说。 diff --git a/docs/basic-grammar/flow-control.md b/docs/basic-grammar/flow-control.md index bb67c01dd..629a28e9d 100644 --- a/docs/basic-grammar/flow-control.md +++ b/docs/basic-grammar/flow-control.md @@ -1,4 +1,4 @@ -## 流程控制 + “二哥,流程控制语句都有哪些呢?”三妹的脸上泛着甜甜的笑容,她开始对接下来要学习的内容充满期待了,这正是我感到欣慰的地方。 diff --git a/docs/basic-grammar/javadoc.md b/docs/basic-grammar/javadoc.md index a1a68f986..5eb560c1c 100644 --- a/docs/basic-grammar/javadoc.md +++ b/docs/basic-grammar/javadoc.md @@ -1,4 +1,4 @@ -## 注释:代码的最强辅助 + “二哥,Java 中的注释好像真没什么可讲的,我已经提前预习了,不过是单行注释,多行注释,还有文档注释。”三妹的脸上泛着甜甜的笑容,她竟然提前预习了接下来要学习的知识,有一种“士别三日,当刮目相看”的感觉。 diff --git a/docs/basic-grammar/operator.md b/docs/basic-grammar/operator.md index d4a6f6db7..f2cc568f9 100644 --- a/docs/basic-grammar/operator.md +++ b/docs/basic-grammar/operator.md @@ -1,4 +1,4 @@ -## 运算符 + “二哥,让我盲猜一下哈,运算符是不是指的就是加减乘除啊?”三妹的脸上泛着甜甜的笑容,我想她一定对提出的问题很有自信。 diff --git a/docs/collection/arraylist.md b/docs/collection/arraylist.md index 0e13752ef..8f425f04d 100644 --- a/docs/collection/arraylist.md +++ b/docs/collection/arraylist.md @@ -1,4 +1,4 @@ -## 面试官:换人!他连 ArrayList 都没吃透 + “二哥,听说今天我们开讲 ArrayList 了?好期待哦!”三妹明知故问,这个托配合得依然天衣无缝。 diff --git a/docs/collection/big-o.md b/docs/collection/big-o.md index 2f62c27e7..c85a645dc 100644 --- a/docs/collection/big-o.md +++ b/docs/collection/big-o.md @@ -1,4 +1,4 @@ -## 时间复杂度 + “二哥,为什么要讲时间复杂度呀?”三妹问。 diff --git a/docs/collection/fail-fast.md b/docs/collection/fail-fast.md index a70ddbc87..21cb0035c 100644 --- a/docs/collection/fail-fast.md +++ b/docs/collection/fail-fast.md @@ -1,4 +1,4 @@ -## 为什么阿里巴巴强制不要在 foreach 里执行删除操作 + 那天,小二去阿里面试,面试官老王一上来就甩给了他一道面试题:为什么阿里的 Java 开发手册里会强制不要在 foreach 里进行元素的删除操作?小二听完就面露喜色,因为两年前,也就是 2021 年,他在《Java 程序员进阶之路》专栏上的第 63 篇看到过这题😆。 diff --git a/docs/collection/gailan.md b/docs/collection/gailan.md index bc80436e8..cdbaf91f7 100644 --- a/docs/collection/gailan.md +++ b/docs/collection/gailan.md @@ -1,4 +1,3 @@ -## 初识集合框架 眼瞅着三妹的王者荣耀杀得正嗨,我趁机喊到:“别打了,三妹,我们来一起学习 Java 的集合框架吧。” diff --git a/docs/collection/hash.md b/docs/collection/hash.md index 06ff10703..4499c8d06 100644 --- a/docs/collection/hash.md +++ b/docs/collection/hash.md @@ -1,4 +1,4 @@ -## HashMap 的 hash 原理 + 那天,小二去蔚来面试,面试官老王一上来就问他:HashMap 的 hash 方法的原理是什么?当时就把裸面的小二给蚌埠住了。 diff --git a/docs/collection/hashmap-interview.md b/docs/collection/hashmap-interview.md index e86410fb9..fc05c30d5 100644 --- a/docs/collection/hashmap-interview.md +++ b/docs/collection/hashmap-interview.md @@ -1,4 +1,4 @@ -## HashMap 精选面试题(背诵版) + 对于 Java 求职者来说,HashMap 可谓是重中之重,是面试的必考点。然而 HashMap 的知识点非常多,复习起来花费精力很大。 diff --git a/docs/collection/hashmap-loadfactor.md b/docs/collection/hashmap-loadfactor.md index 5e30e526f..8b7b15806 100644 --- a/docs/collection/hashmap-loadfactor.md +++ b/docs/collection/hashmap-loadfactor.md @@ -1,4 +1,4 @@ -## HashMap 的加载因子为什么是 0.75 + **Warning**:这是《Java 程序员进阶之路》专栏的第 57 篇,我们来聊聊 HashMap的加载因子,为什么必须是0.75,而不是0.8,0.6。 diff --git a/docs/collection/hashmap-resize.md b/docs/collection/hashmap-resize.md index b252791d2..55ecfc3f1 100644 --- a/docs/collection/hashmap-resize.md +++ b/docs/collection/hashmap-resize.md @@ -1,4 +1,3 @@ -## HashMap 的扩容机制 **HashMap 发出的 Warning**:这是《Java 程序员进阶之路》专栏的第 56 篇。那天,小二垂头丧气地跑来给我诉苦,“老王,有个学弟小默问我‘ HashMap 的扩容机制’,我愣是支支吾吾讲了半天,没给他讲明白,讲到最后我内心都是崩溃的,差点哭出声!” diff --git a/docs/collection/hashmap-thread-nosafe.md b/docs/collection/hashmap-thread-nosafe.md index d8e135ff1..b2df9a19b 100644 --- a/docs/collection/hashmap-thread-nosafe.md +++ b/docs/collection/hashmap-thread-nosafe.md @@ -1,4 +1,3 @@ -## 为什么 HashMap 是线程不安全的? 三方面原因:多线程下扩容会死循环、多线程下 put 会导致元素丢失、put 和 get 并发时会导致 get 到 null,我们来一一分析。 diff --git a/docs/collection/iterator-iterable.md b/docs/collection/iterator-iterable.md index cf1964b69..8a3c07ef1 100644 --- a/docs/collection/iterator-iterable.md +++ b/docs/collection/iterator-iterable.md @@ -1,4 +1,4 @@ -## 海康威视一面:Iterator与Iterable有什么区别? + 那天,小二去海康威视面试,面试官老王一上来就甩给了他一道面试题:请问 Iterator与Iterable有什么区别?小二差点笑出声,因为一年前,也就是 2021 年,他在《Java 程序员进阶之路》专栏上的第 62 篇看到过这题😆。 diff --git a/docs/collection/linkedlist.md b/docs/collection/linkedlist.md index 8e026ad74..47524fbe5 100644 --- a/docs/collection/linkedlist.md +++ b/docs/collection/linkedlist.md @@ -1,4 +1,4 @@ -## 某团技术拷问:LinkedList 源码看过吗? + ### 一、LinkedList 的剖白 diff --git a/docs/collection/list-war-1.md b/docs/collection/list-war-1.md index 6c5bf9cc1..5a74c2563 100644 --- a/docs/collection/list-war-1.md +++ b/docs/collection/list-war-1.md @@ -1,4 +1,4 @@ -## ArrayList 重拳出击,把 LinkedList 干翻在地 + 这是《Java 程序员进阶之路》专栏的第 60 篇,我们来聊聊 ArrayList 和 LinkedList 之间的区别。大家可以到 GitHub 上给二哥一个 star,马上破 400 星标了。 diff --git a/docs/collection/list-war-2.md b/docs/collection/list-war-2.md index e7b8e9ab5..f68470e09 100644 --- a/docs/collection/list-war-2.md +++ b/docs/collection/list-war-2.md @@ -1,4 +1,4 @@ -## 被 ArrayList 锤了一拳后,LinkedList 很不服气 + 这是《Java 程序员进阶之路》专栏的第 61 篇,我们来继续探讨 ArrayList 和 LinkedList,这一篇比[上一篇](https://mp.weixin.qq.com/s/mjeLeNv5PKateVarZE4KQQ)更深入、更全面,源码讲解、性能考量,方方面面都有涉及到了。 diff --git a/docs/common-tool/arrays.md b/docs/common-tool/arrays.md index 7486b0cba..54935c8b8 100644 --- a/docs/common-tool/arrays.md +++ b/docs/common-tool/arrays.md @@ -1,4 +1,3 @@ -## 数组工具类:Arrays “哥,数组专用工具类是专门用来操作数组的吗?比如说创建数组、数组排序、数组检索等等。”三妹的提问其实已经把答案说了出来。 diff --git a/docs/common-tool/collections.md b/docs/common-tool/collections.md index ae3504c9e..9cc027c45 100644 --- a/docs/common-tool/collections.md +++ b/docs/common-tool/collections.md @@ -1,4 +1,4 @@ -## 集合工具类:Collections + Collections 是 JDK 提供的一个工具类,位于 java.util 包下,提供了一系列的静态方法,方便我们对集合进行各种骚操作,算是集合框架的一个大管家。 diff --git a/docs/common-tool/hutool.md b/docs/common-tool/hutool.md index 8331f63bd..cb764837b 100644 --- a/docs/common-tool/hutool.md +++ b/docs/common-tool/hutool.md @@ -1,4 +1,4 @@ -## 不要再重复造轮子了,Hutool这款开源工具类库贼好使 + 读者群里有个小伙伴感慨说,“Hutool 这款开源类库太厉害了,基本上该有该的工具类,它里面都有。”讲真的,我平常工作中也经常用 Hutool,它确实可以帮助我们简化每一行代码,使 Java 拥有函数式语言般的优雅,让 Java 语言变得“甜甜的”。 diff --git a/docs/exception/gailan.md b/docs/exception/gailan.md index 3c6e36e75..795c64795 100644 --- a/docs/exception/gailan.md +++ b/docs/exception/gailan.md @@ -1,4 +1,4 @@ -## 异常处理机制 + “二哥,今天就要学习异常了吗?”三妹问。 diff --git a/docs/exception/shijian.md b/docs/exception/shijian.md index c3c6e8a51..073e9d707 100644 --- a/docs/exception/shijian.md +++ b/docs/exception/shijian.md @@ -1,4 +1,4 @@ -## 异常最佳实践 + “三妹啊,今天我来给你传授几个异常处理的最佳实践经验,以免你以后在开发中采坑。”我面带着微笑对三妹说。 diff --git a/docs/exception/throw-throws.md b/docs/exception/throw-throws.md index 38addbfed..6d1a6ed5a 100644 --- a/docs/exception/throw-throws.md +++ b/docs/exception/throw-throws.md @@ -1,4 +1,4 @@ -## throw 和 throws + “二哥,你能告诉我 throw 和 throws 两个关键字的区别吗?”三妹问。 diff --git a/docs/exception/try-catch-finally.md b/docs/exception/try-catch-finally.md index 813c6a4b5..9966e0740 100644 --- a/docs/exception/try-catch-finally.md +++ b/docs/exception/try-catch-finally.md @@ -1,4 +1,3 @@ -## try-catch-finally “二哥,[上一节](https://mp.weixin.qq.com/s/fXRJ1xdz_jNSSVTv7ZrYGQ)你讲了异常处理机制,这一节讲什么呢?”三妹问。 diff --git a/docs/exception/try-with-resouces.md b/docs/exception/try-with-resouces.md index adc86b72e..1d3e863b7 100644 --- a/docs/exception/try-with-resouces.md +++ b/docs/exception/try-with-resouces.md @@ -1,4 +1,3 @@ -## try-with-resouces “二哥,终于等到你讲 try-with-resouces 了!”三妹夸张的表情让我有些吃惊。 diff --git a/docs/io/shangtou.md b/docs/io/shangtou.md index 79eae5d72..7601d4b86 100644 --- a/docs/io/shangtou.md +++ b/docs/io/shangtou.md @@ -1,4 +1,4 @@ -## IO 流的分类和概述 + “老王,Java IO 也太上头了吧?”新兵蛋子小二向头顶很凉快的老王抱怨道,“你瞧,我就按照传输方式对 IO 进行了一个简单的分类,就能搞出来这么多的玩意!” diff --git a/docs/jvm/what-is-jvm.md b/docs/jvm/what-is-jvm.md index 8b56185fc..c746d97fb 100644 --- a/docs/jvm/what-is-jvm.md +++ b/docs/jvm/what-is-jvm.md @@ -1,4 +1,4 @@ -## JVM 是什么? + diff --git a/docs/oo/abstract.md b/docs/oo/abstract.md index 5ab18c368..dea56687f 100644 --- a/docs/oo/abstract.md +++ b/docs/oo/abstract.md @@ -1,4 +1,4 @@ -## 抽象类 + “二哥,你这明显加快了更新的频率呀!”三妹对于我最近的肝劲由衷的佩服了起来。 diff --git a/docs/oo/code-init.md b/docs/oo/code-init.md index a835cfe2d..e58433871 100644 --- a/docs/oo/code-init.md +++ b/docs/oo/code-init.md @@ -1,4 +1,3 @@ -## 代码初始块 “哥,今天我们要学习的内容是‘代码初始化块’,对吧?”看来三妹已经提前预习了我上次留给她的作业。 diff --git a/docs/oo/construct.md b/docs/oo/construct.md index bc18303ba..14836c787 100644 --- a/docs/oo/construct.md +++ b/docs/oo/construct.md @@ -1,4 +1,4 @@ -## 构造方法 + 我对三妹说,“[上一节](https://mp.weixin.qq.com/s/L4jAgQPurGZPvWu8ECtBpA)学了 Java 中的方法,接着学构造方法的话,难度就小很多了。” diff --git a/docs/oo/final.md b/docs/oo/final.md index e73dbc1d6..5068d51ce 100644 --- a/docs/oo/final.md +++ b/docs/oo/final.md @@ -1,4 +1,3 @@ -## final 关键字 “哥,今天学什么呢?” diff --git a/docs/oo/instanceof.md b/docs/oo/instanceof.md index 51aa726b6..f6f83c209 100644 --- a/docs/oo/instanceof.md +++ b/docs/oo/instanceof.md @@ -1,4 +1,4 @@ -## instanceof 关键字 + instanceof 关键字的用法其实很简单: diff --git a/docs/oo/interface.md b/docs/oo/interface.md index 4ca7d73bd..dd152420b 100644 --- a/docs/oo/interface.md +++ b/docs/oo/interface.md @@ -1,4 +1,4 @@ -## 接口 + “哥,我看你朋友圈说《Java 程序员进阶之路》专栏收到了第一笔赞赏呀,虽然只有一块钱,但我也替你感到开心。”三妹的脸上洋溢着自信的微笑,仿佛这钱是打给她的一样。 diff --git a/docs/oo/method.md b/docs/oo/method.md index 9efdc4f14..1bc91a41f 100644 --- a/docs/oo/method.md +++ b/docs/oo/method.md @@ -1,4 +1,4 @@ -## 方法 + “二哥,[上一节](https://mp.weixin.qq.com/s/UExby8GP3kSacCXliQw8pQ)学了对象和类,这一节我们学什么呢?”三妹满是期待的问我。 diff --git a/docs/oo/object-class.md b/docs/oo/object-class.md index cc58089ea..baef7a9ef 100644 --- a/docs/oo/object-class.md +++ b/docs/oo/object-class.md @@ -1,4 +1,4 @@ -## 什么是对象?什么是类 + “二哥,我那天在图书馆复习[上一节](https://mp.weixin.qq.com/s/WzMEOEdzI0fFwBQ4s0S-0g)你讲的内容,刚好碰见一个学长,他问我有没有‘对象’,我说还没有啊。结果你猜他说什么,‘要不要我给你 new 一个啊?’我当时就懵了,new 是啥意思啊,二哥?”三妹满是疑惑的问我。 diff --git a/docs/oo/static.md b/docs/oo/static.md index 3f70449ee..0ba7b7c9e 100644 --- a/docs/oo/static.md +++ b/docs/oo/static.md @@ -1,4 +1,4 @@ -## static 关键字 + “哥,你牙龈肿痛轻点没?周一的教妹学 Java 你都没有更新,偷懒了呀!”三妹关心地问我。 diff --git a/docs/oo/this-super.md b/docs/oo/this-super.md index c9fb9fdf0..52e86cbbc 100644 --- a/docs/oo/this-super.md +++ b/docs/oo/this-super.md @@ -1,4 +1,4 @@ -## this 和 super 关键字 + “哥,被喊大舅子的感觉怎么样啊?”三妹不怀好意地对我说,她眼睛里充满着不屑。 diff --git a/docs/oo/var.md b/docs/oo/var.md index 1700ce8ce..95ddb30c8 100644 --- a/docs/oo/var.md +++ b/docs/oo/var.md @@ -1,4 +1,4 @@ -## 变量 + “二哥,听说 Java 变量在以后的日子里经常用,能不能提前给我透露透露?”三妹咪了一口麦香可可奶茶后对我说。 diff --git a/docs/overview/hello-world.md b/docs/overview/hello-world.md index d138e6718..3226ac726 100644 --- a/docs/overview/hello-world.md +++ b/docs/overview/hello-world.md @@ -1,4 +1,4 @@ -## 第一个 Java 程序:Hello World + 可以通过 Intellij IDEA 来编写代码,也可以使用在线编辑器来完成。 diff --git a/docs/overview/idea.md b/docs/overview/idea.md index 13e0b1a20..829553594 100644 --- a/docs/overview/idea.md +++ b/docs/overview/idea.md @@ -1,4 +1,4 @@ -## 安装集成开发环境 Intellij IDEA + IntelliJ IDEA 简称 IDEA,是业界公认为最好的 Java 集成开发工具,尤其是在代码自动提示、代码重构、代码版本管理、单元测试、代码分析等方面有着亮眼的发挥。 diff --git a/docs/overview/java-advantage.md b/docs/overview/java-advantage.md index 34e67da06..ef2af8def 100644 --- a/docs/overview/java-advantage.md +++ b/docs/overview/java-advantage.md @@ -1,4 +1,4 @@ -## Java 的优势 + 尽管 Java 已经 25 岁了,但仍然“宝刀未老”。在 Stack Overflow 2019 年流行编程语言调查报告中,Java 位居第 5 位,有 41% 的受调开发者认为 Java 仍然是一门受欢迎的编程语言。 diff --git a/docs/overview/java-history.md b/docs/overview/java-history.md index d27e9197b..d629f349f 100644 --- a/docs/overview/java-history.md +++ b/docs/overview/java-history.md @@ -1,4 +1,4 @@ -## Java 发展简史 + 20 世纪 90 年代,单片式计算机系统诞生。单片式计算机系统不仅廉价(之前的计算机非常庞大,并且昂贵),而且功能强大,可以大幅度提升消费性电子产品的智能化程度。 diff --git a/docs/overview/jdk-jre.md b/docs/overview/jdk-jre.md index c4a2dc72c..14af8818a 100644 --- a/docs/overview/jdk-jre.md +++ b/docs/overview/jdk-jre.md @@ -1,4 +1,4 @@ -## JDK 与 JRE 之间的区别是什么? + “二哥,之前的文章里提到 JDK 与 JRE,说实在的,这两个概念把我搞得晕乎乎的,你能再给我普及一下吗?”三妹咪了一口麦香可可奶茶后对我说。 diff --git a/docs/overview/what-is-java.md b/docs/overview/what-is-java.md index 0ff8cad34..3d8bd4ae7 100644 --- a/docs/overview/what-is-java.md +++ b/docs/overview/what-is-java.md @@ -1,4 +1,4 @@ -## 什么是 Java? + “二哥,到底什么是 Java?给我说说呗。” diff --git a/docs/string/constant-pool.md b/docs/string/constant-pool.md index 8fb53aa71..2ca577b37 100644 --- a/docs/string/constant-pool.md +++ b/docs/string/constant-pool.md @@ -1,4 +1,4 @@ -## 字符串常量池 + “三妹,今天我们来学习一下字符串常量池吧,这是字符串中非常关键的一个知识点。”我话音未落,青岛路小学那边传来了嘹亮的歌声就钻进了我的耳朵,“唱 ~ 山 ~ 歌 ~” diff --git a/docs/string/equals.md b/docs/string/equals.md index 53cd7f4e6..efc382c88 100644 --- a/docs/string/equals.md +++ b/docs/string/equals.md @@ -1,4 +1,4 @@ -## 如何比较两个字符串是否相等 + “哥,如何比较两个字符串相等啊?”三妹问。 diff --git a/docs/string/immutable.md b/docs/string/immutable.md index c67559d93..85ef745ba 100644 --- a/docs/string/immutable.md +++ b/docs/string/immutable.md @@ -1,4 +1,4 @@ -## String 为什么是不可变的 + 我正坐在沙发上津津有味地读刘欣大佬的《码农翻身》——Java 帝国这一章,门铃响了。起身打开门一看,是三妹,她从学校回来了。 diff --git a/docs/string/intern.md b/docs/string/intern.md index d1531fc63..667a623ac 100644 --- a/docs/string/intern.md +++ b/docs/string/intern.md @@ -1,4 +1,4 @@ -## 深入浅出 String.intern + “哥,你发给我的那篇文章我看了,结果直接把我给看得不想学 Java 了!”三妹气冲冲地说。 diff --git a/docs/string/join.md b/docs/string/join.md index 0fcc684e7..4df930708 100644 --- a/docs/string/join.md +++ b/docs/string/join.md @@ -1,4 +1,4 @@ -## 如何拼接字符串 + “哥,你让我看的《Java 开发手册》上有这么一段内容:循环体内,拼接字符串最好使用 StringBuilder 的 `append()` 方法,而不是 + 号操作符。这是为什么呀?”三妹疑惑地问。 diff --git a/docs/string/split.md b/docs/string/split.md index 960e86599..a230e3731 100644 --- a/docs/string/split.md +++ b/docs/string/split.md @@ -1,4 +1,4 @@ -## 如何拆分字符串 + “哥,我感觉字符串拆分没什么可讲的呀,直接上 String 类的 `split()` 方法不就可以了!”三妹毫不客气地说。 diff --git a/images/logo-01.png b/images/logo-01.png new file mode 100644 index 0000000000000000000000000000000000000000..e007183709c6aa0a4aca7629f8a06c1dbc35ef15 GIT binary patch literal 15358 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

)9$oLh|JK6 z_S3)9O8v~`DAs7O0K{b~uIN%e1+XKX`j5)ruh9Aic<|;@MKPi--SlQA*MPOZ{je9i z=-I45Da;Pf!a5e-yZwQ+mx7SP$IZlb(BZ>l(DHmg5gd zeBfDR@d%rIQ+}v9CPCKr<@!2+ubP%g>5N!D3#=IKvK`+R};2NS{ I-!=aK09{GzI{*Lx literal 0 HcmV?d00001 diff --git a/index.html b/index.html index 5be30d4e9..496f1651c 100644 --- a/index.html +++ b/index.html @@ -6,22 +6,27 @@ - +

-
+
加载中。。。
- + - + -- GitLab