StringBuffer & StringBuilder & String,常用類

String類的本質StringBuffer和StringBuilder 常見包裝類

一、 String類

特點

String用於保存字符串

String創建對象

“hello” 默認就是 一個String的對象(實例)

1、通過構造方法

String str = new String(“hello”);

2、直接賦值

String str = “hello”;

1、★★問題思考?

兩種創建對象方式的區別:

直接賦值:

先去常量池中查看 是否有字面值一樣的 空間,如果沒有則創建,如果有,則直接 指向。

通過構造方法:

肯定會在堆中創建空間,空間中的字符串值引用了 常量池中的字面上的值。
如果常量池中有和字面值一樣的空間,則直接引用,否則 就創建

2、★★問題思考?

String str=new String("hello");創建了幾個對象

創建了兩個對象

3、★★問題思考?

String str="hello"+"world";創建了幾個對象

創建了 三個對象

"hello"/"world"/"helloworld"

str+="xiaohua";每次拼接都要新開空間,所以效率比較低

原因:字符串保存的是常量,一旦開闢空間,裏面的值不能更改!

String類的常用方法

見已發佈String相關javaSe基礎博客文章

二、 StringBuffer類

(1)特點

String類的增強版

實質上也是保存字符串,但 增刪改的話是在原來的空間上,不需要新開闢空間,效率 比較高!!

StringBuffer

1、創建對象
    通過構造器

2、常用方法
    append追加
    insert插入
    replace修改
    delete刪除
    reverse反轉
    length獲取長度
    indexOf獲取字符或字符串第一次出現的索引
    lastIndexOf 獲取字符串或字符串最後一次出現的索引

3、String和StringBuffer的轉換

    String——StringBuffer
        通過構造器
    StringBuffer——String
        通過toString

4、StringBuffer和StringBuilder、String對比

    《1》效率不同,StringBuilder>StringBuffer>String

    《2》StringBuffer和StringBuilder都是保存字符串變量

    《3》增刪改操作都是在自身基礎上修改,不用重新開闢空間,String 保存字符串常量

         每次增刪改都需要重新開闢空間。

    《4》StringBuffer 線程安全、同步、效率低、版本老的,        
        StringBuilder線程不安全、不同步、   

    《5》效率高、版本新的

1、★★思考問題

String和StringBuffer的區別

String 保存字符串 常量
StringBuffer 保存字符串 變量

(2)創建對象

StringBuffer s = new StringBuffer(“hello”);

(3)StringBuilder/StringBuffer/String對比

String 保存字符串常量,裏面的值不能更改

StringBuffer和StringBuilder保存字符串變量,裏面的值可以更改


                線程安全        同步        效率        版本

 StringBuilder  不安全         不同步        高         新(1.5)

StringBuffer    安全           同步         低         老(1.0)

效率
StringBuilder>StringBuffer>String

常見方法

