Android基础字符串String.md
生活随笔
收集整理的這篇文章主要介紹了
Android基础字符串String.md
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
問題拋出
String這個常量在我們代碼中會經常被用到,那么我們了解 String stringbuffer StringBudilder三者之間的區別嗎
問題解答
- String 字符串常量,位于常量池
- stringbuffer 字符串變量 不同步適用于單線程 位于字符串緩沖區
- StringBudilder字符串變量 同步適用于多線程 位于字符串緩沖區
1. string類型的2種賦值
String s1= "222"; //直接在常量池中開辟一個地址,如果有相同的則指向同一個地址 String s2=new String("223"); //直接在堆里面新建一個通過new關鍵字來生成對象是在堆區進行的,而在堆區進行對象生成的過程是不會去檢測該對象是否已經存在的。因此通過new來創建對象,創建出的一定是不同的對象,即使字符串的內容是相同的。
2. 為什么已經有了String還需要有stringbuffer /StringBudilder
public class Main {public static void main(String[] args) {String string = "";for(int i=0;i<10000;i++){string += "hello";}} } public class Main {public static void main(String[] args) {StringBuilder stringBuilder = new StringBuilder();for(int i=0;i<10000;i++){stringBuilder.append("hello");}} }上面第一個是每次都會創建一個新地址用來存儲,所以會導致真個遍歷過程十分要創建很多次,而使用stringBuilder就只會創建一次,,大大節省時間和內存空間;
4 StringBuilder與 StringBuffer
StringBuilder:線程非安全的
StringBuffer:線程安全的
當我們在字符串緩沖去被多個線程使用是,JVM不能保證StringBuilder的操作是安全的,雖然他的速度最快,但是可以保證StringBuffer是可以正確操作的。當然大多數情況下就是我們是在單線程下進行的操作,所以大多數情況下是建議用StringBuilder而不用StringBuffer的,就是速度的原因。
轉載于:https://www.cnblogs.com/prophet-it/p/7561816.html
總結
以上是生活随笔為你收集整理的Android基础字符串String.md的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前端使用js压缩图片上传
- 下一篇: vc2013 开发 winusb 简单测