學(xué)習(xí)筆記20170601">【PMP】學(xué)習(xí)筆記20170601
702
2025-04-04
Java語言是解釋執(zhí)行,Java源碼是通過編譯生成一種特殊的.class的中間字解碼文件,然后再有JVM進(jìn)行解釋執(zhí)行。
java語言對指針進(jìn)行了上層的封裝,它保證能夠通過這個指針(引用),來訪問有效的內(nèi)存單元。
java語言不允許多繼承,使繼承關(guān)系成樹裝圖,每個類都只能由一個父類。
java語言的開發(fā)效率高,但執(zhí)行效率低。(相當(dāng)于c++的55%)
java的垃圾回收機(jī)制,在java中new的對象不需要向c++一樣進(jìn)行delete操作,JVM會根據(jù)情況回收垃圾對象。(懶漢機(jī)制,等待資源沒有的時候才回收)我們只能夠建議JVM進(jìn)行垃圾回收,例如(System.gc() RunTime.gc()這兩個方法就是建議JVM進(jìn)行垃圾回收的方法)
JDK,java開發(fā)工具包(類庫和運行命令),JRE,java運行環(huán)境,JVM,java虛擬機(jī)(解釋執(zhí)行的核心,對字節(jié)碼進(jìn)行翻譯成運行環(huán)境的機(jī)器碼,它可以屏蔽平臺差異。JVM是不跨平臺的。)
JAVA_HOME,指明JDK安裝的位置,CLASSPATH,指明類文件的位置,PATH,指明命令的可執(zhí)行文件的位置。
java源文件的文件名必須和文件中定義public class的類名(大小寫頁要相同)相同。
java源代碼中的main方法的定義寫法。main方法是程序的入口。
public static void main(String[] args){
System.out.println("Hello world");
}
java源文件也要先編譯,使用javac xxx.java格式的命令得來編譯,使用java xxx來運行。
定義包結(jié)構(gòu)要放在有效代碼的第一行,package xxx.xxx,包的定義在一個程序中只能由一個,在加上包定義之后編譯可以使用javac -d 路徑 xxxx.java,這個-d這個命令行的參數(shù)可以指定包結(jié)構(gòu)的位置“.”代表當(dāng)前目錄。在運行時要使用類的全名
java xxx.xxx.xxxx用包名以點分隔。運行時要在包結(jié)構(gòu)的上一層目錄來運行。
java中的注釋,
單行注釋 //......
多行注釋 /* .......*/
文檔注釋/** ........
(換行標(biāo)簽)*/,用javadoc命令可以根據(jù)原碼中的文檔注釋生成注釋文檔(html格式)。文檔注釋中可以使用html標(biāo)簽。
javadoc -d 路徑 (指定注釋文檔的保存路徑)
文檔注釋一般寫在類定義之前,方法之前,屬性之前。
jar命令用于打一個xxx.jar文件
用法:jar {ctxu}[vfm0Mi] [jar-文件] [manifest-文件] [-C 目錄] 文件名 ...
選項:
-c? 創(chuàng)建新的存檔
-t? 列出存檔內(nèi)容的列表
-x? 展開存檔中的命名的(或所有的〕文件
-u? 更新已存在的存檔
-v? 生成詳細(xì)輸出到標(biāo)準(zhǔn)輸出上
-f? 指定存檔文件名
-m? 包含來自標(biāo)明文件的標(biāo)明信息
-0? 只存儲方式;未用ZIP壓縮格式
-M? 不產(chǎn)生所有項的清單(manifest〕文件
-i? 為指定的jar文件產(chǎn)生索引信息
-C? 改變到指定的目錄,并且包含下列文件:
如果一個文件名是一個目錄,它將被遞歸處理。
清單(manifest〕文件名和存檔文件名都需要被指定,按'm' 和 'f'標(biāo)志指定的相同順序
示例1:將兩個class文件存檔到一個名為 'classes.jar' 的存檔文件中:
jar cvf classes.jar Foo.class Bar.class
示例2:用一個存在的清單(manifest)文件 'mymanifest' 將 foo/ 目錄下的所有文件存檔到一個名為 'classes.jar' 的存檔文件中:
jar cvfm classes.jar mymanifest -C foo/ .
一般在使用使用jar cvf 文件名.jar 文件所在路徑(xxx/xxx/xxx.class)也可以壓縮一個目錄,只要在制定路徑是指定為文件夾,jar命令的命令行參數(shù)在使用時可以以“-”開頭,也可以不用。
java程序的運行過程,首先是啟動java虛擬機(jī),然后就是去找.class文件,先是從系統(tǒng)的類庫中找(系統(tǒng)之會在跟目錄下查找,所以需要完整類名),如果找不到的話會去CLASSPATH所設(shè)置的目錄去找。然后加載到j(luò)ava虛擬機(jī)中。
系統(tǒng)會在每個java程序中隱含導(dǎo)入了java.lang這個包,import 包名,導(dǎo)入包中的類文件。
java.lang包,這是一個基礎(chǔ)包。
java.util包,這個包是工具類的包。
java.io包,這個包是用于輸入輸出操作的
java.net包,這個包是用于網(wǎng)絡(luò)編程。
java.awt,java.swing,javax.swing java.event包,這些包用于java的圖形編程用的包。
applaction java的應(yīng)用程序,java應(yīng)用程序中必須有一個main()方法。
標(biāo)識符和關(guān)鍵字
Java代碼中的“;”、“{}”、“ ”
Java語句以分號分隔,Java代碼塊包含在大括號內(nèi),忽略空格。標(biāo)識符
1) 用以命名類、方法和變量、以及包遵守JAVA的命名規(guī)范類以每個單詞都以大寫字母開頭。方法和變量第一個字母不大寫,其他照舊。
2) 只能以字符、“_”或“$”開頭;
3) 無長度限制。
java中的關(guān)鍵字
goto和const在java中雖然不再使用但是還作為關(guān)鍵字存在
java中沒有sizeof這個關(guān)鍵字了,java中的boolean類型的值只能用true和false,且這兩值也是關(guān)鍵字。
java語言中沒有無符號這個關(guān)鍵字(unsigned)
java中的數(shù)據(jù)類型
1) 整型
byte? ? ? ?1字節(jié)? 8位? ? ? ?-128到127
short? ? ? 2字節(jié) 16位? ? ? -2^15到2^15-1
int? ? ? ? 4字節(jié) 32位? ? ? -2^31到2^31-1
long? ? ? ?8字節(jié) 64位? ? ? -2^63到2^63-1
2) 浮點類型
float? ? ? 4字節(jié) 32位
double? ? ?8字節(jié) 64位
3) 字符類型
char? ? ? ?2字節(jié) 16位
4) 布爾型
boolean? ? false/true
注:1) char是無符號的16位整數(shù),字面值必須用單引號括起來; ‘’
2) String 是類,非原始數(shù)據(jù)類型;
3) 長整型數(shù)字有一個后綴為“L”或“l(fā)”,八進(jìn)制前綴為“0”,十六進(jìn)制前綴為“0x”;
4) 黙認(rèn)浮點類型為double;
5) float數(shù)據(jù)類型有一個后綴為“f”或“F”,Double數(shù)據(jù)類型后可跟后綴“D”或“d“
6)char類型也可以用通用轉(zhuǎn)譯字符,但是不能用ASCII碼。可以用“/u0000”這種格式,因為char型中使用的是unicode編碼方式
注:整型值存放,正數(shù)存放原碼(二進(jìn)制碼),負(fù)數(shù)則存放補碼(原碼按位取反末位加一)。
注:實型值在存儲時會損失精度,所以不要直接比較兩個實型值。系統(tǒng)默認(rèn)的實型都是double型,要使用時要在數(shù)據(jù)后加個f,或者強行轉(zhuǎn)換。強轉(zhuǎn)(占字節(jié)數(shù)大的類型轉(zhuǎn)到占字節(jié)數(shù)小的類型)時會放棄高位值只取低位值。
java中的數(shù)字?jǐn)?shù)據(jù)類型減災(zāi)由占字節(jié)數(shù)小的類型到占字節(jié)數(shù)大的類型的可以有自動轉(zhuǎn)換,反之則需要強行轉(zhuǎn)換,char型和int型之間可以相互轉(zhuǎn)換。char和short不能像戶轉(zhuǎn)換。
注意:隱式類型轉(zhuǎn)換;
a 運算符 b ,如果a,b中有任意一個是double型,前面運算的結(jié)果就是double型,如果a,b中有任意一個是float型,前面運算的結(jié)果就是float型,如果a,b中有任意一個是long型,前面運算的結(jié)果就是long型,如果a,b中沒有double、float、long型,那么其結(jié)果就為int型。
所有基本數(shù)據(jù)類型在使用時會事先分配空間,只本身就存在空間中,在傳遞時,就是值傳遞,不是引用傳遞。
JVM Java
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。