程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 大話java基礎知識一之為什麼java的主函數入口必須是public static void

大話java基礎知識一之為什麼java的主函數入口必須是public static void

編輯:關於JAVA

大話java基礎知識一之為什麼java的主函數入口必須是public static void。本站提示廣大學習愛好者:(大話java基礎知識一之為什麼java的主函數入口必須是public static void)文章只能為提供參考,不一定能成為您想要的結果。以下是大話java基礎知識一之為什麼java的主函數入口必須是public static void正文


為什麼java的主函數入口必須是public static void main (String[] args);

 

很多寫javaEE好幾年的程序員經常會記得java的主函數就是這麼寫的,但實際上為什麼這麼寫大都已經忘記。

由於每天被各種框架,各種技術包圍,所以出現了一種知道怎麼用但不知道為什麼這麼用的情況。

 

java的主函數是一個java基礎知識的大綜合,在面試中,從這裡就能看出程序員的基礎知識掌握程度。

 

一、是不是所有的類都可以有主方法?如果是,為什麼?如果不是,那麼在什麼類中可以有主方法。

首先我們可以看到程序都是寫在一個以.java結尾的文檔中的,但是一個.java的文檔並不是只能存在一個類,它裡面可以存在很多類

但是並不是所有的類都可以有主方法的。只有在此類名與文檔名相同的情況下,才可以在此類中存在主函數。如果文件中只有一個類,文件名必須與類名一致

 

二、為什麼主函數要寫public

這是java修飾符的知識,java中共有四種訪問限制修飾符:private,public,protected,default

private:私有,內部訪問
public:共有,都可以訪問
default:同一個包可以訪問
protected:同一個包或者子類可以訪問

修飾符 同類 同包 子類 不同包 public √ √ √ √ protected √ √ √   default √ √     private √      

需要注意的是,由於訪問限制修飾符的存在,所以會有一些默認的規則,保證jvm的安全

1.java保存的文件名必須與類名一致;
2.如果文件中只有一個類,文件名必須與類名一致;
3.一個Java文件中只能有一個public類;
4.如果文件中不止一個類,文件名必須與public類名一致;
5.如果文件中不止一個類,而且沒有public類,文件名可與任一類名一致。

而主函數必須用public修飾,由於一個文件中只能有一個public,所以需要讓主函數使用public作為類的對外接口,供jvm使用。

 

三、主函數的static

java的static是一個關鍵字,也是作為java類中方法的修飾符。

static表示“全局”或者“靜態”的意思,用來修飾成員變量和成員方法,也可以形成靜態static代碼塊,但是Java語言中沒有全局變量的概念。

1、static變量
 按照是否靜態的對類成員變量進行分類可分兩種:一種是被static修飾的變量,叫靜態變量或類變量;另一種是沒有被static修飾的變量,叫實例變量。

 用public修飾的static成員變量和成員方法本質是全局變量和全局方法,當聲明它類的對象時,不生成static變量的副本,而是類的所有實例共享同一個static變量。可用類名直接訪問,一旦靜態變量被修改,其他實例均對修改可見,故線程不安全。因為static變量獨立於任何實例,因此static變量必須被實現,而不能是抽象的abstract。在接口中,static變量默認被限制位static final修飾

2、static方法

  靜態方法可以直接通過類名調用,不需要創建實例,因此靜態方法中不能用this和super關鍵字,不能直接訪問當前類的實例變量和實例方法(因為它們都還沒被加載)。只能訪問當前類的靜態成員變量和成員方法。因為static方法獨立於任何實例,因此static方法必須被實現,而不能是抽象的abstract。

3、static代碼塊

 static代碼塊也叫靜態代碼塊,是在類中獨立於類成員的static語句塊,可以有多個,位置可以隨便放,它不在任何的方法體內,JVM加載類時會執行這些靜態的代碼塊,如果static代碼塊有多個,JVM將按照它們在類中出現的先後順序依次執行它們,每個代碼塊僅僅只會被執行一次。

所以java的主函數入口被修飾成static以便在不用創建類的實例時,就可以調用。

 

四、void無返回值的

這裡是方法的副作用和返回值類型

一個方法的執行,如果在返回一個值之外還導致某些外部“狀態”發生變化,則稱該方法產生了副作用。這裡所謂“狀態”發生變化,可以是實例域或靜態變量被修改

 1.沒有返回值的方法必然有副作用,除非它的方法體是空的或者方法沒有意義。所以,沒有返回值的方法、有返回值但有副作用的方法稱為過程

 2.有返回值而且沒有副作用的方法稱為函數(function)。

由於java的主函數是棧中最底層的函數,所以並不存在能夠接收的值,所以使用void,無返回的

 

五、main方法名(注意是main,很多初學者都會寫成mian,這是不一樣的)

main是java主方法的方法名,是不能被改變的,就算錯了一個字也是不可以運行的。

由於java中有關鍵字(保留字)存在的機制,所以main也類似與一個關鍵字(但不是),jvm運行時,只會找符合要求的main單詞,所以將main改變後,jvm將找不到主入口,方法將不能執行。當然,main也可以作為方法名存在。也可以作為變量名存在。

在一個類中可以存在多個main方法,這是方法的重載。在名字相同的同時,必須有不同的參數。不允許參數完全相同而只是返回值不同的情況出現。無法進行編譯,程序在eclips中顯示錯誤

 

六、String數組的參數

java語言是可以在命令行進行編輯執行的(我估計應該沒人在這裡玩吧)。這裡可以了解到關於java的基本類型和應用類型。

8種基本類型 

一、4種整型 
    byte  1字節   -128——127 

    short 2 字節 -32,768 —— 32,767 

    int   4 字節  -2,147,483,648 ——2,147,483,647(超過20億) 

    long  8 字節   -9,223,372,036,854,775,808——9,223,372,036854,775,807 

    注釋:java中所有的數據類所占據的字節數量與平台無關,java也沒有任何無符號類型 

二、 2種浮點類型 
    float    4 字節 32位IEEE 754單精度(有效位數 6 – 7位) 

    double   8 字節 64位IEEE 754雙精度(有效位數15位) 

三、1種Unicode編碼的字符單元 
    char    2 字節  整個Unicode字符集 

四、1種真值類型 
boolean    1 位 True或者false

3種引用類型 

類class 

接口interface 

數組array

我們在命令行輸入是不管是什麼字符都是一個字符串類型,如數字1可以是字符串“1”等等。所以用字符串的數組類型來裝

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved