java中的字符串_Java中的字符串
String:這是一個不可變類,現使用現創建,適用于少量的字符串操作的情況
StringBuilder:可變類,速度快、線程不安全,適用于單線程下在字符緩沖區進行大量操作的情況
StringBuffer:可變類,速度慢、線程安全,適用多線程下在字符緩沖區進行大量操作的情況
緩存池:
String 類有一個對應的 String 池,也就是 String pool。每一個內容相同的字符串對象都對應于一個 pool 里的對象。
這里涉及到等價性的問題,有幾個地方需要特別注意
1.初始化
String s = "xxx" 這種形式,如果緩存池中沒有,則在緩存池和堆里分別創建一個,然后讓s指向緩沖池中的那個。如果有,就讓它指向緩存池中的那個,不在堆中新建對象。
String s = new String("xxx")這種形式,一定會在堆中新建一個,如果緩存池中沒有,就在緩沖池里創建一個,但是指向的仍然是堆中那個。
例:
String s = new String("abc");
String s1= "abc";
String s2= new String("abc");
System.out.println(s==s1);
System.out.println(s==s2);
System.out.println(s1==s2);//結果是false false false
2.intern()方法
尋找對應內容的緩沖池中的那個對象
例:
String s = new String("abc");
String s1= "abc";
String s2= new String("abc");
System.out.println(s==s1.intern());
System.out.println(s==s2.intern());
System.out.println(s1==s2.intern());//結果是false false true
3.字符串拼接
用+運算符生成新字符串時,如果加號兩邊都是字面值,則會去尋找緩沖池的對象,如果找到會返回這個對象。
否則,直接創建一個新對象。
String hello = "hello";
String hel= "hel";
String lo= "lo";
System.out.println(hello== "hel" + "lo");
System.out.println(hello== "hel" +lo);//結果是true false
總結
以上是生活随笔為你收集整理的java中的字符串_Java中的字符串的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android弹窗闪退,[Android
- 下一篇: 信息学奥赛一本通 1171:大整数的因子