一、String类是java中存放字符串的类,搞懂它就必须理解的内存模型(搞清楚创建String的两个方式:new String("xxx")和“xxx”直接赋值内存的模型的差别)
1.前者需要在堆中创建对象,并将栈中创建引用指向它,其对象中有char[]指向方法区的常量池
2.后者直接在常量池中直接赋值,如果找不到就创建。
equals方法和==的区别
equals方法比较的是内容,==比较的是引用地址。
二、StringBuffer和StringBulider的引入
由于String每次更新其内容时,都要在常量池中开辟新的空间,并更改指向,效率低,所有Java的设计者提供了Stringbuffer和StringBuilder来增强String的功能,提高效率。
二者区别
1.前者适应于多线程环境,支持线程同步(方法都加了Synchronize)
2.单线程环境中,后者更快
3.都有append和insert方法
具体细节且看官方文档!!!