diff --git a/docs/.vuepress/sidebar.ts b/docs/.vuepress/sidebar.ts
index 2a1e67991ebc4417a15b09ff722af9467d8bb178..0bb8dfd85093bad198d52f85f619cde70b99a885 100644
--- a/docs/.vuepress/sidebar.ts
+++ b/docs/.vuepress/sidebar.ts
@@ -85,7 +85,21 @@ export const sidebarConfig = sidebar({
],
},
{
- text: "2.3 面向对象编程",
+ text: "2.3 数组&字符串",
+ collapsable: true,
+ children: [
+ "array/array",
+ "array/print",
+ "string/immutable",
+ "string/constant-pool",
+ "string/intern",
+ "string/equals",
+ "string/join",
+ "string/split",
+ ],
+ },
+ {
+ text: "2.4 面向对象编程",
collapsable: true,
children: [
{
@@ -161,46 +175,6 @@ export const sidebarConfig = sidebar({
],
},
- {
- text: "2.4 字符串&数组",
- collapsable: true,
- children: [
-
- {
- text: "字符串为什么是不可变的",
- link: "string/immutable",
- },
- {
- text: "字符串常量池",
- link: "string/constant-pool",
- },
- {
- text: " String#intern",
- link: "string/intern",
- },
- {
- text: "字符串比较",
- link: "string/equals",
- },
- {
- text: "字符串拼接",
- link: "string/join",
- },
- {
- text: "字符串分割",
- link: "string/split",
- },
- {
- text: "数组",
- link: "array/array",
- },
- {
- text: "打印数组",
- link: "array/print",
- },
-
- ],
- },
{
text: "2.5 集合框架(容器)",
collapsable: true,
@@ -908,6 +882,7 @@ export const sidebarConfig = sidebar({
"nice-article/weixin-githubxbkdjavajccjyh.md",
"nice-article/weixin-shejmsnb.md",
"nice-article/weixin-mozdsdzfjavableetcodetxxk.md",
+ "nice-article/weixin/sulwgalcpdssbjavakfsc.md",
"nice-article/yuanyifeng-c-language.md",
"nice-article/bat-shuati.md",
"nice-article/weixin-piaolwzjztqdtskwlzfpdf.md",
diff --git a/docs/README.md b/docs/README.md
index 2254bc8c7380dceff04bd55115c247f582421cbb..4d22193adb2fae8f0deb0bc7d4103193b61414ab 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -36,6 +36,7 @@ actions:
- [👏下载→GitHub星标115k+的Java教程](nice-article/weixin-githubxbkdjavajccjyh.md)
- [👏下载→重学Java设计模式](nice-article/weixin-shejmsnb.md)
- [👏下载→Java版LeetCode刷题笔记](nice-article/weixin-mozdsdzfjavableetcodetxxk.md)
+- [👏下载→阿里巴巴Java开发手册](nice-article/weixin/sulwgalcpdssbjavakfsc.md)
- [👏下载→阮一峰C语言入门教程](nice-article/yuanyifeng-c-language.md)
- [👏下载→BAT大佬的刷题笔记](nice-article/bat-shuati.md)
- [👏下载→给操作系统捋条线](nice-article/weixin-piaolwzjztqdtskwlzfpdf.md)
diff --git a/docs/array/array.md b/docs/array/array.md
index 34644e884d6e1cc42dbcf52d50a3b48b3ad4849b..2c245a7fc16bd4727f38084bebc3e4b08229017b 100644
--- a/docs/array/array.md
+++ b/docs/array/array.md
@@ -1,13 +1,19 @@
---
+title: 浅入浅出Java数组
+shortTitle: Java数组
category:
- Java核心
tag:
- - Java
+ - 数组&字符串
+description: Java程序员进阶之路,小白的零基础Java教程,从入门到进阶,Java数组
+head:
+ - - meta
+ - name: keywords
+ content: Java,Java SE,Java 基础,Java 教程,Java 程序员进阶之路,Java 入门,java数组
+ content: Java程序员进阶之路,小白的零基础Java教程,从入门到进阶,Java数组
---
-# 深入理解Java数组
-
-“哥,我看你之前的文章里提到,ArrayList 的内部是用数组实现的,我就对数组非常感兴趣,想深入地了解一下,今天终于到这个环节了,好期待呀!”三妹的语气里显得很兴奋。
+“二哥,我看你公众号的一篇文章里提到,ArrayList 的内部是用数组实现的,我就对数组非常感兴趣,想深入地了解一下,今天终于到这个环节了,好期待呀!”三妹的语气里显得很兴奋。
“的确是的,看 ArrayList 的源码就一清二楚了。”我一边说,一边打开 Intellij IDEA,并找到了 ArrayList 的源码。
@@ -66,9 +72,9 @@ int anOtherArray[];
int[] anArray = new int[10];
```
-看到了没?上面这行代码中使用了 new 关键字,这就意味着数组的确是一个对象,只有对象的创建才会用到 new 关键字,基本数据类型是不用的。然后,我们需要在方括号中指定数组的长度。
+看到了没?上面这行代码中使用了 new 关键字,这就意味着数组的确是一个对象,只有对象的创建才会用到 new 关键字,[基本数据类型](https://tobebetterjavaer.com/basic-grammar/basic-data-type.html)是不用的。然后,我们需要在方括号中指定数组的长度。
-这时候,数组中的每个元素都会被初始化为默认值,int 类型的就为 0,Object 类型的就为 null。 不同数据类型的默认值不同,可以参照[之前的文章](https://mp.weixin.qq.com/s/twim3w_dp5ctCigjLGIbFw)。
+这时候,数组中的每个元素都会被初始化为默认值,int 类型的就为 0,Object 类型的就为 null。 不同数据类型的默认值不同,可以参照[之前的文章](https://tobebetterjavaer.com/basic-grammar/basic-data-type.html)。
另外,还可以使用大括号的方式,直接初始化数组中的元素:
diff --git a/docs/array/print.md b/docs/array/print.md
index d6226c55689ef2b7b2407144129b9ed1751a9d1a..a4821e5f023af71b056dddf416edb30e7850e3dd 100644
--- a/docs/array/print.md
+++ b/docs/array/print.md
@@ -1,13 +1,19 @@
---
+title: 如何优雅地打印Java数组?
+shortTitle: 打印Java数组
category:
- Java核心
tag:
- - Java
+ - 数组&字符串
+description: Java程序员进阶之路,小白的零基础Java教程,从入门到进阶,如何优雅地打印Java数组?
+head:
+ - - meta
+ - name: keywords
+ content: Java,Java SE,Java 基础,Java 教程,Java 程序员进阶之路,Java 入门,java数组
+ content: Java程序员进阶之路,小白的零基础Java教程,从入门到进阶,如何优雅地打印Java数组?
---
-# 如何优雅地打印Java数组?
-
-“哥,之前听你说,数组也是一个对象,但 Java 中并未明确的定义这样一个类。”看来三妹有在用心地学习。
+“哥,[之前听你说,数组也是一个对象](https://tobebetterjavaer.com/array/array.html),但 Java 中并未明确的定义这样一个类。”看来三妹有在用心地学习。
“是的,因此数组也就没有机会覆盖 `Object.toString()` 方法。如果尝试直接打印数组的话,输出的结果并不是我们预期的结果。”我接着三妹的话继续说。
@@ -54,7 +60,7 @@ public final class String
“好了,不讨论这个了。”我怕话题扯远了,扯到我自己也答不出来就尴尬了,赶紧把三妹的思路拽了回来。
-“我们来看第一种打印数组的方法,使用时髦一点的 Stream 流。”
+“我们来看第一种打印数组的方法,使用时髦一点的[Stream 流](https://tobebetterjavaer.com/java8/stream.html)。”
第一种形式:
@@ -82,7 +88,7 @@ Arrays.stream(cmowers).forEach(System.out::println);
一枚有趣的程序员
```
-没错,这三种方式都可以轻松胜任本职工作,并且显得有点高大上,毕竟用到了 Stream,以及 lambda 表达式。
+没错,这三种方式都可以轻松胜任本职工作,并且显得有点高大上,毕竟用到了 Stream,以及 [lambda 表达式](https://tobebetterjavaer.com/java8/Lambda.html)。
“当然了,也可以使用比较土的方式,for 循环。甚至 for-each 也行。”
@@ -96,7 +102,7 @@ for (String s : cmowers) {
}
```
-“哥,你难道忘了[上一篇](https://mp.weixin.qq.com/s/acnDNH6A8USm_EYIT6i-jA)在讲 Arrays 工具类的时候,提到过另外一种方法 `Arrays.toString()` 吗?”三妹看我一直说不到点子上,有点着急了。
+“哥,你难道忘了[上一篇](https://tobebetterjavaer.com/common-tool/arrays.html)在讲 Arrays 工具类的时候,提到过另外一种方法 `Arrays.toString()` 吗?”三妹看我一直说不到点子上,有点着急了。
“当然没有了,我认为 `Arrays.toString()` 是打印数组的最佳方式,没有之一。”我的情绪有点激动。
diff --git a/docs/basic-extra-meal/48-keywords.md b/docs/basic-extra-meal/48-keywords.md
index f6509f4b0338a5c2f407079b853943464a3941f8..d7e5c8a455e9123d32d5705ec11fca347cf50b5c 100644
--- a/docs/basic-extra-meal/48-keywords.md
+++ b/docs/basic-extra-meal/48-keywords.md
@@ -2,24 +2,16 @@
title: Java中常用的48个关键字和2个保留字
shortTitle: 48个关键字和2个保留字
category:
- - Java 核心
+ - Java核心
tag:
- - Java
- - Java SE
- - Java 基础
- - Java 教程
- - Java 程序员进阶之路
- - Java 入门
- - Java 简介
- - Java 保留字
- - Java 关键字
-description: Java中常用的48个关键字和2个保留字
+ - Java语法基础
+description: Java程序员进阶之路,小白的零基础Java教程,Java中常用的48个关键字和2个保留字
head:
- - meta
- name: keywords
content: Java,Java SE,Java 基础,Java 教程,Java 程序员进阶之路,Java 入门,Java 简介,Java 保留字,Java 关键字
- name: description
- content: Java中常用的48个关键字和2个保留字
+ content: Java程序员进阶之路,小白的零基础Java教程,Java中常用的48个关键字和2个保留字
---
“二哥,就我之前学过的这些 Java 代码中,有 public、static、void、main 等等,它们应该都是关键字吧?”三妹的脸上泛着甜甜的笑容,我想她在学习 Java 方面已经变得越来越自信了。
diff --git a/docs/basic-extra-meal/java-naming.md b/docs/basic-extra-meal/java-naming.md
index efdfe9b5fee704d08bae76e7705c1089ad4f90a5..ddf9f2c69c879a2d3c8afe0be8a542196d8c3cfd 100644
--- a/docs/basic-extra-meal/java-naming.md
+++ b/docs/basic-extra-meal/java-naming.md
@@ -2,23 +2,16 @@
title: Java命名规范,告别编码 5 分钟,命名 2 小时
shortTitle: Java命名规范
category:
- - Java 核心
+ - Java核心
tag:
- - Java
- - Java SE
- - Java 基础
- - Java 教程
- - Java 程序员进阶之路
- - Java 入门
- - Java 简介
- - Java 命名规范
-description: Java命名规范,告别编码 5 分钟,命名 2 小时
+ - Java语法基础
+description: Java程序员进阶之路,小白的零基础Java教程,Java命名规范,告别编码 5 分钟,命名 2 小时
head:
- - meta
- name: keywords
content: Java,Java SE,Java 基础,Java 教程,Java 程序员进阶之路,Java 入门,Java 简介,Java 命名规范
- name: description
- content: Java命名规范,告别编码 5 分钟,命名 2 小时
+ content: Java程序员进阶之路,小白的零基础Java教程,Java命名规范,告别编码 5 分钟,命名 2 小时
---
“二哥,Java 中的命名约定都有哪些呢?”三妹的脸上泛着甜甜的笑容,她开始对接下来要学习的内容充满期待了,这正是我感到欣慰的地方。
diff --git a/docs/basic-grammar/basic-data-type.md b/docs/basic-grammar/basic-data-type.md
index a90c7c969aa8cad811ab7ead0bbe303fda714e27..b66934021dd0c54a415d5cf9b40cb60f3ab37443 100644
--- a/docs/basic-grammar/basic-data-type.md
+++ b/docs/basic-grammar/basic-data-type.md
@@ -2,25 +2,16 @@
title: Java 中的数据类型(8 种基本数据类型和引用数据类型)
shortTitle: Java 中的数据类型
category:
- - Java 核心
+ - Java核心
tag:
- - Java
- - Java SE
- - Java 基础
- - Java 教程
- - Java 程序员进阶之路
- - Java 入门
- - Java 简介
- - Java 数据类型
- - 基本数据类型
- - 引用数据类型
-description: Java 中的数据类型(8 种基本数据类型和引用数据类型)
+ - Java语法基础
+description: Java程序员进阶之路,小白的零基础Java教程,Java 中的数据类型(8 种基本数据类型和引用数据类型)
head:
- - meta
- name: keywords
content: Java,Java SE,Java 基础,Java 教程,Java 程序员进阶之路,Java 入门,Java 简介,Java 数据类型,基本数据类型,引用数据类型
- name: description
- content: Java 中的数据类型(8 种基本数据类型和引用数据类型)
+ content: Java程序员进阶之路,小白的零基础Java教程,Java 中的数据类型(8 种基本数据类型和引用数据类型)
---
“Java 是一种静态类型的编程语言,这意味着所有变量必须在使用之前声明好,也就是必须得先指定变量的类型和名称。”我吸了一口麦香可可奶茶后对三妹说。
diff --git a/docs/basic-grammar/flow-control.md b/docs/basic-grammar/flow-control.md
index 6ef39e09e71bd4c7dacb12584568ed16ded66694..fe1159d072ab0bd02fd70488c6d24485ab121de7 100644
--- a/docs/basic-grammar/flow-control.md
+++ b/docs/basic-grammar/flow-control.md
@@ -2,24 +2,16 @@
title: Java流程控制语句(if/switch判断语句和while/do-while/for循环语句)
shortTitle: Java流程控制语句
category:
- - Java 核心
+ - Java核心
tag:
- - Java
- - Java SE
- - Java 基础
- - Java 教程
- - Java 程序员进阶之路
- - Java 入门
- - Java 流程控制语句
- - Java 判断语句
- - Java 循环语句
-description: Java流程控制语句(if/switch判断语句和while/do-while/for循环语句)
+ - Java语法基础
+description: Java程序员进阶之路,小白的零基础Java教程,Java流程控制语句(if/switch判断语句和while/do-while/for循环语句)
head:
- - meta
- name: keywords
content: Java,Java SE,Java 基础,Java 教程,Java 程序员进阶之路,Java 入门,Java 流程控制语句,Java 判断语句,Java 循环语句
- name: description
- content: Java流程控制语句(if/switch判断语句和while/do-while/for循环语句)
+ content: Java程序员进阶之路,小白的零基础Java教程,Java流程控制语句(if/switch判断语句和while/do-while/for循环语句)
---
diff --git a/docs/basic-grammar/javadoc.md b/docs/basic-grammar/javadoc.md
index 3f0826a33bf10b9399250462fcd75d338466c90b..82031ae9e9a1f99fa6e8634238545a13f95d81dc 100644
--- a/docs/basic-grammar/javadoc.md
+++ b/docs/basic-grammar/javadoc.md
@@ -2,22 +2,16 @@
title: Java注释:单行、多行和文档注释
shortTitle: Java注释
category:
- - Java 核心
+ - Java核心
tag:
- - Java
- - Java SE
- - Java 基础
- - Java 教程
- - Java 程序员进阶之路
- - Java 入门
- - Java 注释
-description: Java注释:单行、多行和文档注释
+ - Java语法基础
+description: Java程序员进阶之路,小白的零基础Java教程,Java注释:单行、多行和文档注释
head:
- - meta
- name: keywords
content: Java,Java SE,Java 基础,Java 教程,Java 程序员进阶之路,Java 入门,Java 注释
- name: description
- content: Java注释:单行、多行和文档注释
+ content: Java程序员进阶之路,小白的零基础Java教程,Java注释:单行、多行和文档注释
---
“二哥,Java 中的注释好像真没什么可讲的,我已经提前预习了,不过是单行注释,多行注释,还有文档注释。”三妹的脸上泛着甜甜的笑容,她竟然提前预习了接下来要学习的知识,有一种“士别三日,当刮目相看”的感觉。
diff --git a/docs/basic-grammar/operator.md b/docs/basic-grammar/operator.md
index 7f2fbfa8db2685e8075f7d25b950e5ce9dc13df8..c6062617ab0e4a5e4a9f6553d1ed2d2b2681f18f 100644
--- a/docs/basic-grammar/operator.md
+++ b/docs/basic-grammar/operator.md
@@ -2,23 +2,16 @@
title: Java 运算符
shortTitle: Java 运算符
category:
- - Java 核心
+ - Java核心
tag:
- - Java
- - Java SE
- - Java 基础
- - Java 教程
- - Java 程序员进阶之路
- - Java 入门
- - Java 简介
- - Java 运算符
-description: 本文主要介绍Java 中的运算符(算术运算符、关系运算符、赋值运算符、逻辑运算符、位运算符)的使用
+ - Java语法基础
+description: Java程序员进阶之路,小白的零基础Java教程,本文主要介绍Java 中的运算符(算术运算符、关系运算符、赋值运算符、逻辑运算符、位运算符)的使用
head:
- - meta
- name: keywords
content: Java,Java SE,Java 基础,Java 教程,Java 程序员进阶之路,Java 入门,Java 简介,Java 运算符
- name: description
- content: 本文主要介绍Java 中的运算符(算术运算符、关系运算符、赋值运算符、逻辑运算符、位运算符)的使用
+ content: Java程序员进阶之路,小白的零基础Java教程,本文主要介绍Java 中的运算符(算术运算符、关系运算符、赋值运算符、逻辑运算符、位运算符)的使用
---
“二哥,让我盲猜一下哈,运算符是不是指的就是加减乘除啊?”三妹的脸上泛着甜甜的笑容,我想她一定对提出的问题很有自信。
diff --git a/docs/home.md b/docs/home.md
index 360beebf0600d7a745f2e657a4309212b8122129..254e300889b43bfea6dd507e94711a4b27b33b9f 100644
--- a/docs/home.md
+++ b/docs/home.md
@@ -2,6 +2,13 @@
title: Java程序员进阶之路x沉默王二
isOriginal: true
headerDepth: 1
+description: Java程序员进阶之路,小白的零基础Java教程,从入门到进阶
+head:
+ - - meta
+ - name: keywords
+ content: Java,java,springboot,mysql,redis,教程,git,软件,编程,开发,互联网,Java 基础,Java 教程,Java 程序员进阶之路,Java 入门
+ - name: description
+ content: Java程序员进阶之路,小白的零基础Java教程,从入门到进阶
---
👉 沉默王二-《Java 程序员进阶之路》官方知识星球来啦!!!如果你需要专属Java学习/面试小册/一对一交流/简历修改/专属求职指南/学习打卡,不妨花 3 分钟左右看看星球的详细介绍: 《Java 程序员进阶之路》详细介绍 (一定要确定自己真的需要再加入,一定要看完详细介绍之后再加我)。
@@ -111,7 +118,16 @@ headerDepth: 1
- [Java流程控制语句](basic-grammar/flow-control.md)
- [Java运算符](basic-grammar/operator.md)
+### 数组&字符串
+- [浅入浅出Java数组](array/array.md)
+- [如何优雅地打印Java数组?](array/print.md)
+- [为什么String是不可变的?](string/immutable.md)
+- [深入理解Java字符串常量池](string/constant-pool.md)
+- [深入解析String.intern()方法](string/intern.md)
+- [Java如何判断两个字符串是否相等?](string/equals.md)
+- [最优雅的Java字符串拼接是哪种方式?](string/join.md)
+- [如何在Java中优雅地分割String字符串?](string/split.md)
### Java面向对象编程
@@ -135,17 +151,6 @@ headerDepth: 1
- [Java枚举(enum)](basic-extra-meal/enum.md)
- [大白话说Java反射:入门、使用、原理](basic-extra-meal/fanshe.md)
-### 字符串&数组
-
-- [为什么String是不可变的?](string/immutable.md)
-- [深入了解Java字符串常量池](string/constant-pool.md)
-- [深入解析 String#intern](string/intern.md)
-- [Java判断两个字符串是否相等?](string/equals.md)
-- [Java字符串拼接的几种方式](string/join.md)
-- [如何在Java中优雅地分割String字符串?](string/split.md)
-- [深入理解Java数组](array/array.md)
-- [如何优雅地打印Java数组?](array/print.md)
-
### 集合框架(容器)
- [Java集合框架](collection/gailan.md)
diff --git a/docs/nice-article/weixin-bagwpdf.md b/docs/nice-article/weixin-bagwpdf.md
index dcc31c93ab68577f46ee1e5bddfa808defae1234..5ed605f8bd21ebe5a860bccb94307251b4980fff 100644
--- a/docs/nice-article/weixin-bagwpdf.md
+++ b/docs/nice-article/weixin-bagwpdf.md
@@ -1,10 +1,17 @@
---
title: 👏下载→最全最硬核的Java面试 “备战” 资料
-shortTitle: Java面试 “备战” 资料
+shortTitle: 下载→Java面试备战资料
category:
- 学习资源
tag:
- PDF
+head:
+ - - meta
+ - name: description
+ content: 下载→最全最硬核的Java面试 “备战” 资料
+ - - meta
+ - name: keywords
+ content: PDF,Java 面试资料,java面试准备,java面试题,java面试指南,java 面试题,java面试题2022
---
大家好,我是二哥呀!分享一下今天整理汇总的一些 Java 面试相关的 PDF 资料,希望对需要的小伙伴有帮助!
diff --git a/docs/nice-article/weixin-shenrjcjavabfbchwjdhl.md b/docs/nice-article/weixin-shenrjcjavabfbchwjdhl.md
index 0a2bbf0164654edbe20afe74c343fe4e403302ee..c174d1e2cb0b20e4424ba96d4b078ba3cdec60a7 100644
--- a/docs/nice-article/weixin-shenrjcjavabfbchwjdhl.md
+++ b/docs/nice-article/weixin-shenrjcjavabfbchwjdhl.md
@@ -1,10 +1,17 @@
---
-title: 👏下载→深入浅出Java多线程
-shortTitle: 深入浅出Java多线程
+title: 👏下载→深入浅出Java多线程PDF
+shortTitle: 下载→深入浅出Java多线程
category:
- 学习资源
tag:
- PDF
+head:
+ - - meta
+ - name: description
+ content: 下载深入浅出Java多线程PDF
+ - - meta
+ - name: keywords
+ content: 深入浅出Java多线程,深入浅出Java多线程 PDF,深入浅出java多线程 pdf,深入浅出Java多线程 下载,Java多线程入门,java并发编程实战,java线程池,java多线程 PDF,Java 多线程 书籍
---
你好,我是二哥。对于一个 Java 程序员而言,能否熟练掌握并发编程是判断他优秀与否的重要标准之一。因为并发编程是 Java 语言中最为晦涩的知识点,它涉及操作系统、内存、CPU、编程语言等多方面的基础能力,更能考验一个程序员的内功。
diff --git a/docs/nice-article/weixin/sulwgalcpdssbjavakfsc.md b/docs/nice-article/weixin/sulwgalcpdssbjavakfsc.md
new file mode 100644
index 0000000000000000000000000000000000000000..36286b66ae365c70d808568f4455b1db1f3514a9
--- /dev/null
+++ b/docs/nice-article/weixin/sulwgalcpdssbjavakfsc.md
@@ -0,0 +1,82 @@
+---
+title: 👏下载→阿里巴巴Java开发手册
+shortTitle: 下载→阿里巴巴Java开发手册
+description: 下载→阿里巴巴Java开发手册
+author: 沉默王二
+category:
+ - 学习资源
+tag:
+ - PDF
+---
+
+说起嵩山,我就想起乔峰,想起慕容复,以及他们两位老爹在少林寺大战的场景。当然了,最令我印象深刻的就是那位默默无闻,却一鸣惊人的扫地僧啊。这次,阿里出品的嵩山版 Java 开发手册的封面就有一个扫地僧,唉,这就厉害了呀!
+
+![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/nice-article/weixin-sulwgalcpdssbjavakfsc-75a3beae-5bee-492d-9769-666f578ceccc.jpg)
+
+嵩山少林寺位于河南省登封市,始建于北魏太和十九年,号称“天下第一名刹”。这意味着什么?阿里出品的嵩山版 Java 开发手册,是迄今为止最重量级的。
+
+上个版本叫泰山版,更新于 2020 年 4 月 22 号,版本出来的第一时间,我就给大家分享了。我相信,看过的小伙伴一定大有所获。毕竟《阿里巴巴 Java 开发手册》这本小册子虽然只有几十页,但讲的主要是一些典型的开发规约、编程规范、以及最佳实践,已经成为业界普遍遵循的开发规范。
+
+那新版主要更新了哪些内容呢?我来挑一些重点,和大家分享下。
+
+## 01、新增前后端规约 14 条
+
+前后端我都开发过,所以就挑一些我认为比较关键的规约来给大家推荐一下。好的规约能够让前后端工程师在开发的过程中减少很多不必要的麻烦,毕竟现在都追求前后端分离,接口对接的过程中就必须得有一定的规则遵守,不然扯起皮了就不妙了。
+
+* 前后端交互的 API,需要明确协议、域名、路径、请求方式、请求内容、状态码、响应体。
+* 前后端数据列表相关的接口,如果为空,就是没有数据的时候,应该返回空数组 \[\] 或者空集合 {},这样可以省去判 null 的操作。
+* 服务端发生错误时,返回给前端的响应信息必须包含 HTTP 状态码,errorCode、 errorMessage(方便追踪错误)、用户提示信息四个部分。
+* 涉及到超大整数的场景,服务端应该使用 String 类型返回,避免使用 Long。
+* 服务端返回的数据,尽量使用 JSON 而非 XML 格式。
+
+## 02、新增禁止任何歧视性用语的约定
+
+![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/nice-article/weixin-sulwgalcpdssbjavakfsc-8cc71cfc-e133-41bd-94b6-a2b27d6f3758.jpg)
+
+虽然互联网越来越开放,但有些用语还是要注意一下(尽量和谐)。记得之前 MySQL 的一些关键字都被迫做了调整。
+
+## 03、新增涉及敏感操作的情况下日志需要保存六个月的约定
+
+![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/nice-article/weixin-sulwgalcpdssbjavakfsc-3209b64a-9b20-4f70-8028-d9b089164caa.jpg)
+
+涉及到法律的地方还是在开发的时候注意一下。
+
+## 04、修正 BigDecimal 类中关于 compareTo 和 equals 的等值比较
+
+关于这一点,我之前在文章里详细地阐述了,浮点数之间的比较不能使用“==”操作符,而 BigDecimal 之间不能使用 `equals()` 比较。
+
+[我去,脸皮厚啊,竟然使用==比较浮点数?](https://mp.weixin.qq.com/s?__biz=MzIxNzQwNjM3NA==&mid=2247488219&idx=1&sn=a847557dae132769797fe19181957c03&scene=21#wechat_redirect)
+
+![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/nice-article/weixin-sulwgalcpdssbjavakfsc-158bd290-5df1-4df8-ab59-ada0f57a7516.jpg)
+
+## 05、修正 HashMap 关于 1024 个元素扩容的次数
+
+泰山版说是扩容 7 次。
+
+![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/nice-article/weixin-sulwgalcpdssbjavakfsc-c2dbe80a-aee4-40e9-9448-0a243d35ea7d.jpg)
+
+嵩山版修正为扩容 8 次。
+
+![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/nice-article/weixin-sulwgalcpdssbjavakfsc-1cf3c985-9748-4e83-9473-11356bb566df.jpg)
+
+## 06、修正架构分层规范与相关说明
+
+泰山版的应用分层如下图所示。
+
+![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/nice-article/weixin-sulwgalcpdssbjavakfsc-9a08658c-a8f7-4af6-a7b4-63f1bd0f9edd.jpg)
+
+嵩山版的应用分层修改为如下图所示。
+
+![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/nice-article/weixin-sulwgalcpdssbjavakfsc-33efc94e-746c-4e7e-961c-2bf95b14a371.jpg)
+
+## 07、最后
+
+如果你想成为一名优秀的 Java 工程师,那么这份手册上的内容几乎是必须要掌握的。是不是已经迫不及待想要下载这份手册了?
+
+微信搜索「**沉默王二**」回复「**手册**」就可以免费获取了,当然你也可以扫描下面的二维码后回复,赶紧赶紧。
+
+![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/nice-article/weixin-sulwgalcpdssbjavakfsc-c4930a24-11d8-45e3-ad23-b45ca296dba1.jpg)
+
+最后,我衷心地祝福你,希望你能学有所成,to be better,奥利给!
+
+
diff --git a/docs/overview/IDEA-install-config.md b/docs/overview/IDEA-install-config.md
index 4b344ce2462266b48a5ee909273766c89f7a15f4..d9dfbe8462d8cc0af4b7fd73b13cd6ff5d46ebe0 100644
--- a/docs/overview/IDEA-install-config.md
+++ b/docs/overview/IDEA-install-config.md
@@ -2,24 +2,16 @@
title: 安装集成开发环境Intellij IDEA
shortTitle: 安装集成开发环境IDEA
category:
- - Java 核心
+ - Java核心
tag:
- - Java
- - Java SE
- - Java 基础
- - Java 教程
- - Java 程序员进阶之路
- - Java 入门
- - Java 简介
- - Intellij IDEA 安装
- - IDEA 安装
-description: Intellij IDEA的安装和配置
+ - Java概述
+description: Java程序员进阶之路,小白的零基础Java教程,Intellij IDEA的安装和配置
head:
- - meta
- name: keywords
content: Java,Java SE,Java 基础,Java 教程,Java 程序员进阶之路,Java 入门,Java 简介,Intellij IDEA 安装,IDEA 安装
- name: description
- content: Intellij IDEA的安装和配置
+ content: Java程序员进阶之路,小白的零基础Java教程,Intellij IDEA的安装和配置
---
IntelliJ IDEA 简称 IDEA,是业界公认为最好的 Java 集成开发工具,尤其是在代码自动提示、代码重构、代码版本管理、单元测试、代码分析等方面有着亮眼的发挥。
diff --git a/docs/overview/hello-world.md b/docs/overview/hello-world.md
index 1294e67ec6176bc0fd90bbf383ca882ba8a5b4b9..9dd68b294ff015e58ebcee345e42c699c16c4a80 100644
--- a/docs/overview/hello-world.md
+++ b/docs/overview/hello-world.md
@@ -2,22 +2,16 @@
title: 编写第一个Java程序:Hello World
shortTitle: 编写第一个Java程序:Hello World
category:
- - Java 核心
+ - Java核心
tag:
- - Java
- - Java SE
- - Java 基础
- - Java 教程
- - Java 程序员进阶之路
- - Java 入门
- - Java Hello World
-description: 编写第一个Java程序:Hello World
+ - Java概述
+description: Java程序员进阶之路,小白的零基础Java教程,编写第一个Java程序:Hello World
head:
- - meta
- name: keywords
content: Java,Java SE,Java 基础,Java 教程,Java 程序员进阶之路,Java 入门,Java Hello World
- name: description
- content: 编写第一个Java程序:Hello World
+ content: Java程序员进阶之路,小白的零基础Java教程,编写第一个Java程序:Hello World
---
第一个 Java 程序非常简单,代码如下:
diff --git a/docs/overview/java-can-do-what.md b/docs/overview/java-can-do-what.md
index 85fcf3762bda7536784aef6bad3a10ef79110669..140016ace397606654d73afdfcb779972bc51d63 100644
--- a/docs/overview/java-can-do-what.md
+++ b/docs/overview/java-can-do-what.md
@@ -2,22 +2,16 @@
title: Java的优势
shortTitle: Java的优势
category:
- - Java 核心
+ - Java核心
tag:
- - Java
- - Java SE
- - Java 基础
- - Java 教程
- - Java 程序员进阶之路
- - Java 入门
- - Java 优势
-description: Java的优势
+ - Java概述
+description: Java程序员进阶之路,小白的零基础Java教程,Java的优势
head:
- - meta
- name: keywords
content: Java,Java SE,Java 基础,Java 教程,Java 程序员进阶之路,Java 入门,Java 优势
- name: description
- content: Java的优势
+ content: Java程序员进阶之路,小白的零基础Java教程,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 831cabbeebc7865956d86f169ae643914b18331e..5d067e0c9d9d18b6b5b5986c1476e3a9906f55aa 100644
--- a/docs/overview/java-history.md
+++ b/docs/overview/java-history.md
@@ -2,22 +2,16 @@
title: Java发展简史
shortTitle: Java发展简史
category:
- - Java 核心
+ - Java核心
tag:
- - Java
- - Java SE
- - Java 基础
- - Java 教程
- - Java 程序员进阶之路
- - Java 入门
- - Java 简介
-description: Java发展简史
+ - Java概述
+description: Java程序员进阶之路,小白的零基础Java教程,Java发展简史
head:
- - meta
- name: keywords
content: Java,Java SE,Java 基础,Java 教程,Java 程序员进阶之路,Java 入门,Java 简介
- name: description
- content: Java发展简史
+ content: Java程序员进阶之路,小白的零基础Java教程,Java发展简史
---
20 世纪 90 年代,单片式计算机系统诞生。单片式计算机系统不仅廉价(之前的计算机非常庞大,并且昂贵),而且功能强大,可以大幅度提升消费性电子产品的智能化程度。
diff --git a/docs/overview/jdk-install-config.md b/docs/overview/jdk-install-config.md
index 368b00ba44e37c89f6aad8d7c4a2737b16a8a70a..d5f76472d8153ea56ff78d55266f6e3c8b918445 100644
--- a/docs/overview/jdk-install-config.md
+++ b/docs/overview/jdk-install-config.md
@@ -2,22 +2,16 @@
title: 安装Java开发工具包JDK
shortTitle: 安装Java开发工具包JDK
category:
- - Java 核心
+ - Java核心
tag:
- - Java
- - Java SE
- - Java 基础
- - Java 教程
- - Java 程序员进阶之路
- - Java 入门
- - JDK 安装
-description: JDK的安装和配置
+ - Java概述
+description: Java程序员进阶之路,小白的零基础Java教程,JDK的安装和配置
head:
- - meta
- name: keywords
content: Java,Java SE,Java 基础,Java 教程,Java 程序员进阶之路,Java 入门,JDK 安装
- name: description
- content: JDK的安装和配置
+ content: Java程序员进阶之路,小白的零基础Java教程,JDK的安装和配置
---
因为Java程序必须运行在JVM之上,所以我们 Java 程序员在学习 Java 之前,要做的第一件事情就是安装JDK。
diff --git a/docs/overview/what-is-java.md b/docs/overview/what-is-java.md
index 7d43b96927171db592a77672844956ae695ef49a..7e6ca82d650a08b6c4aca0321375c6b0dffc3f99 100644
--- a/docs/overview/what-is-java.md
+++ b/docs/overview/what-is-java.md
@@ -2,22 +2,16 @@
title: Java简介
shortTitle: Java简介
category:
- - Java 核心
+ - Java核心
tag:
- - Java
- - Java SE
- - Java 基础
- - Java 教程
- - Java 程序员进阶之路
- - Java 入门
- - Java 简介
-description: Java 简介,什么是Java?
+ - Java概述
+description: Java程序员进阶之路,小白的零基础Java教程,Java 简介,什么是Java?
head:
- - meta
- name: keywords
content: Java,Java SE,Java 基础,Java 教程,Java 程序员进阶之路,Java 入门,Java 简介
- name: description
- content: Java 简介,什么是Java?
+ content: Java程序员进阶之路,小白的零基础Java教程,Java 简介,什么是Java?
---
diff --git a/docs/string/constant-pool.md b/docs/string/constant-pool.md
index 4a51a5a34215c68c0e0ef41274e3ebb3b7d009d1..d0fcf01066d96f7b4361928d1e6cabc46dcbd560 100644
--- a/docs/string/constant-pool.md
+++ b/docs/string/constant-pool.md
@@ -1,12 +1,18 @@
---
+title: 深入理解Java字符串常量池
+shortTitle: 深入理解Java字符串常量池
category:
- Java核心
tag:
- - Java
+ - 数组&字符串
+description: Java程序员进阶之路,小白的零基础Java教程,从入门到进阶,深入理解Java字符串常量池
+head:
+ - - meta
+ - name: keywords
+ content: Java,Java SE,Java 基础,Java 教程,Java 程序员进阶之路,Java 入门,java字符串,String
+ content: Java程序员进阶之路,小白的零基础Java教程,从入门到进阶,深入理解Java字符串常量池
---
-# 深入了解Java字符串常量池
-
“三妹,今天我们来学习一下字符串常量池吧,这是字符串中非常关键的一个知识点。”我话音未落,青岛路小学那边传来了嘹亮的歌声就钻进了我的耳朵,“唱 ~ 山 ~ 歌 ~”
三妹说,“好呀,开始吧,哥。”
@@ -48,7 +54,7 @@ String s = new String("二哥");
String s1 = new String("二哥");
```
- 按照我们之前的分析,这两行代码会创建三个对象,字符串常量池中一个,堆上两个。
+按照我们之前的分析,这两行代码会创建三个对象,字符串常量池中一个,堆上两个。
再来看下面这个例子:
@@ -75,7 +81,7 @@ Java 8 之后,移除了永久代,字符串常量池就移到了堆中。
我说,“可以呀。”
-- 方法区是 Java 虚拟机规范中的一个概念,就像是一个接口吧;
+- 方法区是 Java 虚拟机规范中的一个概念,就像是一个[接口](https://tobebetterjavaer.com/oo/interface.html)吧;
- 永久代是 HotSpot 虚拟机中对方法的一个实现,就像是接口的实现类;
- Java 8 的时候,移除了永久代,取而代之的是元空间,是方法区的另外一个实现。
@@ -89,4 +95,4 @@ Java 8 之后,移除了永久代,字符串常量池就移到了堆中。
“是的,我现在是彻底搞懂了字符串常量池,哥,你真棒!”三妹说。
-
\ No newline at end of file
+![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/xingbiaogongzhonghao.png)
\ No newline at end of file
diff --git a/docs/string/equals.md b/docs/string/equals.md
index 9772fdd2cce39f6030855366759bd348d3cab2ee..b45640711c07b68122905d44041f93a04bfd40f5 100644
--- a/docs/string/equals.md
+++ b/docs/string/equals.md
@@ -1,15 +1,22 @@
---
+title: Java如何判断两个字符串是否相等?
+shortTitle: 如何判断两个字符串是否相等?
category:
- Java核心
tag:
- - Java
+ - 数组&字符串
+description: Java程序员进阶之路,小白的零基础Java教程,从入门到进阶,Java如何判断两个字符串是否相等?
+head:
+ - - meta
+ - name: keywords
+ content: Java,Java SE,Java 基础,Java 教程,Java 程序员进阶之路,Java 入门,java字符串,String
+ content: Java程序员进阶之路,小白的零基础Java教程,从入门到进阶,Java如何判断两个字符串是否相等?
---
-# Java判断两个字符串是否相等?
-“哥,如何比较两个字符串相等啊?”三妹问。
+“二哥,如何比较两个字符串相等啊?”三妹问。
-“这个问题看似简单,却在 Stack Overflow 上有超过 370 万的访问量。”我说,“这个问题也可以引申为 `.equals()` 和 ‘==’ 操作符有什么区别。”
+“这个问题看似简单,却在 Stack Overflow 上有超过 370 万+的访问量。”我说,“这个问题也可以引申为 `.equals()` 和 ‘==’ 操作符有什么区别。”
- “==”操作符用于比较两个对象的地址是否相等。
- `.equals()` 方法用于比较两个对象的内容是否相等。
@@ -86,7 +93,7 @@ public static boolean equals(byte[] value, byte[] other) {
}
```
-我的 JDK 版本是 Java 11,也就是最新的 LTS(长期支持)版本。该版本中,String 类使用字节数组实现的,所以比较两个字符串的内容是否相等时,可以先比较字节数组的长度是否相等,不相等就直接返回 false;否则就遍历两个字符串的字节数组,只有有一个字节不相等,就返回 false。
+我的 JDK 版本是 Java 17,也就是最新的 LTS(长期支持)版本。该版本中,String 类使用字节数组实现的,所以比较两个字符串的内容是否相等时,可以先比较字节数组的长度是否相等,不相等就直接返回 false;否则就遍历两个字符串的字节数组,只有有一个字节不相等,就返回 false。
“嗯,二哥,这段源码不难理解。”三妹自信地说。
@@ -216,4 +223,4 @@ public boolean contentEquals(CharSequence cs) {
“是的,总体上感觉还是 `Objects.equals()` 比较舒服。”三妹的眼睛是雪亮的,发现了这个方法的优点。
-
\ No newline at end of file
+![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/xingbiaogongzhonghao.png)
\ No newline at end of file
diff --git a/docs/string/immutable.md b/docs/string/immutable.md
index b7395c600b34889812733490ef7d69f627955105..cd289070d934d83da6bba66e8ff1185163193ed5 100644
--- a/docs/string/immutable.md
+++ b/docs/string/immutable.md
@@ -1,19 +1,25 @@
---
+title: 为什么String是不可变的?
+shortTitle: 为什么String是不可变的?
category:
- Java核心
tag:
- - Java
+ - 数组&字符串
+description: Java程序员进阶之路,小白的零基础Java教程,从入门到进阶,为什么String是不可变的?
+head:
+ - - meta
+ - name: keywords
+ content: Java,Java SE,Java 基础,Java 教程,Java 程序员进阶之路,Java 入门,java字符串,String
+ content: Java程序员进阶之路,小白的零基础Java教程,从入门到进阶,为什么String是不可变的?
---
-# 为什么String是不可变的?
-
我正坐在沙发上津津有味地读刘欣大佬的《码农翻身》——Java 帝国这一章,门铃响了。起身打开门一看,是三妹,她从学校回来了。
“三妹,你回来的真及时,今天我们打算讲 Java 中的字符串呢。”等三妹换鞋的时候我说。
“哦,可以呀,哥。听说字符串的细节特别多,什么字符串常量池了、字符串不可变性了、字符串拼接了、字符串长度限制了等等,你最好慢慢讲,否则我可能一时半会消化不了。”三妹的态度显得很诚恳。
-“嗯,我已经想好了,今天就只带你大概认识一下字符串,具体的细节咱们后面再慢慢讲,保证你能及时消化。”
+“嗯,我已经想好了,今天就只带你大概认识一下字符串,再说说为什么 String 是不可变的,其他的细节咱们后面再慢慢讲,保证你能及时消化。”
“好,那就开始吧。”三妹已经准备好坐在了电脑桌的边上。
@@ -37,7 +43,7 @@ public final class String
“第四,StringBuffer、StringBuilder 和 String 一样,都实现了 CharSequence 接口,所以它们仨属于近亲。由于 String 是不可变的,所以遇到字符串拼接的时候就可以考虑一下 String 的另外两个好兄弟,StringBuffer 和 StringBuilder,它俩是可变的。”
-“第五,Java 9 以前,String 是用 char 型数组实现的,之后改成了 byte 型数组实现,并增加了 coder 来表示编码。在 Latin1 字符为主的程序里,可以把 String 占用的内存减少一半。当然,天下没有免费的午餐,这个改进在节省内存的同时引入了编码检测的开销。”
+“第五,Java 9 以前,[String 是用 char 型数组实现的,之后改成了 byte 型数组实现,并增加了 coder 来表示编码](https://tobebetterjavaer.com/basic-extra-meal/jdk9-char-byte-string.html)。在 Latin1 字符为主的程序里,可以把 String 占用的内存减少一半。当然,天下没有免费的午餐,这个改进在节省内存的同时引入了编码检测的开销。”
“第六,每一个字符串都会有一个 hash 值,这个哈希值在很大概率是不会重复的,因此 String 很适合来作为 HashMap 的键值。”
@@ -135,4 +141,4 @@ public String concat(String str) {
“那今天就先讲到这吧,后面我们再对每一个细分领域深入地展开一下。你可以找一些资料先预习下,我出去散会心。。。。。”
-
\ No newline at end of file
+![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/xingbiaogongzhonghao.png)
\ No newline at end of file
diff --git a/docs/string/intern.md b/docs/string/intern.md
index f1ad9695bf875c346e71094202013a6bf9fc6419..9dbf5b24ffad3564c2cfdb4b2d88819b66620ebf 100644
--- a/docs/string/intern.md
+++ b/docs/string/intern.md
@@ -1,25 +1,30 @@
---
+title: 深入解析String.intern()方法
+shortTitle: 深入解析String.intern()方法
category:
- Java核心
tag:
- - Java
+ - 数组&字符串
+description: Java程序员进阶之路,小白的零基础Java教程,从入门到进阶,深入解析String.intern()方法
+head:
+ - - meta
+ - name: keywords
+ content: Java,Java SE,Java 基础,Java 教程,Java 程序员进阶之路,Java 入门,java字符串,String
+ content: Java程序员进阶之路,小白的零基础Java教程,从入门到进阶,深入解析String.intern()方法
---
-# 深入解析 String#intern
“哥,你发给我的那篇文章我看了,结果直接把我给看得不想学 Java 了!”三妹气冲冲地说。
“哪一篇啊?”看着三妹面色沉重,我关心地问到。
-“就是美团技术团队深入解析 `String.intern()` 那篇啊!”三妹回答。
+“就是[美团技术团队深入解析 `String.intern()` 那篇](https://tech.meituan.com/2014/03/06/in-depth-understanding-string-intern.html)啊!”三妹回答。
->https://tech.meituan.com/2014/03/06/in-depth-understanding-string-intern.html
-
-“哦,我想起来了,不挺好一篇文章嘛,深入浅出,精品中的精品,看完后你应该对 String 的 intern 彻底理解了才对呀。”
+“哦,我想起来了,不挺好一篇文章嘛,深入浅出,精品中的精品,看完后你应该对 String 的 intern 方法彻底理解了才对呀。”
“好是好,但我就是看不懂!”三妹委屈地说,“哥,还是你亲自给我讲讲吧?”
-“好吧,上次学的[字符串常量池](https://mp.weixin.qq.com/s/b69zXknKLIa3FWs0Yj23xA)你都搞清楚了吧?”
+“好吧,上次学的[字符串常量池](https://tobebetterjavaer.com/string/constant-pool.html)你都搞清楚了吧?”
“嗯。”三妹微微的点了点头。
@@ -113,4 +118,4 @@ true
看到三妹一点一滴的进步,我也感到由衷的开心。
-
\ No newline at end of file
+![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/xingbiaogongzhonghao.png)
\ No newline at end of file
diff --git a/docs/string/join.md b/docs/string/join.md
index 40609bd6b2a5e2ba8f0b726433bd17c07926221e..615b7848456516fa57d00e863506ed68da17b22a 100644
--- a/docs/string/join.md
+++ b/docs/string/join.md
@@ -1,13 +1,20 @@
---
+title: 最优雅的Java字符串拼接是哪种方式?
+shortTitle: Java字符串拼接
category:
- Java核心
tag:
- - Java
+ - 数组&字符串
+description: Java程序员进阶之路,小白的零基础Java教程,从入门到进阶,最优雅的Java字符串拼接是哪种方式?
+head:
+ - - meta
+ - name: keywords
+ content: Java,Java SE,Java 基础,Java 教程,Java 程序员进阶之路,Java 入门,java字符串,String
+ content: Java程序员进阶之路,小白的零基础Java教程,从入门到进阶,最优雅的Java字符串拼接是哪种方式?
---
-# Java字符串拼接的几种方式
-“哥,你让我看的《Java 开发手册》上有这么一段内容:循环体内,拼接字符串最好使用 StringBuilder 的 `append()` 方法,而不是 + 号操作符。这是为什么呀?”三妹疑惑地问。
+“哥,你让我看的《[Java 开发手册](https://tobebetterjavaer.com/nice-article/weixin/sulwgalcpdssbjavakfsc.html)》上有这么一段内容:循环体内,拼接字符串最好使用 StringBuilder 的 `append()` 方法,而不是 + 号操作符。这是为什么呀?”三妹疑惑地问。
“好的,三妹,哥来慢慢给你讲。”我回答。
@@ -370,4 +377,4 @@ public static String join(final Object[] array, String separator, final int star
“嗯,哥,你休息吧,我把这些例子再重新跑一遍。”三妹说。
-
\ No newline at end of file
+![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/xingbiaogongzhonghao.png)
\ No newline at end of file
diff --git a/docs/string/split.md b/docs/string/split.md
index f400e857b8f6b78610c01d337703c8949fa7bf10..f394144dcc8d19f255205fde1f6fd7cfc7468f98 100644
--- a/docs/string/split.md
+++ b/docs/string/split.md
@@ -1,12 +1,18 @@
---
+title: 如何在Java中优雅地分割String字符串?
+shortTitle: Java字符串分割
category:
- Java核心
tag:
- - Java
+ - 数组&字符串
+description: Java程序员进阶之路,小白的零基础Java教程,从入门到进阶,如何在Java中优雅地分割String字符串?
+head:
+ - - meta
+ - name: keywords
+ content: Java,Java SE,Java 基础,Java 教程,Java 程序员进阶之路,Java 入门,java字符串,String
+ content: Java程序员进阶之路,小白的零基础Java教程,从入门到进阶,如何在Java中优雅地分割String字符串?
---
-# 如何在Java中优雅地分割String字符串?
-
“哥,我感觉字符串拆分没什么可讲的呀,直接上 String 类的 `split()` 方法不就可以了!”三妹毫不客气地说。
“假如你真的这么觉得,那可要注意了,事情远没这么简单。”我微笑着说。
@@ -215,4 +221,4 @@ if (cmower.contains(",")) {
“嗯,我把今天的内容温习下,二哥,你休息会。”三妹说。
-
+![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/xingbiaogongzhonghao.png)
diff --git a/images/nice-article/weixin-sulwgalcpdssbjavakfsc-158bd290-5df1-4df8-ab59-ada0f57a7516.jpg b/images/nice-article/weixin-sulwgalcpdssbjavakfsc-158bd290-5df1-4df8-ab59-ada0f57a7516.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..6aeeb6bb13c6c6ee06cac43f56e28486319cb858
Binary files /dev/null and b/images/nice-article/weixin-sulwgalcpdssbjavakfsc-158bd290-5df1-4df8-ab59-ada0f57a7516.jpg differ
diff --git a/images/nice-article/weixin-sulwgalcpdssbjavakfsc-1cf3c985-9748-4e83-9473-11356bb566df.jpg b/images/nice-article/weixin-sulwgalcpdssbjavakfsc-1cf3c985-9748-4e83-9473-11356bb566df.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..a18cc746e1baa31f183f99a245cda800e21f8e3a
Binary files /dev/null and b/images/nice-article/weixin-sulwgalcpdssbjavakfsc-1cf3c985-9748-4e83-9473-11356bb566df.jpg differ
diff --git a/images/nice-article/weixin-sulwgalcpdssbjavakfsc-3209b64a-9b20-4f70-8028-d9b089164caa.jpg b/images/nice-article/weixin-sulwgalcpdssbjavakfsc-3209b64a-9b20-4f70-8028-d9b089164caa.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..6452fabdf04e459cb79579b7837f2fc029d61b80
Binary files /dev/null and b/images/nice-article/weixin-sulwgalcpdssbjavakfsc-3209b64a-9b20-4f70-8028-d9b089164caa.jpg differ
diff --git a/images/nice-article/weixin-sulwgalcpdssbjavakfsc-33efc94e-746c-4e7e-961c-2bf95b14a371.jpg b/images/nice-article/weixin-sulwgalcpdssbjavakfsc-33efc94e-746c-4e7e-961c-2bf95b14a371.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..a40605004fd0330e10dc3dc5067ad0ba68ad5342
Binary files /dev/null and b/images/nice-article/weixin-sulwgalcpdssbjavakfsc-33efc94e-746c-4e7e-961c-2bf95b14a371.jpg differ
diff --git a/images/nice-article/weixin-sulwgalcpdssbjavakfsc-75a3beae-5bee-492d-9769-666f578ceccc.jpg b/images/nice-article/weixin-sulwgalcpdssbjavakfsc-75a3beae-5bee-492d-9769-666f578ceccc.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..1468db9e162a8ba2ee9d670ac16f36736cafd4a9
Binary files /dev/null and b/images/nice-article/weixin-sulwgalcpdssbjavakfsc-75a3beae-5bee-492d-9769-666f578ceccc.jpg differ
diff --git a/images/nice-article/weixin-sulwgalcpdssbjavakfsc-8cc71cfc-e133-41bd-94b6-a2b27d6f3758.jpg b/images/nice-article/weixin-sulwgalcpdssbjavakfsc-8cc71cfc-e133-41bd-94b6-a2b27d6f3758.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..9a0164f3fe348cebc5eca59fd1d1fcace0764058
Binary files /dev/null and b/images/nice-article/weixin-sulwgalcpdssbjavakfsc-8cc71cfc-e133-41bd-94b6-a2b27d6f3758.jpg differ
diff --git a/images/nice-article/weixin-sulwgalcpdssbjavakfsc-9a08658c-a8f7-4af6-a7b4-63f1bd0f9edd.jpg b/images/nice-article/weixin-sulwgalcpdssbjavakfsc-9a08658c-a8f7-4af6-a7b4-63f1bd0f9edd.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..2f43d23cb17840de0561ca76d846cdb4fec3c006
Binary files /dev/null and b/images/nice-article/weixin-sulwgalcpdssbjavakfsc-9a08658c-a8f7-4af6-a7b4-63f1bd0f9edd.jpg differ
diff --git a/images/nice-article/weixin-sulwgalcpdssbjavakfsc-c2dbe80a-aee4-40e9-9448-0a243d35ea7d.jpg b/images/nice-article/weixin-sulwgalcpdssbjavakfsc-c2dbe80a-aee4-40e9-9448-0a243d35ea7d.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..8aeb2661d1a5859b983fd9e2b80c3b280ee43dc4
Binary files /dev/null and b/images/nice-article/weixin-sulwgalcpdssbjavakfsc-c2dbe80a-aee4-40e9-9448-0a243d35ea7d.jpg differ
diff --git a/images/nice-article/weixin-sulwgalcpdssbjavakfsc-c4930a24-11d8-45e3-ad23-b45ca296dba1.jpg b/images/nice-article/weixin-sulwgalcpdssbjavakfsc-c4930a24-11d8-45e3-ad23-b45ca296dba1.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..9461870431358c557cd2622ed91f2e0a67a2e694
Binary files /dev/null and b/images/nice-article/weixin-sulwgalcpdssbjavakfsc-c4930a24-11d8-45e3-ad23-b45ca296dba1.jpg differ
diff --git a/images/nice-article/weixin-sulwgalcpdssbjavakfsc.jpg b/images/nice-article/weixin-sulwgalcpdssbjavakfsc.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..feb32c7c6cb367b2a63d6afd79b656ccc303f7f2
Binary files /dev/null and b/images/nice-article/weixin-sulwgalcpdssbjavakfsc.jpg differ