String在日常开发过程中,想必大家应该不感到陌生,但Sring在某些条件下使用后会导致代码的性能出现问题,比如在非常庞大的循环中反复赋值String=**,至于为什么会有这样的问题,在看完这篇String,StringBuffer和StringBuilder的区别后,大家应该就知道原因了。
首先大家需要了解String所包含的方法,可以参见 菜鸟教程String对象。大家在使用String需要注意的是,String对象创建以后值不可更改,也就是说当你每次把String对象的值更改以后,其实本质上也就是新建了一个String对象,而并非在同一个对象上操作。因此当你在循环中反复的更改String的值,也就是在反复的创建新对象,当循环过于庞大时会导致内存抖动(即大量的新对象创建和销毁,还有内存泄漏和内存溢出的说明会在之后的Android学习笔记给大家总结出来),这样无疑会影响代码的性能。
所以当我们需要频繁的去修改一个String的值该怎么办呢?所以有了StringBuilder和StringBuffer。StringBuilder和StringBuffer均可以实现在同一个对象上更改其值,但是这两者的使用条件也有区别。如果你的代码是单线程的,那么可以直接使用StringBuilder,因为StringBuilder的速度更快,但是如果你的代码是多线程的,那么你就需要使用StringBuffer,因为StringBuffer是线程安全的。
做一下总结:
1.常量,不经常修改可使用String。
2.单线程,需要经常修改,使用StringBuilder。
3.多线程,需要经常修改,使用StringBuffer。
网友评论