源码解析基于jdk1.8.0_261进行分析
前言
String类是java出山时,就带出来的兄弟,在1.0版本,就有String类的出现,但并没有现在的Api丰富,从jdk1.0(1996)到jdk1.8(2016)用了18年的时间,廉颇虽老尚能战也
String是Java语言的核心类,位于rt.jar下
java.lang包中,它提供了字符串的比较、查找、截取、大小写转换等操作;Java语言为"+"连接符(字符串连接符)以及对象转换为字符串提供了特殊的支持,字符串对象可以使用”+"连接其他对象
如果饶有兴趣的读者,可以看下String类注释,讲述了String的使用方式及它的作用,这里我们只讲源码.
下面我们对String类源码整篇解读一下
类修饰符及接口实现
首先介绍下标记中每个关键字或接口出现在此处的意义
-
public:
-
Java语言中访问限制最宽的修饰符,一般称之为"公共的"被其修饰的类、属性以及方法不仅可以跨类访问,而且允许跨包(package)访问.
-
-
final(final关键字可以用来修饰引用、方法和类)
-
修饰引用
-
如果引用为基本数据类型,则该引用为常量,该值无法修改;
-
如果引用为引用数据类型,比如对象,数组,则该对象或数组本身可以修改,但指向该对象或数组的地址的引用不能修改;(栈中地址不可变)
-
如果引用时类的成员变量,需要在创建对象前进行赋值,否在在编译阶段就会报错.
-
-
修饰方法
-
当使用final修饰方法时,这个方法将成为最终方法,无法被子类重写,但该方法仍然可以被继承.
-
-
修饰类
-
当用final修改类时,该类成为最终类,无法被继承.即:不可派生类
-
-
-
java.io.Serializable
-
接口是一个标志性接口,在接口内部没有定义任何属性与方法.只是用于标识此接口的实现类可以被序列化与反序列化,在后期我们讲到时,会详细讲一下这个接口
-
-
java.lang.Comparable
-
强行对实现它的每个类的对象进行整体排序,这种排序被称为类的自然排序,类的 compareTo 方法被称为它的自然比较方法,在后期我们讲到时,会详细讲一下这个接口
-
-
java.lang.CharSequence
-
字符序列,是一个描述字符串结构的接口,此接口对多种不同的char访问的统一接口,CharSequence和String都可以定义字符串,但是String定义的字符串只能读,CharSequence定义的字符串是可读可写的
-
综上所述,总结下:
-
String 类不可被继承
-
String 类可在任意代码中使用
-
String 类对象创建后不能修改
-
String 类可针对两个字符串进行比较
