JAVA學習筆記_常用API

JAVA學習筆記_常用API

1. 什么叫API

  • 概述:

    API(Application Programming Interface)贮缅,應用程序編程接口。Java API是一本程序員的 字典 真朗,是JDK中提供給我們使用的類的說明文檔棍厂。這些類將底層的代碼實現(xiàn)封裝了起來棕孙,我們不需要關心這些類是如何實現(xiàn)的,只需要學習這些類如何使用即可脖律。所以我們可以通過查詢API的方式谢肾,來學習Java提供的類,并得知如何使用它們 小泉。

  • API使用步驟:

    1. 打開幫助文檔芦疏。
    2. 點擊顯示,找到索引微姊,看到輸入框酸茴。
    3. 你要找誰?在輸入框里輸入兢交,然后回車薪捍。
    4. 看包。java.lang下的類不需要導包,其他需要酪穿。
    5. 看類的解釋和說明凳干。
    6. 學習構造方法。
    7. 使用成員方法昆稿。

2. Scanner類

  • 什么是Scanner類

一個可以使用正則表達式來解析基本類型和字符串的簡單文本掃描器纺座。

  • 使用

    Scanner sc = new Scanner(System.in);
    int i = sc.nextInt();
    

    備注:System.in 系統(tǒng)輸入指的是通過鍵盤錄入數(shù)據(jù)。

  • Scanner使用步驟

引用類型的一般使用步驟:

  1. 導包
    import 包路徑.類名稱;
    如果需要使用的目標類溉潭,和當前類位于同一個包下净响,則可以省略導包語句不寫。
    只有java.lang包下的內(nèi)容不需要導包喳瓣,其他的包都需要import語句馋贤。

  2. 創(chuàng)建
    類名稱 對象名 = new 類名稱();

  3. 使用
    對象名.成員方法名()

import java.util.Scanner; //導包

public class DemoScanner {

    public static void main(String[] args) {
        // 2. 創(chuàng)建
        // 備注:System.in代表從鍵盤進行輸入
        Scanner sc = new Scanner(System.in);

        // 3. 獲取鍵盤輸入的int數(shù)字
        int num = sc.nextInt();
        System.out.println("輸入的int數(shù)字是:" + num);

        // 4. 獲取鍵盤輸入的字符串
        String str = sc.next();
        System.out.println("輸入的字符串是:" + str);
    }
}

3. Random 類

Random類用來生成隨機數(shù)字。使用起來也是三個步驟:

  1. 導包
    import java.util.Random;
  2. 創(chuàng)建
    Random r = new Random(); // 小括號當中留空即可
  3. 使用
    獲取一個隨機的int數(shù)字(范圍是int所有范圍畏陕,有正負兩種):int num = r.nextInt()
    獲取一個隨機的int數(shù)字(參數(shù)代表了范圍窒百,左閉右開區(qū)間):int num = r.nextInt(3)
    實際上代表的含義是:[0,3)酥泛,也就是0~2
  • 實列生成100以內(nèi)的隨機整數(shù)

    // 1.導包
    import java.util.Random;
    
    public class DemoRandom {
        public static void main(String[] args) {
          // 2.創(chuàng)建
            Random num_r = new Random();
            for (int i = 0; i < 10; i++) {
                // 3.使用
                int num = num_r.nextInt(100);
                System.out.println("Random number is : " + num);
            }
        }
    }
    
  • 猜數(shù)字小游戲

    import java.util.Random;
    import java.util.Scanner;
    
    public class DemoGuessRandomnum {
        public static void main(String[] args) {
            // 系統(tǒng)產(chǎn)生一個隨機數(shù)1‐100之間的廊驼。
            Random r = new Random();
            int number = r.nextInt(100) + 1;
            int num = 0;
            while (true) {
                // 鍵盤錄入我們要猜的數(shù)據(jù)
                Scanner sc = new Scanner(System.in);
                System.out.println("請輸入你要猜的數(shù)字(1‐100):");
                int guessNumber = sc.nextInt();
                num++;
                // 比較這兩個數(shù)據(jù)(用if語句)
                if (guessNumber > number) {
                    System.out.println("你猜的數(shù)據(jù)" + guessNumber + "大了");
                } else if (guessNumber < number) {
                    System.out.println("你猜的數(shù)據(jù)" + guessNumber + "小了");
                } else {
                    System.out.println("恭喜你,猜中了");
                    System.out.println("一共猜了" + num + "次");
                    System.out.println("游戲結束......");
                    break;
                }
            }
        }
    }
    

