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