JAVA環境搭建與第一個helloworld

1.概念

JVM:Java虛擬機,.class最終運行於此;

JRE:Java運行環境,包含JVM和JAVA類庫(如java.util);

JDK:Java開發工具包,包含JRE和一些工具(如javac.exe)。

JVM∈JRE∈JDK

如果不編譯只運行只需JRE即可,如果要編譯就要JDK。

2.安裝JDK

Oracle收購了Sun,現在Java屬於Oracle

去Oracle官網下載JDK:https://www.oracle.com/technetwork/java/javase/downloads/index.html

安裝最新版本即可,如果安裝舊版通常要註冊Oracle賬戶。

我裝的是jdk13,裝完之後沒有看到jre文件夾,看網上教程發現還要手動安裝jre:

在jdk的目錄下:

bin\jlink.exe --module-path jmods --add-modules java.desktop --output jre

但後來重新安裝一次JDK又有了,迷惑。。。

3.配置環境變量

在path中增加一個bin目錄的環境變量即可

4.hello world

public class Test {
	//static表示唯一,main是唯一入口,static是特徵修飾符
	public static void main(String[] args) {
			System.out.println("hello world"); //ln和沒ln的區別是空行
	}
}

把文件命名爲Test.java

然後編譯:javac Test.java -encoding UTF-8

因爲有中文註釋,所以加編譯選項,

然後運行:java Test

注意這裏雖然運行的是.class文件,但不需要寫.class

結果:

5.一個注意點

.java文件裏最多隻能有一個public類,並且該文件的名字必須與該public的類名保持一致,(如果沒有public類的話文件名就隨便)

 

爲什麼如果有public類,文件名就要和類名一致呢?

網上看到一種比較好的解釋(https://blog.csdn.net/WaitForFree/article/details/51033457):

是爲了加快編譯速度。

比如在文件a.java中有類a,類b,而文件k.java中有類c,a.java想用到類c,就要先編譯類c所在的java文件,但它怎麼知道編譯哪個文件才能得到類c呢,當然可以所有文件都找一遍但這樣是很低效的,所以就規定類c(前提是public類,即可以被其他文件調用)所在的文件名必須和c的類名一致(即c),這樣就方便編譯器找到它從而編譯它。

 

爲什麼c++沒有這種規定呢?

因爲c++還有鏈接期。

c++是先編譯,不同的文件會生成不同的符號表,如果文件a要導入另一個外部類,就會先在符號表的對應位置填個“?”,然後在鏈接過程再去查找其他文件生成的符號表(直到找到爲止),來填補那個“?”,所以c++會稍微耗時點。

 

 

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