4. ArrayList 類

數(shù)組的長度不可以發(fā)生改變熙涤。
但是ArrayList集合的長度是可以隨意變化的。

對于ArrayList<E>來說鞠绰,有一個尖括號<E>代表泛型腰埂。
泛型:也就是裝在集合當中的所有元素,全都是統(tǒng)一的什么類型蜈膨。泛型只能是引用類型屿笼,不能是基本類型。

注意事項:
對于ArrayList集合來說翁巍,直接打印得到的不是地址值驴一,而是內(nèi)容。
如果內(nèi)容是空灶壶,得到的是空的中括號:[]

// 導包

import java.util.ArrayList;

public class DemoArrayList {
    public static void main(String[] args) {
        // 創(chuàng)建
        ArrayList<String> list = new ArrayList<>();
        // 使用
        list.add("床前明月光肝断,");
        System.out.println(list);
        list.add("疑是地上霜。");
        list.add("舉頭望明月例朱,");
        list.add("低頭思故鄉(xiāng)孝情。");
        System.out.println(list);
    }
}

4.1 ArrayList 常用的方法

  • public boolean add(E e):向集合當中添加元素,參數(shù)的類型和泛型一致洒嗤。返回值代表添加是否成功(boolean 類型)。
    備注:對于ArrayList集合來說魁亦,add添加動作一定是成功的渔隶,所以返回值可用可不用。但是對于其他集來說,add添加動作不一定成功间唉。
  • public E get(int index):從集合當中獲取元素绞灼,參數(shù)是索引編號,返回值就是對應位置的元素呈野。
  • public E remove(int index):從集合當中刪除元素低矮,參數(shù)是索引編號,返回值就是被刪除掉的元素被冒。
  • public int size():獲取集合的尺寸長度军掂,返回值是集合中包含的元素個數(shù)。

4.2 存儲的基本數(shù)據(jù)類型

基本類型 包裝類(引用類型昨悼,包裝類都位于java.lang包下)
byte Byte
short Short
int Integer 【特殊】
long Long
float Float
double Double
char Character 【特殊】
boolean Boolean

import java.util.ArrayList;

public class DemoArrayListBasic {

    public static void main(String[] args) {
        ArrayList<String> listA = new ArrayList<>();
        
        // 錯誤寫法蝗锥!泛型只能是引用類型,不能是基本類型
        //ArrayList<int> listB = new ArrayList<>();
        ArrayList<Integer> listC = new ArrayList<>();
        listC.add(100);
        listC.add(200);
        System.out.println(listC); // [100, 200]
        int num = listC.get(1);
        System.out.println("第1號元素是:" + num);
    }
}

  • 實列

    //題目:
    //        用一個大集合存入20個隨機數(shù)字(0-99)率触,然后篩選其中的偶數(shù)元素终议,放到小集合當中。
    //        要求使用自定義的方法來實現(xiàn)篩選葱蝗。
    
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Random;
    
    public class Demo10Test04 {
        public static void main(String[] args) {
            Random r = new Random();
            ArrayList<Integer> list_big = new ArrayList<>();
            ArrayList<Integer> list = new ArrayList<>();
            for (int i = 0; i < 20; i++) {
                list_big.add(r.nextInt(100)) ;
            }
            for (int i = 0; i < list_big.size(); i++) {
                if (list_big.get(i)%2 == 0){
                list.add(list_big.get(i));
                }
            }
            System.out.println(list_big);
            System.out.println(list);
        }
    } 
    

5. String 類

java.lang.String類代表字符串穴张。
API當中說:Java 程序中的所有字符串字面值(如 "abc" )都作為此類的實例實現(xiàn)。
其實就是說:程序當中所有的雙引號字符串两曼,都是String類的對象皂甘。(就算沒有new,也照樣是合愈。)

  1. 字符串的內(nèi)容永不可變叮贩。【重點】
  2. 正是因為字符串不可改變佛析,所以字符串是可以共享使用的益老。
  3. 字符串效果上相當于是char[]字符數(shù)組,但是底層原理是byte[]字節(jié)數(shù)組寸莫。

