同学们好啊，我是沉默王二，欢迎大家来到《教妹学 Java》专栏。

[我妹今年上大学了](https://mp.weixin.qq.com/s/bsu9uH8VKh5Vtue-9SafwQ)，学的计算机编程，立志像我一样做一名正儿八经的 Java 程序员。我期初是反抗的，因为程序员这行业容易掉头发，作为一名需要美貌的女生，长发飘飘是必须的啊。但与其反抗，不如做点更积极的事情，比如说写点有趣的文章，教我妹更快地掌握 Java 这门编程语言，于是就有了这个专栏。

>**强烈推荐**：我在 GitHub 上发现了一个宝藏项目，里面收录了 500+ 本电子书，包含 Java、Spring、MySQL、设计模式、计算机网络、计算机操作系统、数据结构与算法、面试题等方面的电子书，需要的小伙伴可以通过下面的链接按需获取。
>
>GitHub：[https://github.com/itwanger/JavaBooks](https://github.com/itwanger/JavaBooks)
>
>码云：[https://gitee.com/itwanger/JavaBooks](https://gitee.com/itwanger/JavaBooks)

有同学可能会说“妹妹大一就开始学习 Java 了，有点厉害啊。”我只能说，要对妹妹负责，就必须得趁早，因为生意经有这么一句话：

>人无我有，人有我好，人好我早，人多我早。

这句话用在生意上合适，用在学习上也是再合适不过了。当别人都不懂一门新技术的时候，你懂，那么恭喜你，你已经遥遥领先了；当别人也懂了，你比他精通，那么你就是牛逼；当别人也精通了，你比他精通的早，还是有优势，对吧？

强调一下，《教妹学 Java》面向的是零基础的 Java 爱好者，我希望能帮助同学们轻松迈进编程世界的大门，为后续的深入学习打下坚实的基础。

![](http://www.itwanger.com/assets/images/tech-sister.png)

---------------

## 目录


**基础知识：**

- [什么是 Java](https://mp.weixin.qq.com/s/Fh_B0q8O_qc_KnxSar_fsA)
- [Java 发展简史](https://mp.weixin.qq.com/s/Ctouw652iC0qtrmjen9aEw)
- [Java 为什么如此流行](https://mp.weixin.qq.com/s/2Q6T5rUnw_JYCrH_zEWH4A)
- [第一个 Java 程序：Hello World](https://mp.weixin.qq.com/s/191I_2CVOxVuyfLVtb4jhg)
- [Java程序在编译期发生了什么](https://mp.weixin.qq.com/s/GYDFndO0Q1Nqzcc_Te61gw)
- [JDK 与 JRE](https://mp.weixin.qq.com/s/Qy4WgAc8ioFKz52DVinO1A)
- [Java 虚拟机](https://mp.weixin.qq.com/s/aIO2hBgceVfTxlTLjIbgYw)
- [Java 变量](https://mp.weixin.qq.com/s/IgBpLGn0L1HZymgI4hWGVA)
- [Java 数据类型](https://mp.weixin.qq.com/s/twim3w_dp5ctCigjLGIbFw)
- [Unicode](https://mp.weixin.qq.com/s/pNQjlXOivIgO3pbYc0GnpA)
- [Java 运算符](https://mp.weixin.qq.com/s/w8UPNgP_Xjb6E-deQHQivQ)
- [Java 的那些关键字](https://mp.weixin.qq.com/s/4huV6Ea_nR0MVyRtOZLijg)
- [流程控制语句](https://mp.weixin.qq.com/s/2q_-VAhZp5LbVAba_3odiQ)
- [Java 注释](https://mp.weixin.qq.com/s/PyoZLtwrDXmrHnwRYzivDw)

**对象和类：**

- [命名约定](https://mp.weixin.qq.com/s/WzMEOEdzI0fFwBQ4s0S-0g)
- [对象和类](docs/java/.md)
- [方法](docs/java/.md)
- [构造方法](docs/java/.md)
- [static 关键字](docs/java/.md)
- [this 关键字](docs/java/.md)
- [继承](docs/java/.md)
- [聚合](docs/java/.md)
- [方法重载](docs/java/.md)
- [方法重写](docs/java/.md)
- [返回类型协变](docs/java/.md)
- [super 关键字](docs/java/.md)
- [初始化代码块](docs/java/.md)
- [final 关键字](docs/java/.md)
- [多态](docs/java/.md)
- [动态绑定](docs/java/.md)
- [instanceof](docs/java/.md)
- [抽象类](docs/java/.md)
- [接口](docs/java/.md)
- [抽象类和接口的区别](docs/java/.md)
- [包](docs/java/.md)
- [访问权限修饰符](docs/java/.md)
- [封装](docs/java/.md)


**内部类：**

- [什么是内部类](docs/java/.md)
- [成员内部类](docs/java/.md)
- [匿名内部类](docs/java/.md)
- [本地内部类](docs/java/.md)
- [静态内部类](docs/java/.md)
- [嵌套内部类](docs/java/.md)


**数组：**

- [数组](docs/java/.md)

**对象和类的一些细节：**

- [Object 类](docs/java/.md)
- [对象克隆](docs/java/.md)
- [Math 类](docs/java/.md)
- [包装器类](docs/java/.md)
- [递归](docs/java/.md)
- [Java 是值传递还是引用传递](docs/java/.md)
- [strictfp 关键字](docs/java/.md)
- [文档工具](docs/java/.md)
- [命令行参数](docs/java/.md)
- [对象和类的区别](docs/java/.md)
- [方法重载和方法重写的区别](docs/java/.md)


**字符串：**

- [什么是字符串](docs/java/.md)
- [字符串是不可变的](docs/java/.md)
- [字符串比较](docs/java/.md)
- [字符串拼接](docs/java/.md)
- [字符串截取](docs/java/.md)
- [StringBuffer 类](docs/java/.md)
- [StringBuilder 类](docs/java/.md)
- [String 和 StringBuffer 的区别](docs/java/.md)
- [StringBuffer 和 StringBuilder 的区别](docs/java/.md)
- [自定义不可变类](docs/java/.md)
- [打印对象字符串](docs/java/.md)
- [StringTokenizer 类](docs/java/.md)



**集合：**

- [集合框架](docs/java/.md)
- [ArrayList](docs/java/.md)
- [LinkedList](docs/java/.md)
- [ArrayList 和 LinkedList 的区别](docs/java/.md)
- [List 接口](docs/java/.md)
- [HashSet](docs/java/.md)
- [LinkedHashSet](docs/java/.md)
- [TreeSet](docs/java/.md)
- [Queue](docs/java/.md)
- [Deque](docs/java/.md)
- [Map接口](docs/java/.md)
- [HashMap](docs/java/.md)
- [LinkedHashMap](docs/java/.md)
- [TreeMap](docs/java/.md)
- [Hashtable](docs/java/.md)
- [HashMap 和 Hashtable 的区别](docs/java/.md)
- [EnumSet](docs/java/.md)
- [EnumMap](docs/java/.md)
- [Collections 工具类](docs/java/.md)
- [集合排序](docs/java/.md)
- [Comparable 接口](docs/java/.md)
- [Comparator 接口](docs/java/.md)
- [Comparable 和 Comparator 的区别](docs/java/.md)
- [Properties 类](docs/java/.md)
- [ArrayList 和 Vector 的区别](docs/java/.md)
- [Vector](docs/java/.md)
- [Stack](docs/java/.md)


**异常控制：**

- [什么是异常控制](docs/java/.md)
- [try-catch](docs/java/.md)
- [多个 catch](docs/java/.md)
- [内嵌 try 块](docs/java/.md)
- [final 块](docs/java/.md)
- [throw 关键字](docs/java/.md)
- [异常堆栈](docs/java/.md)
- [throws 关键字](docs/java/.md)
- [throw 和 throws 的区别](docs/java/.md)
- [final、finally 和 finalize 的区别](docs/java/.md)
- [方法重写时的异常控制](docs/java/.md)
- [自定义异常](docs/java/.md)

**多线程：**

- [什么是多线程](docs/java/.md)
- [线程的生命周期](docs/java/.md)
- [创建一个线程](docs/java/.md)
- [线程调度](docs/java/.md)
- [线程休眠](docs/java/.md)
- [能启动两次线程吗？](docs/java/.md)
- [能调用 run 方法代替 start 吗？](docs/java/.md)
- [停止线程](docs/java/.md)
- [线程命名](docs/java/.md)
- [线程优先级](docs/java/.md)
- [守护线程](docs/java/.md)
- [线程池](docs/java/.md)
- [线程组](docs/java/.md)
- [虚拟机突然关闭后如何发送警报？](docs/java/.md)
- [为什么要使用同步？](docs/java/.md)
- [同步块](docs/java/.md)
- [静态同步方法](docs/java/.md)
- [死锁](docs/java/.md)
- [线程通信](docs/java/.md)
- [线程打断](docs/java/.md)
- [可重入监视器](docs/java/.md)

**序列化：**

- [序列化和反序列化](docs/java/.md)
- [transient 关键字](docs/java/.md)

**网络编程：**

- [网络编程的一些概念](docs/java/.md)
- [socket 编程](docs/java/.md)
- [URL 类](docs/java/.md)
- [URLConnection 类](docs/java/.md)
- [HttpURLConnection 类](docs/java/.md)
- [InetAddress 类](docs/java/.md)
- [DatagramSocket 类](docs/java/.md)

**反射：**

- [反射 API](docs/java/.md)
- [newInstance 方法](docs/java/.md)
- [javap](docs/java/.md)
- [自定义反编译类](docs/java/.md)
- [调用私有方法](docs/java/.md)

**IO：**

- [输入输出流](docs/java/.md)
- [FileOutputStream 类](docs/java/.md)
- [FileInputStream 类](docs/java/.md)
- [BufferedOutputStream 类](docs/java/.md)
- [BufferedInputStream 类](docs/java/.md)
- [SequenceInputStream 类](docs/java/.md)
- [ByteArrayOutputStream 类](docs/java/.md)
- [ByteArrayInputStream 类](docs/java/.md)
- [DataOutputStream 类](docs/java/.md)
- [DataInputStream 类](docs/java/.md)
- [FilterOutputStream 类](docs/java/.md)
- [FilterInputStream 类](docs/java/.md)
- [ObjectStream 类](docs/java/.md)
- [ObjectStreamField 类](docs/java/.md)
- [Console 类](docs/java/.md)
- [FilePermission 类](docs/java/.md)
- [Writer 类](docs/java/.md)
- [Reader 类](docs/java/.md)
- [FileWriter 类](docs/java/.md)
- [FileReader 类](docs/java/.md)
- [BufferedWriter 类](docs/java/.md)
- [BufferedReader 类](docs/java/.md)
- [CharArrayReader 类](docs/java/.md)
- [CharArrayWriter 类](docs/java/.md)
- [PrintStream 类](docs/java/.md)
- [PrintWriter 类](docs/java/.md)
- [OutputStreamWriter 类](docs/java/.md)
- [InputStreamReader 类](docs/java/.md)
- [PushbackInputStream 类](docs/java/.md)
- [PushbackReader 类](docs/java/.md)
- [StringWriter 类](docs/java/.md)
- [StringReader 类](docs/java/.md)
- [PipedWriter 类](docs/java/.md)
- [PipedReader 类](docs/java/.md)
- [FilterWriter 类](docs/java/.md)
- [FilterReader 类](docs/java/.md)
- [File 类](docs/java/.md)
- [FileDescriptor 类](docs/java/.md)
- [RandomAccessFile 类](docs/java/.md)
- [Scanner 类](docs/java/.md)


**日期和时间：**

- [日期和时间 API](docs/java/.md)
- [LocalDate 类](docs/java/.md)
- [LocalTime 类](docs/java/.md)
- [LocalDateTime 类](docs/java/.md)
- [MonthDay 类](docs/java/.md)
- [OffsetTime 类](docs/java/.md)
- [OffsetDateTime 类](docs/java/.md)
- [Clock 类](docs/java/.md)
- [ZoneDateTime 类](docs/java/.md)
- [ZoneId 类](docs/java/.md)
- [ZoneOffset 类](docs/java/.md)
- [Year 类](docs/java/.md)
- [YearMonth 类](docs/java/.md)
- [Period 类](docs/java/.md)
- [Duration 类](docs/java/.md)
- [Instant 类](docs/java/.md)
- [DayOfWeek 枚举](docs/java/.md)
- [Month 枚举](docs/java/.md)
- [java.util.Date 类](docs/java/.md)
- [java.sql.Date 类](docs/java/.md)
- [Calendar 类](docs/java/.md)
- [Duration 类](docs/java/.md)
- [TimeZone 类](docs/java/.md)
- [DateFormat](docs/java/.md)
- [SimpleDateFormat](docs/java/.md)
- [获取当前日期和时间](docs/java/.md)


**正则表达式：**

- [正则表达式](docs/java/.md)

**RMI**

- [远程方法调用](docs/java/.md)

**国际化**

- [国际化](docs/java/.md)

**Java 版本新特性：**

- [Java 4/5](docs/java/.md)
- [Java 7](docs/java/.md)
- [Java 8](docs/java/.md)
- [Java 9](docs/java/.md)
- [Java 15](docs/java/.md)

**字符串常用方法：**

- [charAt](docs/java/.md)
- [compareTo](docs/java/.md)
- [concat](docs/java/.md)
- [contains](docs/java/.md)
- [endsWith](docs/java/.md)
- [equals](docs/java/.md)
- [equalsIgnoreCase](docs/java/.md)
- [format](docs/java/.md)
- [getBytes](docs/java/.md)
- [getChars](docs/java/.md)
- [indexOf](docs/java/.md)
- [intern](docs/java/.md)
- [isEmpty](docs/java/.md)
- [join](docs/java/.md)
- [lastIndexOf](docs/java/.md)
- [length](docs/java/.md)
- [replace](docs/java/.md)
- [replaceAll](docs/java/.md)
- [split](docs/java/.md)
- [startsWith](docs/java/.md)
- [substring](docs/java/.md)
- [toCharArray](docs/java/.md)
- [toLowerCase](docs/java/.md)
- [toUpperCase](docs/java/.md)
- [trim](docs/java/.md)
- [valueOf](docs/java/.md)



## one more thing

同学们放宽心，《教妹学 Java》专栏还会继续更新，敬请期待👍。写这个专栏的初衷就是为了帮助那些零基础学 Java，或者自学 Java 感觉特别痛苦，特别难入门的小伙伴。

另外，我还创建了一些「**技术交流群**」，群里氛围很不错，有不少小伙伴会分享一些校招或者社招经验，更重要的是，群里时不时会有「红包」等福利，当然，群里不允许任何形式的广告。扫描下方的二维码，回复「**加群**」即可。

![个人微信](http://www.itwanger.com/assets/images/wangsan.png)


