天天看點

java學習筆記:第一個程式

1、開發第一個java程式:HelloWorld

1.1、程式寫完之後,一定要ctrl + s 進行儲存

第一個HelloWorld程式照抄就行了,不要問代碼為什麼這麼寫。

另外,大家需要注意的是:java源代碼隻要修改,必須重新編譯。

重新編譯生成新的class位元組碼檔案。

1.2、編譯階段

怎麼編譯?使用什麼指令?這個指令怎麼用?

需要使用的指令是:C:\Program Files\Java\jdk-13.0.2\bin\javac.exe

這個指令需要先測試一下,打開DOS指令視窗,看看javac指令是否可用。

C:\Users\Administrator>javac

'javac' 不是内部或外部指令,也不是可運作的程式或批處理檔案。

這說明:windows作業系統沒有發現“javac.exe”指令在哪裡。

windows作業系統沒有找到javac.exe檔案在哪。

為什麼ipconfig、ping等指令可以使用呢?為什麼javac用不了?

我們發現windows作業系統中有這樣一個環境變量,名字叫做:path,

并且發現path環境變量的值是:

C:\Windows\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\

我們還發現了在:C:\Windows\System32 這個目錄下存在:ipconfig.exe

注意:修改完環境變量之後,DOS指令視窗必須關閉重新打開才會起作用。

将path環境變量中的:C:\windows\system32; 删除之後

再測試:

C:\Users\Administrator>ipconfig

'ipconfig' 不是内部或外部指令,也不是可運作的程式或批處理檔案。

配置環境變量path的步驟:

桌面計算機上右鍵-->屬性-->進階系統設定-->環境變量

怎麼修改path環境變量?

找到path,滑鼠輕按兩下!!!!

path環境變量當中都是路徑,路徑和路徑之間必須采用“半角的分号”分隔。

讓javac.exe能用,我們配置哪個路徑到path中?

将C:\Program Files\Java\jdk-13.0.2\bin配置到path當中。

注意:環境變量包括“系統變量”和“使用者變量”

系統變量:範圍比較大,系統變量會讓計算機所有使用者都起作用。

使用者變量:範圍比較小,這個變量隻是作用于目前使用者。

怎麼檢視編譯器版本?

C:\Users\Administrator>javac -version

javac 13.0.2        

怎麼檢視java虛拟機的版本?

C:\Users\Administrator>java -version

java version "13.0.2" 2020-01-14

Java(TM) SE Runtime Environment (build 13.0.2+8)

Java HotSpot(TM) 64-Bit Server VM (build 13.0.2+8, mixed mode, sharing)

問題1:path環境變量的作用是什麼?

path環境變量的作用就是給windows作業系統指路的。

告訴windows作業系統去哪裡找這個指令檔案。

path環境變量中有很多很多的路徑,路徑和路徑之間用半角分号分隔。

path=A;B;C;D......

path是環境變量的名字。

A;B;C;D......是環境變量path的值。

問題2:path環境變量是java中的機制,還是windows作業系統中的機制?

path環境變量是隸屬于java的嗎?path環境變量和java有關系嗎?

path環境變量本質上是隸屬于windows作業系統的,和java沒有關系。

java隻不過用了一下path環境變量。

要學會融會貫通,學一通百:

以後在安裝其他軟體之後,希望在DOS指令視窗中使用該軟體的某個指令

的時候,如果出現“指令找不到錯誤了”,這個時候希望大家能夠想起來

配置環境變量path。

path環境變量中的路徑可以指定多個,沒問題,多少個都行。

------------------------------------------------------------------------------

javac指令怎麼用?

文法格式先背會:

javac java源檔案的路徑

什麼是java源檔案?

java源檔案的名字以“.java”結尾,該檔案中寫了java源代碼。

java源檔案的路徑是什麼意思?

注意:路徑永遠包括絕對路徑和相對路徑。

注意:神操作????

把java源檔案直接拖進到DOS指令視窗,那麼DOS指令視窗就有這個路徑了。

C:\Users\Administrator>javac D:\course\JavaProjects\02-JavaSE\chapter01\HelloWorld.java

D:\>javac course\JavaProjects\02-JavaSE\chapter01\HelloWorld.java

D:\course\JavaProjects>javac 02-JavaSE\chapter01\HelloWorld.java

D:\course\JavaProjects\02-JavaSE\chapter01>javac HelloWorld.java

以上的四種方式都行,第一種方式是絕對路徑

剩下三種方式都是相對路徑。

C:\Users\Administrator>javac course\JavaProjects\02-JavaSE\chapter01\HelloWorld.java

錯誤: 找不到檔案: course\JavaProjects\02-JavaSE\chapter01\HelloWorld.java

用法: javac <選項> <源檔案>

使用 --help 可列出可能的選項

以上報錯的原因是:java源檔案的路徑寫錯了。

C:\Users\Administrator>javac HelloWorld.java

錯誤: 找不到檔案: HelloWorld.java

用法: javac <選項> <源檔案>

使用 --help 可列出可能的選項

注意:神操作????

怎麼在DOS指令視窗中快速定位到某個路徑呢?

打開計算機-->打開一些檔案夾-->在位址欄上直接輸入cmd回車,這樣直接就過去了。

編譯報錯的時候不會生成class位元組碼檔案!

D:\course\JavaProjects\02-JavaSE\chapter01>javac HelloWorld.java

HelloWorld.java:3: 錯誤: 非法字元: '\uff1b'

 System.out.println("Hello World");

 ^