創(chuàng)建字符串的常見3+1種方式捺萌。
三種構造方法:
public String():創(chuàng)建一個空白字符串,不含有任何內(nèi)容膘茎。
public String(char[] array):根據(jù)字符數(shù)組的內(nèi)容桃纯,來創(chuàng)建對應的字符串。
public String(byte[] array):根據(jù)字節(jié)數(shù)組的內(nèi)容披坏,來創(chuàng)建對應的字符串态坦。
一種直接創(chuàng)建:
String str = "Hello"; // 右邊直接用雙引號

注意:直接寫上雙引號,就是字符串對象棒拂。

  • public boolean equals(Object obj):參數(shù)可以是任何對象伞梯,只有參數(shù)是一個字符串并且內(nèi)容相同的才會給true玫氢;否則返回false。

    如:

    String 常用的四種創(chuàng)造方法

    public class DemoStringBuild {
        public static void main(String[] args) {
            // 使用空參構造
            String str1 = new String();
            System.out.println("str1 = " + str1);
    
            // 使用字符數(shù)組創(chuàng)建
            char[] charArray = {'A', 'B', 'C'};
            String str2 = new String(charArray);
            System.out.println("str2 = " + str2);
    
            // 使用字節(jié)數(shù)組創(chuàng)建
            byte[] byteArray = {88, 89, 90};
            String str3 = new String(byteArray);
            System.out.println("str3 = " + str3);
    
            // 使用""直創(chuàng)建
            String str4 = "直接創(chuàng)建";
          System.out.println("str4 = " + str4);
        }
    }
    

5.1 字符串常量池

字符串常量池:程序當中直接寫上的雙引號字符串谜诫,就在字符串常量池中漾峡。

對于基本類型來說,== 是進行數(shù)值的比較喻旷。
對于引用類型來說生逸,== 是進行【地址值】的比較。

在創(chuàng)建String時使用""創(chuàng)建的字符串放在了字符串常量池中且预,而是new創(chuàng)建的放在隊堆(heap)中

<img src=" http://www.fate-p.cn/img/01_StringConstPool.png" alt="StringConstPool.png" style="zoom: 67%;" />

