java基礎打卡21

bubupp發表於2020-10-29

字串方法練習

  • 練習一
    定義一個方法,把陣列{1,2,3}按照指定格式拼接成一個字串。格式參照如下:[word1#word2#word3]。
分析:
1. 首先準備一個int[]陣列,內容是:1、2、3
2. 定義一個方法,用來將陣列變成字串
三要素
返回值型別:String
方法名稱:fromArrayToString
引數列表:int[]
3. 格式:[word1#word2#word3]
用到:for迴圈、字串拼接、每個陣列元素之前都有一個word字樣、分隔使用的是#、區分一下是不是最後一個
4. 呼叫方法,得到返回值,並列印結果字串

public static void main(String[] args) {
        int[] array = {1, 2, 3};

        String result = fromArrayToString(array);
        System.out.println(result);
    }

    public static String fromArrayToString(int[] array) {
        String str = "[";
        for (int i = 0; i < array.length; i++) {
            if (i == array.length - 1) {
                str += "word" + array[i] + "]";
            } else {
                str += "word" + array[i] + "#";
            }
        }
        return str;
    }
  • 練習二
    鍵盤輸入一個字串,並且統計其中大寫字母字元出現的次數。
思路:
1. 既然用到鍵盤輸入,肯定是Scanner
2. 鍵盤輸入的是字串,那麼:String str = sc.next();
3. 定義一個變數,代表大寫字母字元的出現次數。
4. 需要對字串一個字、一個字檢查,String-->char[],方法就是toCharArray()
5. 遍歷char[]字元陣列,對當前字元的種類進行判斷,並且用一個變數進行++動作。
6. 列印輸出一個變數,代表大寫字母字元出現次數。

public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("請輸入一個字串:");
        String input = sc.next();//獲取鍵盤輸入的一個字串

        int countUpper = 0;//大寫字母
       
        char[] charArray = input.toCharArray();
        for (int i = 0; i < charArray.length; i++) {
            char ch = charArray[i];//當前單個字元
            if ('A' <= ch && ch <= 'Z') {
                countUpper++;
            } 
        }

        System.out.println("大寫字母有:" + countUpper);
    }

靜態static關鍵字

  • 修飾成員變數
    如果一個成員變數使用了static關鍵字,那麼這個變數不再屬於物件自己,而是屬於所在的類。多個物件共享同一份資料。
  • 修飾成員方法
    一旦使用static修飾成員方法,那麼這就成為了靜態方法。靜態方法不屬於物件,而是屬於類的。
如果沒有static關鍵字,那麼必須首先建立物件,然後通過物件才能使用它。
例如:	MyClass obj = new MyClass();
		obj.method();
如果有了static關鍵字,那麼不需要建立物件,直接就能通過類名稱來使用它。

無論是成員變數,還是成員方法。如果有了static,都推薦使用類名稱進行呼叫。
靜態變數:類名稱.靜態變數		Student.room
靜態方法:類名稱.靜態方法()	MyClass.methodStatic();

注意事項:
1. 靜態不能直接訪問非靜態。
原因:因為在記憶體當中是【先】有的靜態內容,【後】有的非靜態內容。
“先人不知道後人,但是後人知道先人。”
2. 靜態方法當中不能用this。
原因:this代表當前物件,通過誰呼叫的方法,誰就是當前物件。
3. 對於本類當中的靜態方法,可以省略類名稱
例如:	myMethod();
        Demo01StaticMethod.myMethod(); // 完全等效

按住alt再進行選中	可以實現跨區選中
  • 記憶體分佈
    靜態成員變數儲存在方法區中的靜態區。
根據類名稱訪問靜態成員變數的時候,全程【和物件沒關係,只和類有關係】。

靜態程式碼塊

靜態程式碼塊的格式是:
	public class 類名稱 {
	    static {
	        //靜態程式碼塊的內容
	    }
	}

特點:當第一次用到本類時,靜態程式碼塊執行唯一的一次。
靜態內容總是優先於非靜態,所以靜態程式碼塊比構造方法先執行。

靜態程式碼塊的典型用途:
用來一次性地對靜態成員變數進行賦值。