Java se 複習05

土豆兒爺爺發表於2020-09-25
  1. 關鍵字static:某些特定資料在記憶體空間內只有一份
      使用static修飾屬性和方法:多個物件共享同一個靜態變數,當通過某一個物件修改靜態變數時,每一個物件的靜態屬性都會修改。

          ①隨著類的載入而載入;
    
          ②靜態變數要早於物件的建立;
    
          ③由於類只載入一次,靜態變數也只載入一次;
    
          ④靜態方法中只能呼叫靜態屬性或方法;(和生命週期有關)
    
          ⑤在靜態方法中不能使用this和super關鍵字;
    
  2. 關於main方法的使用。
      ①作為程式的入口;
      ②是一個普通的靜態方法;
      ③可利用main()方法中的形參實現和控制檯的互動。

怎麼利用eclipse實現第三條?

先編譯程式碼,程式碼如下

public class MainTest {
  public static void main(String[] args) {
	     //輸出args中的值
	  for(int i=0;i<args.length;i++){
	     System.out.println("*****"+args[i]);
	  }
}
}

run as Configurations
在這裡插入圖片描述
找到剛才編譯的原始檔,選擇arguments引數,在program arguments中填入引數
在這裡插入圖片描述
引數可以加雙引號也可以不加,預設都是string型別資料,每個引數之間用空格隔開。
在這裡插入圖片描述
輸出結果:
在這裡插入圖片描述

怎麼使用命令列實現第三條?

執行時直接在後面加上引數
在這裡插入圖片描述
注:由於預設main()中形參是String型別,如果想要獲取int型資料可以通過Integer.paraseInt();構造獲得。
3. new一個物件的載入過程。
   ①載入所有類(先父類後子類)的靜態程式碼塊;
   ②載入非靜態程式碼塊;
   ③載入構造器;
(②③的步驟的載入一個類完成後下一個類才會載入)

     public class Instantiate {
    static{
        System.out.println("Instantiate靜態程式碼塊初始");
    }
    {
        System.out.println("Instantiate普通程式碼塊初始");
    }
    public Instantiate(){
        System.out.println("Instantiate無參構造初始");
    }
    public Instantiate(String s){
        System.out.println("Instantiate有參構造初始");
    }
}

class Instantiate_1 extends Instantiate{
    static {
        System.out.println("Instantiate_1靜態程式碼塊初始");
    }
    {
        System.out.println("Instantiate_1普通程式碼塊初始");
    }
    public Instantiate_1(){
        //呼叫父類有參構造
        super("Test");
        System.out.println("Instantiate_1無參構造初始");
    }
}
class InstantiateTest{
    public static void main(String args[]){
        new Instantiate_1();
    }
}

輸出結果:
在這裡插入圖片描述

相關文章