Java中靜態關鍵字的使用方法介紹三

1.1      靜態方法main()的解析

1.1.1   靜態方法main()的語句組成

在我們使用java語言進行編程中,常常用到要一個main()函數,這是一個程序的入口,是整個程序中最爲重要的部分之一。通常,main函數按照以下格式進行書寫。

public static void main(String[] args) {
}

         我們發現main()函數前面存在靜態修飾符Static那說明main函數就是一個靜態方法。那麼這個main函數語句到底由什麼組成呢?下面我們就來分析一下main函數語句的組成。

1、  關鍵字public,這代表main函數的權限是最大的“public”

2、  關鍵字static,這代表main函數是一個靜態方法。

3、  關鍵字void,這代表main函數沒有返回值。

4、  main,這代表函數名,不可更改。更改後就不在是主函數,而是自定義方法。

5、  String[],這代表main函數的參數類型是字符型數組

6、  args,這是參數名,也是主函數中唯一能夠修改的。

1.1.2   args到底是什麼?

main()主函數在運行過程中,Java虛擬機會往main()主函數傳遞參數,那麼java虛擬機到底傳遞了什麼樣的參數?爲了弄清楚這個問題,我們需要修改一下main主函數,還是以Car類作爲例子:

public class Car {
public static void main(String[] args) {
              System.out.println(args);
              System.out.println("args數組長度爲:"+args.length);
     }
}

運行結果如下:

         [Ljava.lang.String;@98385c

args數組長度爲:0

         現在來分析一下運行結果,第一行中“[Ljava.lang.String”表示對象的類型爲字符串數組,“@98385c” 表示對象的哈希值。第二行表示args數組的長度爲0。也就是說java虛擬機向main函數中傳遞了一個數組爲長度爲0的字符串數組。

1.2      靜態方法怎麼樣調用方法?

在前面我們介紹了靜態方法main(),在靜態方法main()中常常需要調用各種方法,這其中包括靜態方法和非靜態方法。對於這兩種方法,靜態方法main()如何調用。當我們需要調用的方法是靜態方法時,非常簡單,直接調用即可,以下面代碼爲例:

public class Car {
        public static void stop() {
                   System.out.println("汽車停了下來。");
         }
public staticvoid main(String[] args) {
              stop();
     }
}

運行結果如下:

汽車停了下來。

         如果main()函數調用非靜態方法時,應該如何使用?首先我們將靜態stop()改爲非靜態方法,看看會出現什麼情況。代碼如下:

public class Car {
        public void stop() {
                   System.out.println("汽車停了下來。");
         }
public staticvoid main(String[] args) {
              stop();
     }
}

         編譯時會發現報錯。

         報錯內容:Cannotmake a static reference to the non-static method stop() from the type Car

         這說明當一個方法不是靜態方法時,靜態方法main()不能夠直接調用。那麼該如何調用非靜態方法呢?我們將代碼按照以下方式修改。

public class Car {
        public void stop() {
                   System.out.println("汽車停了下來。");
         }
public staticvoid main(String[] args) {
                   newCar().stop();
         }
}

         運行結果如下:

汽車停了下來。

這說明,靜態方法main()可以通過構建對象來調用非靜態方法。那麼如果不是main()主函數還是一般靜態方法是不是一樣可以調用非靜態方法呢?我們以一下代碼爲例。

public class Car {
         voidrun(){
                   System.out.println("汽車開動!");
         }
        public static void stop() {
                   System.out.println("汽車停了下來。");
                   newCar().run();
         }
public static void main(String[] args) {
                   stop();
         }
}

運行結果如下:

汽車停了下來。

汽車開動!

從運行結果我們可以得知,普通靜態方法與main()方法通過一樣的方式來調用非靜態方法。


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