Android中的String.java源码问题

今天有兴趣看了一下String.java类中的源码发现有点不同,但是貌似区别也不大,也借着这个机会解读下String.java源码吧

源码就不粘了,说下不同点:

Android下:

private final int count;

Java源码:

private final char value[];(其实android里也有这一句,只是被注释掉了)

Android中的String.java源码问题

 

Android中许多构造器是异常抛错

 

Android中的String.java源码问题

 

而java中则是正常的构造器初始化方法

Android中的String.java源码问题

 

而length方法也不太一样

android:

Android中的String.java源码问题

java下:

Android中的String.java源码问题

 

android中的charAt方法也改成了JNI了

Android中的String.java源码问题

 

String源码貌似基本上都有改动,但是貌似不影响我们的使用。

那么问题来了,我们到底是使用的哪个String呢?

是java的,还是android下的?android下难道没有引用jdk的吗?

 

最后分析下源码吧

1、String类使用final修饰,决定了它是一个不可修改的类,底层是一个char数组

2、

private final char value[];


private final int count;

也就决定了它的长度是不可以改变的

3、继承了Serializable、Comparable、CharSequence接口

Serializable:实现序列化

Comparable:用于对两个实例化对象比较大小

CharSequence:实现只读的字符序列。包括length(), charAt(int index), subSequence(int start, int end)这几个API接口,StringBuffer和StringBuild也是实现了改接口。

总结:

Android中的String.java源码问题

对于上述的问题,作一个总结,android中应该是自己写了一个String类,而且是仿照java中的String完成,且做出了一定的优化,

只是我们都习惯使用了jdk。

有什么问题或者是不对的地方,欢迎在评论区指正,谢谢!