java基礎筆記-常用類1 字串
七 Java常用類
1. 字串相關的類
1.1 String類
final的,suoy
裡面實際是一個private final byte[ ] value;//之前還是char型別呢,現在就是byte了
實現了介面:
serializable,表示字串是支援序列化的
Comparable,可以比較大小
CharSequence
1.1.1 構造器
String s1="sd"; String s2= new String(); String s3=new String(String original); //建立了倆物件,堆空間裡new一個,另一個是byte[]對應的常量池裡的資料“xxx” String s4= new String(char[] a); String s5=new String (char[] a , int startIndex,int count);
直接賦值得str指向得是常量池中的字串常量池
通過new出來的str指向得是堆空間,所以這倆肯定不相等
String s1="ss";
String s2=new String("ss");
但是要是類的某個屬性是字串,然後來倆物件的該屬性相同,一般構造器往裡傳入的引數基本都是“xxxx”,所以這倆物件的該屬性 ==一般是相等的
1.1.2 不同拼接操作的對比
public void test2() { String a = "a"; String b = "b"; String n3 = "ab"; String n4 = "a" + "b"; String n5 = a + "b"; String n6 = a + b; String n7 = new String("ab"); //更不用說了 System.out.println(n3 == n4); //true, 完全是在常量池中解決的 System.out.println(n3 == n5);//fasle,有變數名參與了,就需要new了,所以涉及到了堆空間 }
1.1.3 str.intern()
String內有個方法 intern(),相當於把物件轉換到字串常量池中
1.1.4 字串和基本資料型別的轉換
String-->基本資料型別行,用包裝類的靜態方法:parseXxx(str)
基本資料型別-->String類過載的方法: valuOf(xxx)
1.1.5 String和char[] Byte[]
String ---->char[]
String的toCharArray方法 str.toCharArray();
char[]--->String 使用構造器即可
Byte[] 涉及到IO流 ,97a,98b
編碼過程:你看的懂得--->你看不懂的byte[ ],不同編碼集還不一樣
解碼過程:看不懂的--->能看懂了String
String---> Byte[]
str.getBytes();//可選引數是字符集,預設utf-8
Byte[] --->String
依舊是構造器就行,但是構造器是按著utf-8去構造的
gbk的byte[] 構造方式是str=new String(bytes,"gbk");
1.2 StringBuilder StringBuffer
這三個,底層都是用byte[]實現的
String 不可變,不用想了,效率就是最低的
StringBuffer:可變長 JDK1.0+ ,效率有點低,因為他是執行緒安全的(他的方法基本都是synchronized的)
StringBuilder:可變長 JDK5.0+ ,效率高,執行緒不安全 ,只要不涉及多執行緒,就用這個。。
1.2.1StringBuffer StringBuilder
初始空間16,每次擴容*2+2,如果擴容仍不滿足新加元素後的長度,直接用新長度
開發中,建議使用帶指定容量的構造器,避免頻繁的擴容
常用方法:
append() //新增元素,拼接運算,做了各種過載,所以輸入的數值型別也行,會轉成str
但凡有start,end作為引數的方法,都是左閉右開的
本文來自部落格園,作者:熒惑微光,轉載請註明原文連結:https://www.cnblogs.com/yinghuoweiguang/p/15635139.html