《Java架構築基》從Java基礎講起——常見的API方法

1. Object類

1.1 Object有哪些公用方法?

  • a.方法equals測試的是兩個對象是否相等
  • b.方法clone進行對象拷貝【問題:是淺拷貝還是深拷貝?】
  • c.方法getClass返回和當前對象相關的Class對象
  • d.方法notify,notifyall,wait都是用來對給定對象進行線程同步的

2. String類

2.1 String類的一些特性

  • String 類代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作爲此類的實例實現。
  • 字符串是常量;它們的值在創建之後不能更改。字符串緩衝區支持可變的字符串。因爲 String 對象是不可變的,所以可以共享。
  • Java 語言提供對字符串串聯符號("+")以及將其他對象轉換爲字符串的特殊支持。字符串串聯是通過 StringBuilder(或 StringBuffer)類及其 append 方法實現的。

2.2 一旦被創建就不能改變

  • String s = new String(“hello”)和String s = “hello”;的區別
  • String的特點一旦被創建就不能改變【內容不能變,引用可以變】

問答題

A:String的特點:    一旦被創建就不能改變
B:案例演示   
     a:如何理解這句話
     String s = "hello" ;
     s =  "world" + "java"; 問s的結果是多少?

下面這條語句一共創建了多少個對象:String s = “a”+“b”+”c”; 分別都是什麼?
答案:5個對象
分別是 "a" , "b" , "c" , "ab" , "abc"
因爲字符串的特點是一旦被創建就不能被改變,所有在使用常量進行相加的時候,都是在創建新的字符串對象
最後在把字符串"abc"這個常量值賦值給引用變量s

輸出結果:

《Java架構築基》從Java基礎講起——常見的API方法

3. StringBuffer類與StringBuilder類

3.1 StringBuffer類概述

  • 字符串緩衝區,StringBuffer是一個容器
  • 我們如果對字符串進行拼接操作,每次拼接,都會構建一個新的String對象,既耗時,又浪費空間。 而StringBuffer就可以解決這個問題
  • 線程安全的可變的字符序列 , 安全對應的效率比較低

3.2 StringBuffer和String的區別

  • String是不可變的字符序列
  • StringBuffer 是可以的字符序列

3.3 StringBuffer和String的相互轉換

A:String -- StringBuffer

  • a:通過構造方法
  • b:通過append()方法

B:StringBuffer -- String

  • a: 使用substring方法
  • b:通過構造方法
  • c:通過toString()方法

3.4 StringBuilder類

  • StringBuilder是線程不安全的,其他跟StringBuffer一樣;StringBuffer和StringBuilder底層是 char[]數組實現的

4. 數組

4.1 數組高級冒泡排序原理圖解

《Java架構築基》從Java基礎講起——常見的API方法

冒泡排序原理

  • 相鄰元素兩兩比較,大的往後放,第一次完畢,最大值出現在了最大索引處
  • 冒泡排序代碼
/**
* 冒泡排序
* @param arr
*/
private static void bubbleSort(int[] arr) {
    for(int y = 0 ; y < arr.length - 1; y++) {
        for(int x = 0 ; x < arr.length - 1 - y ; x++ ) {
            if(arr[x] > arr[x+1]) {
                int temp = arr[x] ;
                arr[x] = arr[x+1] ;
                arr[x+1] = temp ;
            }
        }
    }
}

4.2 數組高級選擇排序原理圖解 image

《Java架構築基》從Java基礎講起——常見的API方法

選擇排序原理

  • 從0索引開始,依次和後面元素比較,小的往前放,第一次完畢,最小值出現在了最小索引處

數組高級選擇排序代碼實現

private static void selectSort(int[] arr) {
    for(int index = 0 ; index < arr.length - 1 ; index++) {
        for(int x = index + 1 ; x < arr.length ; x++) {
            if(arr[index] > arr[x]) {
                int temp = arr[index] ;
                arr[index] = arr[x] ;
                arr[x] = temp ;
            }
        }
    }
}

4.3 數組高級二分查找原理圖解 image

數組高級二分查找思想

  • 每一次都查中間的那個元素,比較大或者小就能減少一半的元素

數組高級二分查找代碼

/**
 * 二分查找
 * @param arr
 * @return
 */
private static int binarySearch2(int[] arr , int value) {
    // 定義三個變量
    int minIndex = 0 ;
    int maxIndex = arr.length - 1 ;
    while(minIndex <= maxIndex) {
        int midIndex = (minIndex + maxIndex) >>> 1 ;
        // 比較
        if(arr[midIndex] == value) {
            return midIndex ;
        }else if(arr[midIndex] > value) {
            maxIndex = midIndex - 1 ;
        }else if(arr[midIndex] < value) {
            minIndex = midIndex + 1 ;
        }
    }
    // 返回
    return -1;
}

5. 基本類型包裝類

5.1 爲什麼會有基本類型包裝類

爲了對基本數據類型進行更多的操作,更方便的操作,java就針對每一種基本數據類型提供了對應的類類型.

常用的操作之一:用於基本數據類型與字符串之間的轉換

5.2 基本類型和包裝類的對應

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

6. 正則表達式

正則表達式,不需要記憶,用的時候去查就可以呢

  • 是指一個用來描述或者匹配一系列符合某個句法規則的字符串的單個字符串。其實就是一種規則。有自己特殊的應用。
  • 具體使用直接上網搜索
    • 例如,匹配手機號,郵箱,身份證號等等

7. Pattern和Matcher類

* 正則的獲取功能需要使用的類

8. Math類

* Math 類包含用於執行基本數學運算的方法,如初等指數、對數、平方根和三角函數。
* 成員變量
public static final double E :         自然底數
public static final double PI:        圓周率
    * 成員方法

public static int abs(int a)               取絕對值
public static double ceil(double a)        向上取整
public static double floor(double a)       向下取整
public static int max(int a,int b)         獲取最大值
public static int min(int a, int b)        獲取最小值
public static double pow(double a,double b)獲取a的b次冪
public static double random()              獲取隨機數  返回帶正號的 double 值,該值大於等於 0.0 且小於 1.0。
public static int round(float a)           四捨五入
public static double sqrt(double a)        獲取正平方根

9. Random類

隨機類

  • 此類用於產生隨機數如果用相同的種子創建兩個 Random 實例,則對每個實例進行相同的方法調用序列,它們將生成並返回相同的數字序列
  • 構造方法
public Random()             沒有給定種子,使用的是默認的(當前系統的毫秒值)
public Random(long seed) 給定一個long類型的種子,給定以後每一次生成的隨機數是相同的
public int nextInt()
public int nextInt(int n)

10. System類

系統級類

  • System 類包含一些有用的類字段和方法。它不能被實例化。
  • 系統級操作
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章