Android中的String.java源码问题
今天有兴趣看了一下String.java类中的源码发现有点不同,但是貌似区别也不大,也借着这个机会解读下String.java源码吧
源码就不粘了,说下不同点:
Android下:
private final int count;
Java源码:
private final char value[];(其实android里也有这一句,只是被注释掉了)
Android中许多构造器是异常抛错
而java中则是正常的构造器初始化方法
而length方法也不太一样
android:
java下:
android中的charAt方法也改成了JNI了
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中的String完成,且做出了一定的优化,
只是我们都习惯使用了jdk。
有什么问题或者是不对的地方,欢迎在评论区指正,谢谢!