Java笔记
最近在看java,重新思考了一些问题,做一下笔记
String、StringBuffer和StringBuilder的关系
这个最简单的回答就是,String只读不可变,StringBuffer和StringBuilder是可读可写的,前者线程安全,后者非线程安全(这里吐槽一下程序员思维,非线程安全这个说法就像是 **!=或者not **,但是读起来难过,我还是比较喜欢线程不安全这个说法)。
在String.Class中我们可以看出,String就是一个byte数组(我一直以为是char列表的-_-),这个字符数组被限定了final,final对于类不可被继承,对于变量不可更改。
private final byte[] value;
再说一下StringBuffer和StringBuilder,两者都是extends AbstractStringBuilder
,说明这两个是亲戚。
length、length()和size()
有次发现有些时候length有括号有时有有时没有,这个困惑就一直在,这次查了一下记录下来。
. | . |
---|---|
length | 数组 |
length() | 字符串 |
size() | 集合 |
可以这么记忆:数组的长度是一个属性,也就是说内存中有一个地方存着数组的长度,所以数组不加括号;字符串看上文就应该知道是byte数组,所以用方法获取这个数组的长度,既然是方法了,那就加括号;size就记忆一下 |
关于多线程
- 继承Thread、重写run方法
- 实现Runable借口,重写run方法
详细参看java线程笔记