Java的Arrays工具類,String類StringBuffer和StringBuilder(Day17)

1.數組工具類

java.util.Arrays

  • Arrays是一個工具類。
  • 其中有一個sort()方法,可以排序,靜態方法(爲了方便使用,工具類的方法一般都是靜態,所以採用類名調用即可)。
  • Arrays.sort();
  • 需要使用Arrays方法時查找API幫助文檔,切記死記硬背,多用幾次就記住了。(在IDEA中按兩次Shift鍵,查找類,即可查找類中的方法)
  • 二分查找方法:
    Arrays.binarySearch(arr,x);x爲要查找的值。返回-1元素不存在。

2.字符串類(String)

  • 字符串一旦創建不能更改.字符串是引用數據類型.
  • 在jdk當中,字符串都是直接存儲在"方法區"的字符串常量池"當中的.因爲字符串在實際開發中使用太頻繁,爲了執行效率,所以把字符串放到了方法去的字符串常量中.
  • 拼接操作並沒有更改字符串,而是在字符串常量池中生成了另一個字符串對象.遇到雙引號括起來的字符串就會生成一個字符串對象.
  • 如果用new創建一個字符串,會在堆內存中生成一個對象,但是字符串常量池中也有.
    *在這裏插入圖片描述
    在這裏插入圖片描述
  • 直接定義字符串對象時,用雙等號比較兩個字符串相等的原因
    在這裏插入圖片描述
  • 而用new關鍵字創建String對象時.用雙號比較不相等的原因如下圖:.所以應該用equals方法.巧了String類重寫了equals方法.
    在這裏插入圖片描述
  • 字符串爲String類的對象者是爲什麼"fas".equals(k))可以使用的原因
  • 題目:
  • 將byte數組中的部分或全部元素轉換成字符串方法
  • byte[] bytes ={97,98,99};
    String s2 = new String(bytes);//這裏還有兩個量可以寫,第一是,下標起始位置,二是轉換的長度.
    System.out.println(s2);(默認調用toString方法,String類重寫了toString方法.所以輸出abc).
  • char數組與上面的byte數組類似.
  • compareTo方法類似於C語言的那個strcmp()函數.(在string.h 庫函數中,按照字母的排序,比較兩個字符串是否相等)
  • contains()方法,判斷前面的字符串是否包含後面的字符串,返回值爲boolean類型.
  • endWith(".java")方法判斷字符串是否以.java結尾.
  • equalsIgnoreCase在equals基礎上忽略大小寫.
  • getBytes()方法將字符串轉換成byte數組.
  • indexOf()方法,判斷子字符串在字符串首次出現的索引.
  • lastIndexOf方法,最後一次出現的索引.
  • isEmpty()方法,判斷某個字符串是否爲空串
  • .判斷數組長度是length屬性,判斷字符串是否爲空串用的是length方法.
  • replace()方法,將字符串裏的老字符串替換成新的字符串.
  • split()以括號內的字符進行拆分,存入String數組中.
  • StartWith()判斷某個字符串是否以子字符串開始
  • substring()返回從指定位置開始結束的字符串,兩個參數給的話可以返回指定兩個位置間的字符串,左閉右開.
  • toCharArray()將字符串轉換成char數組.
  • toLowerCase()將字符串轉換成小寫
  • trim()方法,去除字符串前面和後面的空字符.
  • String中只有一個方法是static,不需要對象I(valueof方法),將非字符轉換成字符串.並且println方法調用了valueof方法,所以 能打印在控制檯上的都是字符串.

開發中,如果需要進行字符串的頻繁拼接,會存在什麼問題?

因爲java的字符串是不可變的,每次拼接都會產生新的字符串.這樣會佔用大量的方法區內存,造成空間的浪費(字符串常量值).

  • 這時StringBuffer就粉墨登場,哈哈,
  • 用的時候,倒入類:import java.util.StringBuffer;
  • 默認創建一個初始化容量爲16的byte[]數組,用來保存字符串.想要追加append()上,會自動擴容,想要刪除delete方法上…
  • StringBuffer的優化.解決默認16空間,導致空間不足,經常擴容的問題.即創建時指定容量.
  • StringBuffer sb = new StringBuffer(100);

StringBuilder和StringBuffer

StringBuffer中的方法都有:synchronized關鍵字修飾,表示StringBuffer在多線程環境下時安全的.而StringBuilder是不安全的.
在這裏插入圖片描述

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