1 個錯誤

1.3、運作階段

運作的前提是:class檔案(位元組碼)生成了。沒有位元組碼檔案程式是無法運作的。

重點重點重點重點重點重點重點重點重點!!!!!!!

假設該檔案的名字叫做:HelloWorld.class

那麼HelloWorld被稱為??????????

HelloWorld 就是一個類名。

如果檔案名是Test.class,那麼:Test就是一個類名。

怎麼運作,使用哪個指令?

使用JDK的bin目錄下的:java.exe指令來運作。

先在DOS指令視窗中測試java.exe這個指令是否可用!!!

java -version

"java.exe"這個指令怎麼用,文法格式是什麼?

java 類名

java HelloWorld.class 對不對?????

不對!!!!

正确的寫法是:

java HelloWorld

千萬千萬要注意:java這個指令,後面跟的是“類名”,而絕對不能跟“檔案路徑”,

因為java指令後面跟的不是檔案,是一個“類名”。

對于這個位元組:Test.class        ,應該:java Test

對于這個位元組碼:A.class ,應該 java A

對于這個位元組碼:Hello.class,應該java Hello

.....

運作java程式需要哪些步驟呢?

第一步(必須這樣做,這是必須的,先記住):

先使用cd指令切換到Test.class檔案所在的路徑。

第二步:執行java Test

切記:

java指令後面隻要是跟路徑,就一定不行。

java指令後面隻能跟類名。

2、到目前為止,大家告訴我,一共配置了哪些環境變量?

到目前為止,我們隻配置了一個環境變量path,并且這個環境變量path和java實際上沒關系,是人家windows作業系統的機制。

對于Java的JDK所屬的環境變量,有一個叫做:JAVA_HOME

這個JAVA_HOME目前我們不需要,不配置這個環境變量也不會影響目前java程式的運作。

但是後期學習到JavaWEB的時候需要安裝Tomcat伺服器,那個時候JAVA_HOME就必須配置了。

那麼除了JAVA_HOME環境變量之外,JDK相關的環境變量還有其他的嗎?

答案:有的。

3、我們一起來研究一下:“java HelloWorld”的執行過程以及原理。

D:\course\JavaProjects\02-JavaSE\chapter01>java HelloWorld

敲完回車,都發生了什麼?????

第一步:會先啟動JVM(java虛拟機)

第二步:JVM啟動之後,JVM會去啟動“類加載器classloader”

類加載器的作用:加載類的。本質上類加載器負責去硬碟上找“類”對應的“位元組碼”檔案。

假設是“java HelloWorld”,那麼類加載器會去硬碟上搜尋:HelloWorld.class檔案。

假設是“java Test”,那麼類加載器會去硬碟上搜尋:Test.class檔案。

.......

第三步:

類加載器如果在硬碟上找不到對應的位元組碼檔案,會報錯,報什麼錯?

錯誤: 找不到或無法加載主類

類加載器如果在硬碟上找到了對應的位元組碼檔案,類加載器會将該位元組碼

檔案裝載到JVM當中,JVM啟動“解釋器”将位元組碼解釋為“101010000...”這種

二進制碼,作業系統執行二進制碼和硬體互動。

問題?????

預設情況下,類加載器去硬碟上找“位元組碼”檔案的時候,預設從哪找????

預設情況下類加載器(classloader)會從目前路徑下找。

此處應該有疑問,你可以提出哪些問題????

能不能給類加載器指定一個路徑,讓類加載器去指定的路徑下加載位元組碼檔案。

答案:可以的。但是我們需要設定一個環境變量,叫做:classpath

classpath是一個環境變量,是給誰指路的?

答案:是給“類加載器”指路的。

classpath環境變量不屬于windows作業系統,classpath環境變量隸屬于java。

classpath環境變量是java特有的。

classpath=A路徑;B路徑;C路徑.....

classpath是一個變量名

A路徑;B路徑;C路徑.....是變量值

我們把classpath配置一下,這個環境變量在windows中沒有,需要建立!!!!

計算機-->右鍵-->屬性-->進階系統設定-->環境變量-->建立...

注意:變量名不能随意寫:大小寫無所謂,但必須叫做:classpath

CLASSPATH

ClassPath

Classpath

classpath

都行。

我目前是随意配置的:(重新開機CMD)

classpath=D:\course

非常重要的一個特點,必須記住:

配置了classpath=D:\course之後,類加載器隻會去D:\course目錄下找“xxx.class”檔案

不再從目前路徑下找了。

結論是:

到目前為止:classpath環境變量不需要配置。

但你必須了解classpath環境變量是幹什麼的!!!!

你一定要了解classpath環境變量的作用是什麼?

是給類加載器指路的。

在沒有配置環境變量classpath的時候,預設從目前路徑下加載。

如果配置了環境變量classpath的話,就隻能從指定的路徑下加載了。

path java_home classpath,這3個環境變量path需要配置,後面兩個暫時不配置。

4、???????【讓人困惑了!!!】(了解即可,不需要掌握,現階段也不需要這樣寫)

在高版本的JDK當中,有這樣的一個新特性,可以直接這樣一步到位:

java x/y/z/xxx.java

java後面直接加java源檔案的路徑。

這個特性是為了簡化開發而提出,但實際上底層的實作原理還是和以前一樣的,

以上指令在執行過程中,還是會先進行編譯,然後再運作。并且以上的運作方式,

編譯生成的class檔案在硬碟上不存在,看不到。

5、關于第一個java程式代碼的解釋說明!

// 單行注釋