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程式代碼的解釋說明!
// 單行注釋