如何简单运行Java程序
本章開始,我們需要下苦功打基礎,目標是完成一個會員管理系統哦!如何運行Java程序,用java命令即可,一定不要忘了寫main方法哦,一個java文件里面可以寫很多個class。
步驟 1 java文件等于java類嗎
問大家一個問題,你認為java文件是java類嗎?
你可以用記事本寫一個Demo.java的文本文件,編碼是ansi,如果你的windows系統是簡體中文的,那么所謂的ansi,其實就和GBK是一樣的。
在這個文件里,你可以寫很多的class,但是聲明為public的class只能有一個。
這就說明,java文件不等于java類。java文件可以是一大堆class的集合體,每一個class都可以通過new關鍵字,或者反射變成實例對象。所以,你也可以說,一個java文件就是一個程序,這個程序如果跑起來,就是一大堆對象的集合。
每一個對象可以互相通信,各司其職,共同完成程序的任務。
有點繞,反射又是什么鬼,看不懂?沒關系,下面我們會一步一步,慢慢學習到的?,F在,請放輕松。
步驟 2 java文件本質上就是txt文本
現在,我們找一個地方,比如 **D:\java18 ,**創建一個普通的文本文件,后綴名改成.java。如果不知道怎么改后綴名,文件框左上角點擊組織,選擇文件夾和搜索選項,把隱藏文件擴展名的選項去掉就可以啦。
然后,創建一個Demo.java。
這就是一個java文件了,如果到這一步沒有問題,那么恭喜你,你已經向前邁進了一大步!
步驟 3 javac命令
java文件是無法直接執行的,我們需要借助Java虛擬機來執行java程序。而java虛擬機也無法直接運行運行.java的文件,我們需要把java文件編譯成.class文件,這個編譯的過程,就是用javac命令。之前已經安裝好了環境變量,所以這邊可以直接調用javac命令吧。
結果,文件夾里面啥也沒發生?為什么,因為我的Demo.java文件本來就是一個空文件啊,里面啥也沒有。
步驟 4 什么是Java虛擬機?
我們在上一節下載了JDK的安裝包,解壓后又配置了環境變量。這個時候,我們可以說,我們的電腦上已經安裝了Java虛擬機,也叫做JVM。
說到底,Java虛擬機就是一個軟件,和你電腦上的QQ是一回事。這個軟件的作用,就是編譯和運行某一個.java文件。
就是這么回事啦,虛擬機并不神秘,在操作系統的角度看來,它只是一個普通進程。
下面給出一張JVM的圖:
步驟 5 java里面要寫什么?
上面那張圖有點復雜?沒關系,現在我們只需要明白,JVM可以編譯和運行某一個java文件,比如Demo.java。
剛才我們使用了javac命令,雖然啥也沒發生,但是cmd窗口也沒有報錯,這是好事,這說明編譯成功了。
java文件里面要寫什么呢?答案是很簡單的,那就是我們要寫class,即java類。我們先考慮一下,做一個會員管理系統,需要什么?會員的前提是客戶,會員就是VIP客戶。這就引入了兩個概念,分別是客戶和會員。每一個客戶都是潛在的會員,這就是業務需求。
不管是客戶還是會員,都是我們日常生活的概念,現在我們要做的事情,把這兩個概念都放到程序中去。我們用記事本打開Demo.java,輸入
class是java的關鍵字,代表要聲明一個類,右邊緊跟著一個大小字母開頭的單詞,就是類名稱,然后是一對{},這是java類的主體。現在,重復javac命令。
你會發現多了兩個class文件,編譯成功了,這個是java虛擬機的功勞。
步驟 6 怎么運行class文件?
我們要運行java程序,其實就是用java命令執行某一個class文件,運行的前提是,這個class文件的“前身” – 即java文件,它里面的class有一個main方法。我們在Demo.java中再加一個App類。
class App {public static void main(String[] args){System.out.println("程序啟動了...");} }**重新javac一下,**注意每次修改了Demo.java,都要重新編譯,確保class文件是最新版本。
這時候你會發現又多了一個App.class,我們用java命令去運行它。
這樣就執行成功了!
步驟 7 javac的時候發生了什么?
javac的時候,JVM會啟動java的編譯器程序,對指定擴展名的**.java文件進行解析,然后按照一定的規則編譯成字節碼,生成一個.class**文件。這個class文件是可以被JVM的類加載器讀取和執行的。至于內部的深層次原理,我們暫時不用關心,我們只需要知道java文件必須要編譯成class文件,才可以被JVM執行,這就行了。
步驟 8 java的時候發生了什么?
剛才我們運行了App.class文件,用的命令是這樣的,注意,不需要寫class。
java App那為什么不能寫成 java App.class呢?這是因為,java規定如果執行的class文件名里面有 **“.” **號,就會認為是有文件夾嵌套,有一個包含關系。現在我們做一個證明。新建一個Test.java
package my; class Test {public static void main(String[] args){System.out.println("Test");} }用javac編譯,得到Test.class文件,然后創建一個文件夾my,把Test.class放進去。
回到java18文件夾,執行命令:
驗證成功了,所以不寫.class是有用意的,因為怕混淆啊!
回到最初的問題,java命令到底發生了什么?其實就是去那個類里面尋找 public static void main 方法,如果有,就去執行這個方法。
步驟 9 這個main方法是什么?
public是java語法中的訪問權限修飾符,代表公共的,誰都可以訪問。
static代表這個方法是靜態的,靜態的意思就是不需要實例化對象就可以直接訪問,結合上面的JVM圖,我們可以知道這個main方法在class被加載的時候,就會被存放到方法區,JVM想調用就調用。
void代表方法沒有返回值,這是程序的主方法,不需要返回值,也沒有誰可以去接收這個返回值。
main代表這是主入口,JVM會去尋找一個叫做main的方法去執行,這是規定。
綜上,這個main()方法的聲明為:public static void main(String args[])。必須這么定義,這是Java的規范。
如果不這么設置,執行就會報錯,main方法中還有一個輸入參數,類型為String[],這個也是java的規范,main()方法中必須有一個入參,類型必須String[]。
步驟 10 System.out.println?
這個語句是java打印數據到控制臺的方法,調試的時候我們可以經常使用,因為內部實現采用了同步代碼塊,會極大影響運行效率,所以如果項目要上線,請刪除或者注釋掉所有的System.out.println,轉而采用異步的日志處理方案,比如logback。
轉載自:java小白翻身
總結
以上是生活随笔為你收集整理的如何简单运行Java程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据库常见面试题(附答案)
- 下一篇: 前端学习(573):margin无效情形