public class StringPool {
    public static void main(String[] args) {
        String str1 = "abc";
        String str2 = "abc";

        char[] charArray = {'a', 'b', 'c'};
        String str3 = new String(charArray);

        byte[] byteArray = {97, 98 ,99};
        String str4 = new String(byteArray);

        System.out.println(str1 == str2); // true
        System.out.println(str1 == str3); // false
        System.out.println(str2 == str4); // false
    }
}
  • 字符串的內(nèi)容比較槽袄,可以使用兩個方法:

    • public boolean equals(Object obj):參數(shù)可以是任何對象,只有參數(shù)是一個字符串并且內(nèi)容相同的才會給true辣之;否則返回false掰伸。

      如:

      String 常用的四種創(chuàng)造方法

    public class DemoStringBuild {
    public static void main(String[] args) {
    // 使用空參構造
    String str1 = new String();
    System.out.println("str1 = " + str1);

          // 使用字符數(shù)組創(chuàng)建
          char[] charArray = {'A', 'B', 'C'};
          String str2 = new String(charArray);
          System.out.println("str2 = " + str2);
    
          // 使用字節(jié)數(shù)組創(chuàng)建
          byte[] byteArray = {88, 89, 90};
          String str3 = new String(byteArray);
          System.out.println("str3 = " + str3);
    
          // 使用""直創(chuàng)建
          String str4 = "直接創(chuàng)建";
          System.out.println("str4 = " + str4);
      }
    

    }

    
    
    
    - `public boolean equalsIgnoreCase(String str)`:忽略大小寫,進行內(nèi)容比較怀估。
    
    ```java
    public class DemoStringEquals {
      public static void main(String[] args) {
          String str1 = "ABC";
    
          char[] charArray = {'A', 'B', 'C'};
          String str2 = new String(charArray);
    
          byte[] byteArray = {65, 66, 67};
          String str3 = new String(byteArray);
    
          String str4 = "ABc";
          String str5 = null;
    
          System.out.println(str1.equals(str2)); //true
          System.out.println(str3.equals(str2)); //true
          System.out.println(str2.equals(str4)); //false
          System.out.println(str2.equalsIgnoreCase(str3)); //true
          System.out.println("abc".equals(str5)); //推薦 false
          //System.out.println(str5.equals("abc")); //不推薦:報錯狮鸭,空指針異常                  //NullPointerException
      }
    }
    

5.2 String 中的常用方法

5.2.1 與獲取相關的方法
  1. public int length():獲取字符串當中含有的字符個數(shù),拿到字符串長度多搀。
  2. public String concat(String str):將當前字符串和參數(shù)字符串拼接成為返回值新的字符串歧蕉。
  3. public char charAt(int index):獲取指定索引位置的單個字符。(索引從0開始康铭。)
  4. public int indexOf(String str):查找參數(shù)字符串在本字符串當中首次出現(xiàn)的索引位置惯退,如果沒有返回-1值。
public class DemoStringGet {
    public static void main(String[] args) {
        String str1 = "Hello";
        String str2 = "World";
        // 獲取字符串的長度
        System.out.println("str1的長度為:" + str1.length());
        System.out.println("==============");

        // 拼接
        String str3 = str1.concat(str2);
        System.out.println("str1 拼接 str2 = " + str3);
        System.out.println("==============");

        // 獲取字符串索引值位置的單個字符
        System.out.println("str3中的第三個字符為: " + str3.charAt(2));
        System.out.println("==============");

        // 獲取查找的字符串參數(shù)在字符串中的第一次出現(xiàn)的位置,沒找到返回-1
        String str4 = "JAVAJAVAJAVAJAVA";
        System.out.println("AV在字符串str4中第一次出現(xiàn)的索引值為:" + str4.indexOf("AV"));
        System.out.println("PP在字符串str4中第一次出現(xiàn)的索引值為:" + str4.indexOf("PP"));
    }
}
5.2.2 字符串的截取方法
  1. public String substring(int index):截取從參數(shù)位置一直到字符串末尾从藤,返回新字符串催跪。
  2. public String substring(int begin, int end):截取從begin開始,一直到end結束夷野,中間的字符串懊蒸。
    備注:[begin,end),包含左邊悯搔,不包含右邊
public class DemoSubString {
    public static void main(String[] args) {
        String str1 = "HelloWorld";
        String str2 = str1.substring(5);
        System.out.println(str1); // HelloWorld骑丸,原封不動
        System.out.println(str2); // World,新字符串
        System.out.println("================");

        String str3 = str1.substring(4, 7);
        System.out.println(str3); // oWo
        System.out.println("================");
    }
}
5.2.3 字符串與轉換相關的方法
  1. public char[] toCharArray():將當前字符串拆分成為字符數(shù)組作為返回值妒貌。
  2. public byte[] getBytes():獲得當前字符串底層的字節(jié)數(shù)組通危。
  3. public String replace(CharSequence oldString, CharSequence newString):將所有出現(xiàn)的老字符串替換成為新的字符串,返回替換之后的結果新字符串灌曙。
    備注:CharSequence意思就是說可以接受字符串類型菊碟。
public class DemoStringConvert {
    public static void main(String[] args) {
        // 轉換成為字符數(shù)組
        char[] chars = "Hello".toCharArray();
        System.out.println(chars[0]); // H
        System.out.println(chars.length); // 5
        System.out.println("==============");

        // 轉換成為字節(jié)數(shù)組
        byte[] bytes = "abc".getBytes();
        for (int i = 0; i < bytes.length; i++) {
            System.out.println(bytes[i]);
        }
        System.out.println("==============");

        // 字符串的內(nèi)容替換
        String str1 = "How do you do?";
        String str2 = str1.replace("o", "*");
        System.out.println(str1); // How do you do?
        System.out.println(str2); // H*w d* y*u d*?
        System.out.println("==============");

    }
}
5.2.4 字符串的分割方法

public String[] split(String regex):按照參數(shù)的規(guī)則,將字符串切分成為若干部分在刺。

注: regex 使用的為正則表達式進行切割

public class DemoStringSplit {
    public static void main(String[] args) {
        
        String str = "aaa,AAA,ccc,DDD";
        String[] array1 = str.split(",");
        for (int i = 0; i < array1.length; i++) {
            System.out.println(array1[i]);
        }
    }
}

附:正則表達式表

字符 描述
\ 將下一個字符標記為一個特殊字符框沟、或一個原義字符藏古、或一個向后引用增炭、或一個八進制轉義符忍燥。例如,“n"匹配字符"n"隙姿。"\n"匹配一個換行符梅垄。串行"\\"匹配"\"而"\("則匹配"("。
^ 匹配輸入字符串的開始位置输玷。如果設置了RegExp對象的Multiline屬性队丝,^也匹配“\n"或"\r"之后的位置。
$ 匹配輸入字符串的結束位置欲鹏。如果設置了RegExp對象的Multiline屬性机久,$也匹配“\n"或"\r"之前的位置。
* 匹配前面的子表達式零次或多次赔嚎。例如膘盖,zo能匹配“z"以及"zoo"。等價于{0,}尤误。
+ 匹配前面的子表達式一次或多次侠畔。例如,“zo+"能匹配"zo"以及"zoo"损晤,但不能匹配"z"软棺。+等價于{1,}。
? 匹配前面的子表達式零次或一次尤勋。例如喘落,“do(es)?"可以匹配"does"或"does"中的"do"。?等價于{0,1}最冰。
{n} n是一個非負整數(shù)瘦棋。匹配確定的n次。例如锌奴,“o{2}"不能匹配"Bob"中的"o"兽狭,但是能匹配"food"中的兩個o。
{n,} n是一個非負整數(shù)鹿蜀。至少匹配n次箕慧。例如,“o{2,}"不能匹配"Bob"中的"o"茴恰,但能匹配"foooood"中的所有o颠焦。"o{1,}"等價于"o+"。"o{0,}"則等價于"o*"往枣。
{n,m} mn均為非負整數(shù)伐庭,其中n<=m粉渠。最少匹配n次且最多匹配m次。例如圾另,“o{1,3}"將匹配"fooooood"中的前三個o霸株。"o{0,1}"等價于"o?"。請注意在逗號和兩個數(shù)之間不能有空格集乔。
? 當該字符緊跟在任何一個其他限制符(,+,?去件,{n},{n,}扰路,{n,m*})后面時尤溜,匹配模式是非貪婪的。非貪婪模式盡可能少的匹配所搜索的字符串汗唱,而默認的貪婪模式則盡可能多的匹配所搜索的字符串宫莱。例如,對于字符串“oooo"哩罪,"o+?"將匹配單個"o"授霸,而"o+"將匹配所有"o"。
. 匹配除“\n"之外的任何單個字符识椰。要匹配包括"\n"在內(nèi)的任何字符绝葡,請使用像"(.|\n)"的模式。
(pattern) 匹配pattern并獲取這一匹配腹鹉。所獲取的匹配可以從產(chǎn)生的Matches集合得到藏畅,在VBScript中使用SubMatches集合,在JScript中則使用0…9屬性功咒。要匹配圓括號字符愉阎,請使用“\("或"\)"。
(?:pattern) 匹配pattern但不獲取匹配結果力奋,也就是說這是一個非獲取匹配榜旦,不進行存儲供以后使用。這在使用或字符“(|)"來組合一個模式的各個部分是很有用景殷。例如"industr(?:y|ies)"就是一個比"industry|industries"更簡略的表達式溅呢。
(?=pattern) 正向肯定預查,在任何匹配pattern的字符串開始處匹配查找字符串猿挚。這是一個非獲取匹配咐旧,也就是說,該匹配不需要獲取供以后使用绩蜻。例如铣墨,“Windows(?=95|98|NT|2000)"能匹配"Windows2000"中的"Windows",但不能匹配"Windows3.1"中的"Windows"办绝。預查不消耗字符伊约,也就是說姚淆,在一個匹配發(fā)生后,在最后一次匹配之后立即開始下一次匹配的搜索屡律,而不是從包含預查的字符之后開始腌逢。
(?!pattern) 正向否定預查,在任何不匹配pattern的字符串開始處匹配查找字符串疹尾。這是一個非獲取匹配上忍,也就是說,該匹配不需要獲取供以后使用纳本。例如“Windows(?!95|98|NT|2000)"能匹配"Windows3.1"中的"Windows",但不能匹配"Windows2000"中的"Windows"腋颠。預查不消耗字符繁成,也就是說,在一個匹配發(fā)生后淑玫,在最后一次匹配之后立即開始下一次匹配的搜索巾腕,而不是從包含預查的字符之后開始
(?<=pattern) 反向肯定預查,與正向肯定預查類擬絮蒿,只是方向相反尊搬。例如,“(?<=95|98|NT|2000)Windows"能匹配"2000Windows"中的"Windows"土涝,但不能匹配"3.1Windows"中的"Windows"佛寿。
(?<!pattern) 反向否定預查,與正向否定預查類擬但壮,只是方向相反冀泻。例如“(?"能匹配"3.1Windows"中的"Windows",但不能匹配"2000Windows"中的"Windows`"蜡饵。
x|y 匹配x或y弹渔。例如,“z|food"能匹配"z"或"food"溯祸。"(z|f)ood"則匹配"zood"或"food"肢专。
[xyz] 字符集合。匹配所包含的任意一個字符焦辅。例如博杖,“[abc]"可以匹配"plain"中的"a"。
[^xyz] 負值字符集合氨鹏。匹配未包含的任意字符欧募。例如,“[^abc]"可以匹配"plain"中的"p"仆抵。
[a-z] 字符范圍跟继。匹配指定范圍內(nèi)的任意字符种冬。例如,“[a-z]"可以匹配"a"到"z"范圍內(nèi)的任意小寫字母字符舔糖。
[^a-z] 負值字符范圍娱两。匹配任何不在指定范圍內(nèi)的任意字符。例如金吗,“[^a-z]"可以匹配任何不在"a"到"z"范圍內(nèi)的任意字符十兢。
\b 匹配一個單詞邊界,也就是指單詞和空格間的位置摇庙。例如旱物,“er\b"可以匹配"never"中的"er",但不能匹配"verb"中的"er"卫袒。
\B 匹配非單詞邊界宵呛。“er\B"能匹配"verb"中的"er"夕凝,但不能匹配"never"中的"er"宝穗。
\cx 匹配由x指明的控制字符。例如码秉,\cM匹配一個Control-M或回車符逮矛。x的值必須為A-Z或a-z之一。否則转砖,將c視為一個原義的“c"字符须鼎。
\d 匹配一個數(shù)字字符。等價于[0-9]堪藐。
\D 匹配一個非數(shù)字字符莉兰。等價于[^0-9]。
\f 匹配一個換頁符礁竞。等價于\x0c和\cL糖荒。
\n 匹配一個換行符。等價于\x0a和\cJ模捂。
\r 匹配一個回車符捶朵。等價于\x0d和\cM。
\s 匹配任何空白字符狂男,包括空格综看、制表符、換頁符等等岖食。等價于[ \f\n\r\t\v]红碑。
\S 匹配任何非空白字符。等價于[^ \f\n\r\t\v]。
\t 匹配一個制表符析珊。等價于\x09和\cI羡鸥。
\v 匹配一個垂直制表符。等價于\x0b和\cK忠寻。
\w 匹配包括下劃線的任何單詞字符惧浴。等價于“[A-Za-z0-9_]"。
\W 匹配任何非單詞字符奕剃。等價于“[^A-Za-z0-9_]"衷旅。
\xn 匹配n,其中n為十六進制轉義值纵朋。十六進制轉義值必須為確定的兩個數(shù)字長柿顶。例如,“\x41"匹配"A"倡蝙。"\x041"則等價于"\x04&1"九串。正則表達式中可以使用ASCII編碼。.
*num* 匹配num寺鸥,其中num是一個正整數(shù)。對所獲取的匹配的引用品山。例如胆建,“(.)\1"匹配兩個連續(xù)的相同字符。
*n* 標識一個八進制轉義值或一個向后引用肘交。如果*n之前至少n個獲取的子表達式笆载,則n為向后引用。否則涯呻,如果n為八進制數(shù)字(0-7)凉驻,則n*為一個八進制轉義值。
*nm* 標識一個八進制轉義值或一個向后引用复罐。如果*nm之前至少有nm個獲得子表達式涝登,則nm為向后引用。如果*nm之前至少有n個獲取效诅,則n為一個后跟文字m的向后引用胀滚。如果前面的條件都不滿足,若nm均為八進制數(shù)字(0-7)乱投,則*nm將匹配八進制轉義值nm*咽笼。
*nml* 如果n為八進制數(shù)字(0-3),且m和l均為八進制數(shù)字(0-7)戚炫,則匹配八進制轉義值nml剑刑。
\un 匹配n,其中n是一個用四個十六進制數(shù)字表示的Unicode字符双肤。例如施掏,\u00A9匹配版權符號(?)钮惠。

5.3 字符串的簡單練習

題目:
鍵盤輸入一個字符串,并且統(tǒng)計其中各種字符出現(xiàn)的次數(shù)其监。
種類有:大寫字母萌腿、小寫字母、數(shù)字抖苦、其他


import java.util.Scanner;

public class DemoStringtest {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("請輸入一個字符串");
        String input_str = sc.next();

        int countUpper = 0, countLower = 0, countNumber = 0, countOther = 0;
        char[] charArray = input_str.toCharArray();
        for (int i = 0; i < charArray.length; i++) {
            if (charArray[i] >= '0' && charArray[i] <= '9') {
                countNumber++;
            } else if (charArray[i] >= 'A' && charArray[i] <= 'Z') {
                countUpper++;
            } else if (charArray[i] >= 'a' && charArray[i] <= 'z') {
                countLower++;
            } else {
                countOther++;
            }
        }
        System.out.println("大寫字母有:" + countUpper);
        System.out.println("小寫字母有:" + countLower);
        System.out.println("數(shù)字有:" + countNumber);
        System.out.println("其他字符有:" + countOther);
    }
}

6 Static 類

  • 在一個類中如果一個成員變量使用了static關鍵字毁菱,那么這個變量不再屬于對象自己,而是屬于所在的類锌历。多個對象共享同一份數(shù)據(jù)贮庞。

  • 一旦使用static修飾成員方法,那么這就成為了靜態(tài)方法究西。靜態(tài)方法不屬于對象窗慎,而是屬于類的。

    對于靜態(tài)的成員變量卤材、靜態(tài)的成員方法都推薦使用類名稱進行調用遮斥。
    靜態(tài)變量:類名稱.靜態(tài)變量
    靜態(tài)方法:類名稱.靜態(tài)方法()

    注意事項:

    1. 靜態(tài)不能直接訪問非靜態(tài)。
      原因:因為在內(nèi)存當中是【先】有的靜態(tài)內(nèi)容扇丛,【后】有的非靜態(tài)內(nèi)容术吗。
    2. 靜態(tài)方法當中不能用this
      原因:this代表當前對象帆精,靜態(tài)方法使用類名稱進行調用较屿。
  • 靜態(tài)代碼塊的格式:

    static {
        // 靜態(tài)代碼塊的內(nèi)容
    }
    

    特點:

    ? 當?shù)谝淮斡玫奖绢悤r,靜態(tài)代碼塊執(zhí)行唯一的一次卓练。
    ? 靜態(tài)內(nèi)容總是優(yōu)先于非靜態(tài)隘蝎,所以靜態(tài)代碼塊比構造方法先執(zhí)行。

    靜態(tài)代碼塊的典型用途:
    用來一次性地對靜態(tài)成員變量進行賦值襟企。

