1. 程式人生 > 其它 >java基礎筆記-常用類1 字串

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