一直以来都听到很多周围的同事说看源码,看源码,自己也在不知不觉中收到影响,加入了看源码的行列。但是初看源码我是真的不知道要怎么看,该看些什么。但是最近通过看别人的博客,看些书,渐渐的就发现了一些不一样的东西,这只是自己的理解,大神路过就好,莫喷。
java基本数据类型有8个,byte,short,int,long,float,double,char,boolean这8个,String类型并不包含在其中。同时String类为不可变类。那么我不禁会思考String的不可变类究竟是如何实现的?以及为什么需要这样设计呢?这样设计的好处是什么?(以前从来没想过,最近看源码一直不知道该怎么去看,所以决定带着疑问去看源码,这样会好很多,所以根据平时所学去研究究竟怎么做到这样子以及为什么这样子做)
public final class String implements java.io.Serializable, Comparable<String>, CharSequence
从这段代码中看以看到String类被定义为了final类型。final就代表了不可改变,所以这可能就是为什么说String类为不可变类型的原因。
相比较而言可以对比StringBuffer和StringBuilder。因为经常我们在面试的时候会听到面试官问我们String,StringBuffer和StrignBuilder之间的区别是什么。
public final class StringBuffer extends AbstractStringBuilder implements java.io.Serializable, CharSequence
public final class StringBuilder extends AbstractStringBuilder implements java.io.Seriali