为何阅读JDK源码

前言

这段时间比较闲,就看起了jdk源码。一般的一个高级开发工程师, 能阅读一些源码对自己的提升还是蛮大的。这里作个自己的小结。

为什么要读源码?

现在一个项目基本离不开jar包, 第三方api,我们可以反编译去看一些大神们的源码,当然源码的水平也是有好有坏。都有哪些好处呢?

1、了解思想

程序员大部分开发中都是些增删查改,过的的业务的逻辑。比如一个需求 我们用了几十行代码写了。 感觉没问题, 但是别人可能用几行就搞定了,要学习别人的思路。

2、熟悉设计模式

包括24种设计模式,Java对象的三大特征,好的代码中都有体现。

3、提高自己的代码优雅性

我们代码可能更多是业务的需求, 但是源码大部分都比较优雅, 比如jdk 源码,非常精简。要学习源码的代码写法。

4、知晓原理,提升面试能力

面试中经常闻到源码, 你是否读过源码,你觉得为什么这么写,举个例子, 之前面试碰到被别人问, jdk 7 和 jdk 8 的concurrentHashMap  的size()方法分别是怎么实现的, 这个集合经常被问到。

5、让自己变得有耐心

我们知道, 阅读别人的代码是非常痛苦的事 ,尤其是一些比较差 的代码, 可读性非常差, 当然 jdk 源码 也比较头痛。 举个例子, String ,这个 对象,它 的方法我们可能基本都用过了,但是它 的源码有多少人真正看完了呢?

我看了下, 它 的源码有2000多行,一开始看起来非常枯燥 ,阅读源码, 让自己静下心来,程序员本身就是一份安静的工作。

6、让自己变得有逼格

以前的一个资深开发每次跟我们聊天, 说那啥jdk源码都基本看过了,当然10个程序员有1个阅读源码就不错了, 至少值得尊敬。

7、提升自己代码严谨性

一个程序员,只要工作, 就离不开bug ,jdk 的源码大部分都是专家写的 ,代码严谨性非常强,我们看了代码, 改变自己平时错误的编码习惯, 包括最基本的判空啊。再比如, 一个类里面的常量到底是用private 修饰,还是protect修饰, 还是public修饰,

bug越多, 越让别人鄙视。

时间: 2024-11-05 09:59:20

为何阅读JDK源码的相关文章

如何阅读jdk源码?

简介 这篇文章主要讲述jdk本身的源码该如何阅读,关于各种框架的源码阅读我们后面再一起探讨. 笔者认为阅读源码主要包括下面几个步骤. 设定目标 凡事皆有目的,阅读源码也是一样. 从大的方面来说,我们阅读源码的目的是为了提升自己的技术能力,运用到工作中,遇到问题快速定位,升职加薪等等. 从小的方面来说,阅读某一段源码的目的就是要搞清楚它的原理,就是死磕,就是那种探索真相的固执. 目的是抽象的,目标是具体的,我们阅读源码之前一定要给自己设定一个目标. 比如,下一章我们将要一起学习的Concurren

阅读JDK源码有感

最近加班不是很严重,爱上了查看JDK源码,每天回来,准备一杯咖啡,开始阅读,受益良多.从上周开始阅读,觉得还是写下感想和学习心得比较好.以后每天阅读,每天记下收获.总体来说,我觉得JDK源码写得十分漂亮,无论是从代码风格还是从重用性来说,都是相当出色的.之前阅读过Thinking in java,感觉很多东西都不能深入理解,太过于理论化,现在结合JDK看来,又别有一番感悟.以前每次有面试,都会从网上收集一些面试题,死记硬背一些知识,HashMap与HashTable的区别啊之类的,但是看了JDK

idea 导入 jdk源码 解决compile code 后阅读jdk 源码

在用intelliJ IDEA阅读代码时,跟踪到例如java.io.File类文件时,在关键代码段总会出现 “compile code”字样,使人不能真正跟踪到代码内部去. 为解决此问题,如下操作: step1:下载jdk源码,src.jar 1.1 mac安装的jdk路径 :/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/ 源码所在位置:/library/java/javavirtualmachines/1.6.0_65-b14-462.j

使用NetBeans、Eclipse阅读JDK源码

下面说明在Netbeans.Eclipse环境下怎么查看JDK源码: Netbeans: 在"工具->java平台->源"里添加下路径,如果你安装jdk的时候选择安装了源码的话,jdk目录里会有一个src.zip的文件,添加这个文件就可以了. 选中相应的代码,ctrl+鼠标左键.就进入到源码环境了. Eclipse: 1.点 "window"-> "Preferences" -> "Java" ->

jdk 源码阅读有感(一)String

闲暇之余阅读 jdk 源码. (一)核心属性 /** The value is used for character storage. */ private final char value[]; /** Cache the hash code for the string */ private int hash; // Default to 0 String的核心结构,char型数组与 int 型 hash值. (二)构造器 构造器方面,由于上述两个值是不可更改的,所以直接 对 String

JDK源码之String、StringBuffer、StringBuilder

就String而言,平时工作中用得最多,但是很多时候还是用不好,有必要对他进行整体的分析下.如果看过Thinking in java,再看下JDK的源码,很多东西就会变得十分明了.现在对String的底层实现进行下分析. 首先是对构造函数而言,我工作中最常用到的可能就是new String(str)这个构造函数了,所以再在此关注这一个.这个构造函数是对传进来的String进行解析,将其放进一个数组当中,我们设定为arrayOfChar,String类定义了全局变量offset(偏移量),coun

JDK源码学习--String篇(二) 关于String采用final修饰的思考

JDK源码学习String篇中,有一处错误,String类用final[不能被改变的]修饰,而我却写成静态的,感谢CTO-淼淼的指正. 风一样的码农提出的String为何采用final的设计,阅读JDK源码的时候,有粗略的思考过,今天下班后又把<Thinking in Java>中关于final的内容重新看了一遍,对此写下一些关于自己的理解和想法. String类中final关键字的使用 final关键字,用来描述一块数据不能被改变,两种可能理由:设计.效率 final使用的三种情况:数据.方

【JDK源码】JDK的java.util.concurrent包结构

本文从JDK源码包中截取出concurrent包的所有类,对该包整体结构进行一个概述. 在JDK1.5之前,Java中要进行业务并发时,通常需要有程序员独立完成代码实现,当然也有一些开源的框架提供了这些功能,但是这些依然没有JDK自带的功能使用起来方便.而当针对高质量Java多线程并发程序设计时,为防止死蹦等现象的出现,比如使用java之前的wait().notify()和synchronized等,每每需要考虑性能.死锁.公平性.资源管理以及如何避免线程安全性方面带来的危害等诸多因素,往往会采

jdk源码分析总览

今天看到了一个源码分析按照重要性排序的例子, 这里拿过来用了,之后按照这个顺序不断的完善源码的内容. 引用的出处忘记了(对作者说声抱歉) 很多java开发的小伙伴都会阅读jdk源码,然而确不知道应该从哪读起.以下为小编整理的通常所需阅读的源码范围. 标题为包名,后面序号为优先级1-4,优先级递减 1.java.lang 1) Object 12) String 13) AbstractStringBuilder 14) StringBuffer 15) StringBuilder 16) Boo