Skip to content

Commit

Permalink
字符串和数组
Browse files Browse the repository at this point in the history
  • Loading branch information
itwanger committed Jul 28, 2022
1 parent 43c4218 commit 5539783
Show file tree
Hide file tree
Showing 36 changed files with 276 additions and 233 deletions.
57 changes: 16 additions & 41 deletions docs/.vuepress/sidebar.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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: [
{
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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",
Expand Down
1 change: 1 addition & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
18 changes: 12 additions & 6 deletions docs/array/array.md
Original file line number Diff line number Diff line change
@@ -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 的源码。

Expand Down Expand Up @@ -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)

另外,还可以使用大括号的方式,直接初始化数组中的元素:

Expand Down
20 changes: 13 additions & 7 deletions docs/array/print.md
Original file line number Diff line number Diff line change
@@ -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()` 方法。如果尝试直接打印数组的话,输出的结果并不是我们预期的结果。”我接着三妹的话继续说。

Expand Down Expand Up @@ -54,7 +60,7 @@ public final class String

“好了,不讨论这个了。”我怕话题扯远了,扯到我自己也答不出来就尴尬了,赶紧把三妹的思路拽了回来。

“我们来看第一种打印数组的方法,使用时髦一点的 Stream 流。”
“我们来看第一种打印数组的方法,使用时髦一点的[Stream 流](https://tobebetterjavaer.com/java8/stream.html)。”

第一种形式:

Expand Down Expand Up @@ -82,7 +88,7 @@ Arrays.stream(cmowers).forEach(System.out::println);
一枚有趣的程序员
```

没错,这三种方式都可以轻松胜任本职工作,并且显得有点高大上,毕竟用到了 Stream,以及 lambda 表达式。
没错,这三种方式都可以轻松胜任本职工作,并且显得有点高大上,毕竟用到了 Stream,以及 [lambda 表达式](https://tobebetterjavaer.com/java8/Lambda.html)

“当然了,也可以使用比较土的方式,for 循环。甚至 for-each 也行。”

Expand All @@ -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()` 是打印数组的最佳方式,没有之一。”我的情绪有点激动。

Expand Down
16 changes: 4 additions & 12 deletions docs/basic-extra-meal/48-keywords.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 方面已经变得越来越自信了。
Expand Down
15 changes: 4 additions & 11 deletions docs/basic-extra-meal/java-naming.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 中的命名约定都有哪些呢?”三妹的脸上泛着甜甜的笑容,她开始对接下来要学习的内容充满期待了,这正是我感到欣慰的地方。
Expand Down
17 changes: 4 additions & 13 deletions docs/basic-grammar/basic-data-type.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 是一种静态类型的编程语言,这意味着所有变量必须在使用之前声明好,也就是必须得先指定变量的类型和名称。”我吸了一口麦香可可奶茶后对三妹说。
Expand Down
16 changes: 4 additions & 12 deletions docs/basic-grammar/flow-control.md
Original file line number Diff line number Diff line change
Expand Up @@ -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循环语句)
---


Expand Down
14 changes: 4 additions & 10 deletions docs/basic-grammar/javadoc.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 中的注释好像真没什么可讲的,我已经提前预习了,不过是单行注释,多行注释,还有文档注释。”三妹的脸上泛着甜甜的笑容,她竟然提前预习了接下来要学习的知识,有一种“士别三日,当刮目相看”的感觉。
Expand Down
15 changes: 4 additions & 11 deletions docs/basic-grammar/operator.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 中的运算符(算术运算符、关系运算符、赋值运算符、逻辑运算符、位运算符)的使用
---

“二哥,让我盲猜一下哈,运算符是不是指的就是加减乘除啊?”三妹的脸上泛着甜甜的笑容,我想她一定对提出的问题很有自信。
Expand Down
27 changes: 16 additions & 11 deletions docs/home.md
Original file line number Diff line number Diff line change
Expand Up @@ -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教程,从入门到进阶
---

<a href="https://tobebetterjavaer.com/zhishixingqiu/">👉 沉默王二-《Java 程序员进阶之路》官方知识星球来啦!!!</a>如果你需要专属Java学习/面试小册/一对一交流/简历修改/专属求职指南/学习打卡,不妨花 3 分钟左右看看星球的详细介绍: <a href="https://tobebetterjavaer.com/zhishixingqiu/">《Java 程序员进阶之路》详细介绍 </a>(一定要确定自己真的需要再加入,一定要看完详细介绍之后再加我)。
Expand Down Expand Up @@ -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面向对象编程

Expand All @@ -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)
Expand Down
Loading

0 comments on commit 5539783

Please sign in to comment.