7 Arrays 工具類

java.util.Arrays是一個與數(shù)組相關的工具類嘱么,里面提供了大量靜態(tài)方法,用來實現(xiàn)數(shù)組常見的操作整吆。

public static String toString(數(shù)組):將參數(shù)數(shù)組變成字符串(按照默認格式:[元素1, 元素2, ...])
public static void sort(數(shù)組):按照默認升序(從小到大)對數(shù)組的元素進行排序拱撵。

備注:

  1. 如果是數(shù)值,sort 默認按照升序從小到大
  2. 如果是字符串表蝙,sort 默認按照字母升序
  3. 如果是自定義的類型拴测,那么這個自定義的類需要有Comparable或者Comparator接口的支持。
import java.util.Arrays;

public class DemoArrays {
    public static void main(String[] args) {
        int[] intArray = {1, 2, 5, 4, 3, 9, 8};
        // Arrays.toString() 將數(shù)組轉為字符串
        System.out.println(Arrays.toString(intArray));

        // Arrays.sort() 將數(shù)組按照降序排列
        Arrays.sort(intArray);
        System.out.println(Arrays.toString(intArray));
    }
}

8 Math 工具類

java.util.Math類是數(shù)學相關的工具類府蛇,里面提供了大量的靜態(tài)方法集索,完成與數(shù)學運算相關的操作。