見代碼:

  public class TestStringBuffer {
  public static void main(String[] args) throws Exception {

    //創建StringBuffer對象

    StringBuffer s = new StringBuffer("hello");

    //方法一:append 追加
    /*
     * 特點:
     * 
     * ☆可以在本身基礎上追加
     * ★可以追加任意類型
     * ★返回類型 :StringBuffer
     */

//      s.append("張三");
//      s.append("李四");
//      s.append(true);
//      s.append('男');
//      s.append(1.5);
//      s.append(100);     

    System.out.println(s.append("張無忌").append("周芷若").append("小昭"));

    //方法二:insert  插入

    System.out.println(s.insert(8, true));;

    //方法三:replace 修改
    /*
     * 參數1: 要替換的起始索引(包含)
     * 參數2:要替換的結束索引(不包含)
     * 參數3: 新的元素
     */

    System.out.println(s.replace(8, 12, "曹小華"));;

    //方法四:delete 刪除
    /*
     * 參數1: 要刪除的起始索引(包含)
     * 參數2:要刪除的結束索引(不包含)
     */

    System.out.println(s.delete(11, s.length()));;

    //indexOf、lastIndexOf、length、substring

    //-------------String類和StringBuffer的轉換--------------
    /*
     * String——StringBuffer,通過構造器
     * StringBuffer——String,通過 toString方法
     */

    StringBuffer bu1=new StringBuffer("hlll");

    String string = bu1.toString();

三、包裝類

1、概念:

將基本類型 包裝成 對應的引用類型,保存的數值一樣,但可以有屬性和方法

2、對應關係

byte-Byte
short-Short
int-Integer
long-Long
float-Float
double-Double
char-Character
boolean-Boolean

3、自動裝箱和拆箱

自動裝箱(基本類型——包裝類)
    Integer i = 10;
自動拆箱(包裝類——基本類型)
    int a= i;
    int x=i+3;

4、類型轉換

《1》Integer和String之間

Integer——String
         調用方法toString
         拼接字符串
String——Integer
         Integer i=new Integer(string);
         調用方法valueOf

《2》Integer和int之間

    Integer——int
        自動拆箱
        調用方法intValue
    int——Integer
        自動裝箱
        Integer i=new Integer(int);

《3》int和String之間

    int——String
        拼接字符串
    String——int
        調用方法parseInt

《4》Character類的常見方法

isLetter      確定指定字符是否爲字母。
isUpperCase   確定指定字符是否爲大寫字母。
isLowerCase   確定指定字符是否爲小寫字母。
isDigit       確定指定字符是否爲數字
toUpperCase   使用取自 UnicodeData 文件的大小寫映射信息將字符參數轉換爲大寫。
toLowerCase   使用取自 UnicodeData 文件的大小寫映射信息將字符(Unicode 代碼點)參數轉換爲小寫。

四、常用類方法

1、此類用於演示Date類的使用
按格式顯示當前日期

public class TestDate {

public static void main(String[] args) {

    Date d = new Date();
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

    String strDate = sdf.format(d);

    System.out.println(strDate);
}

}

2、此類用於演示日曆(Calendar)類的使用

public class TestCalendar {

public static void main(String[] args) {

    //創建Calendar對象

    Calendar  c=Calendar.getInstance();

    System.out.println(c);
    //調用方法
    int year = c.get(Calendar.YEAR);

    int month = c.get(Calendar.MONTH);
    int day = c.get(Calendar.DAY_OF_MONTH);

    int hour = c.get(Calendar.HOUR_OF_DAY);
    int minute = c.get(Calendar.MINUTE);

    int second = c.get(Calendar.SECOND);


    System.out.println(year+"年"+(month+1)+"月"+day+"日  "+hour+":"+minute+":"+second);
}

}

3、此類用於演示(System)類的使用

public class TestSystem {
public static void main(String[] args) {

    //方法一:exit退出程序
    System.out.println("hehehhe");

//      System.exit(0);
//      System.out.println("hhahahha"); 已退出未執行

    //方法二:arrayCopy
    /*
     * 參數1:源數組
     * 參數2:源數組 複製的起始索引
     * 參數3:目標數組
     * 參數4:目標數組的起始索引
     * 參數5:複製的個數
     */

    int[] src={1,2,3};

    int[] dest=new int[src.length];
    System.arraycopy(src, 0, dest, 1, src.length-1);
    for (int i = 0; i < dest.length; i++) {
        System.out.println(dest[i]);
    }

    //方法三:currentTimeMillens,單位ms

    long start = System.currentTimeMillis();

    //執行某段代碼花費了一定時間

    long end = System.currentTimeMillis();


    //方法四:getProperties 獲取系統屬性

    System.out.println("-----------------------------------");
    Properties properties = System.getProperties();

    properties.list(System.out);
}

}

4、此類用於演示(Character)類的使用

public class TestCharacter {
public static void main(String[] args) {

    Character c=new Character('a');

    Character c2 ='a';//自動裝箱

    char ch=c2;//自動拆箱

    //調用方法

    // 判斷
    System.out.println(Character.isLetter('4'));
    System.out.println(Character.isLetter('x'));
    System.out.println(Character.isDigit('4'));
    System.out.println(Character.isDigit('*'));
    System.out.println(Character.isUpperCase('M'));
    System.out.println(Character.isLowerCase('M'));

    //和String之間的轉換

    //將String  轉換成  char[]

    String str="abc";
    char[] chs = str.toCharArray();

// for (int i = 0; i < chs.length; i++) {
// System.out.println(chs[i]);
// }
//

    //將char  轉換成 String

    String string = c2.toString();

    System.out.println(string);
}

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章