我专门写了一篇关于String的日志,你可以去看看。在此可以简单地阐述一下。String是不可变类,String的字符串一旦创建时不可以修改的。我们通常看到的修改时一个假象,其实是在堆内存里产生了另外一个字符串对象,之前的对象失去了引用。在创建String字符串使用的“+”,如果是首次赋值时,涉及到运算,例如String a="keyee"+" sfds"+"ds"+1;尽管它连接了3个字符串和1个整数,但是分配空间时只存储了运算后的值,只产生了一个"keyeesfdsds1"的字符串对象在堆内存中。如果后续地你要修改a,采用a=a+"dsfs"的形式,其实和StringBuffer的append方法的差别就在于String会产生新的字符串对象,而StringBuffer则直接回修改堆内存中的字符串内容,并没有生成新的字符串。StringBuffer在字符串需要不断变更的情形时非常有利的,不会产生许多只是临时使用的字符串对象,对于有效规划内存非常有帮助。如果你想了解更多关于String的知识,也可以看看我的日志。日志的博客地址是:http://www.eoeandroid.com/blog-762066-6639.html。请多多相互交流。
|