public static double abs(double num):獲取絕對值。有多種重載务荆。
public static double ceil(double num):向上取整妆距。
public static double floor(double num):向下取整。
public static long round(double num):四舍五入函匕。

Math.PI代表近似的圓周率常量(double)娱据。

public class DemoMath {
    public static void main(String[] args) {
        // 取絕對值
        System.out.println(Math.abs(3.14));
        System.out.println(Math.abs(-320.56));
        System.out.println("================");

        // 向上取整(取大)
        System.out.println(Math.ceil(3.9)); // 4.0
        System.out.println(Math.ceil(-3.1)); // -3
        System.out.println(Math.ceil(3.0)); // 3.0
        System.out.println("================");

        // 向下取整(取小)
        System.out.println(Math.floor(30.1)); // 30.0
        System.out.println(Math.floor(-30.9)); // -31.0
        System.out.println(Math.floor(31.0)); // 31.0
        System.out.println("================");
        // 四舍五入(取整)
        System.out.println(Math.round(20.4)); // 20
        System.out.println(Math.round(10.5)); // 11

        // π
        System.out.println(Math.PI);
    }
}
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末盅惜,一起剝皮案震驚了整個濱河市中剩,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌抒寂,老刑警劉巖结啼,帶你破解...
    沈念sama閱讀 221,695評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異屈芜,居然都是意外死亡郊愧,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評論 3 399
  • 文/潘曉璐 我一進店門井佑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來属铁,“玉大人,你說我怎么就攤上這事躬翁『煅。” “怎么了?”我有些...
    開封第一講書人閱讀 168,130評論 0 360
  • 文/不壞的土叔 我叫張陵姆另,是天一觀的道長。 經(jīng)常有香客問我坟乾,道長迹辐,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,648評論 1 297
  • 正文 為了忘掉前任甚侣,我火速辦了婚禮明吩,結果婚禮上,老公的妹妹穿的比我還像新娘殷费。我一直安慰自己印荔,他們只是感情好,可當我...
    茶點故事閱讀 68,655評論 6 397
  • 文/花漫 我一把揭開白布详羡。 她就那樣靜靜地躺著仍律,像睡著了一般。 火紅的嫁衣襯著肌膚如雪实柠。 梳的紋絲不亂的頭發(fā)上水泉,一...
    開封第一講書人閱讀 52,268評論 1 309
  • 那天,我揣著相機與錄音,去河邊找鬼草则。 笑死钢拧,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的炕横。 我是一名探鬼主播源内,決...
    沈念sama閱讀 40,835評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼份殿!你這毒婦竟也來了膜钓?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,740評論 0 276
  • 序言:老撾萬榮一對情侶失蹤伯铣,失蹤者是張志新(化名)和其女友劉穎呻此,沒想到半個月后陆错,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體啤斗,經(jīng)...
    沈念sama閱讀 46,286評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,375評論 3 340
  • 正文 我和宋清朗相戀三年雀费,在試婚紗的時候發(fā)現(xiàn)自己被綠了放前。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片忿磅。...
    茶點故事閱讀 40,505評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖凭语,靈堂內(nèi)的尸體忽然破棺而出葱她,到底是詐尸還是另有隱情,我是刑警寧澤似扔,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布吨些,位于F島的核電站,受9級特大地震影響炒辉,放射性物質發(fā)生泄漏豪墅。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,873評論 3 333
  • 文/蒙蒙 一黔寇、第九天 我趴在偏房一處隱蔽的房頂上張望偶器。 院中可真熱鬧,春花似錦缝裤、人聲如沸屏轰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽霎苗。三九已至,卻和暖如春搀崭,著一層夾襖步出監(jiān)牢的瞬間叨粘,已是汗流浹背猾编。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留升敲,地道東北人答倡。 一個月前我還...
    沈念sama閱讀 48,921評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像驴党,于是被迫代替她去往敵國和親瘪撇。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,515評論 2 359