1、註釋(掌握)
(1)單行註釋 //:
//後到本行結束的所有字符會被編譯器忽略;
(2)多行註釋 /* */:
/* */之間的所有字符會被編譯器忽略
(3)文檔註釋 /** */:
在/** */之間的所有字符會被編譯器忽略,java特有的(用於生成文檔);
注意:多行和文檔註釋都不能嵌套使用
@author 作者名 @version 版本標識
@parameter 參數及其意義 @return 返回值
javadoc [選項] [軟件包名稱] [源文件] [@file]
例:javadoc -d . -author -version ArrayTool.java
javadoc工具默認不會提取@author和@version,若需要,則在使用javadoc工具時指定 -author -version兩個選項
2、關鍵字 (瞭解)
保留字:其實就是還沒有賦予特殊含義,但是準備日後要使用過的單詞。例:goto和const
3、標示符 (掌握)
標示符:其實就是在程序中自定義的名詞。比如類名,變量名,函數名。
命名規則:
(1) 由字母、數字、下劃線、$組成,不能以數字開頭
注意:此處的字母還可以是中文,日文等;
(2) 大小寫敏感
(3) 不得使用java中的關鍵字和保留字
(4) 別用Java API裏面的類名作爲自己的類名。
Java中的名稱規範:
1) 包名:多單詞組成時所有字母都小寫。xxxyyyzzz
2) 類名接口名:多單詞組成時,所有單詞的首字母大寫。XxxYyyZzz
3) 變量名和函數名:多單詞組成時,第一個單詞首字母小寫,第二個單詞開始每個單詞首字母大寫。xxxYyyZzz
4) 常量名:所有字母都大寫。多單詞時每個單詞用下劃線連接。XXX_YYY_ZZZ
4、常量和變量 (理解)
(1)常量:程序中固定不變化的值
(2)變量:其實就是內存中的一個存儲空間,用於存儲常量數據。
作用:方便於運算。因爲有些數據不確定。所以確定該數據的名詞和存儲空間。
特點:變量空間可以重複使用。
定義變量的格式:數據類型 變量名 = 初始化值;
作用範圍:定義開始到定義它的代碼塊結束;
同一範圍內,不允許多個個局部變量命名衝突
(3)Java成員變量和局部變量
1)局部變量:不是直接聲明在類體括號裏面的變量;
局部變量使用前必須初始化值;
局部變量沒有默認初始化值;
局部變量的作用域是從定義開始到定義它的代碼塊結束;
2)成員變量:在方法體外,類體內聲明的變量,又稱字段(Field)或全局變量; 成員變量的作用域是整個類中;
5、數據類型:
(1):基本數據類型:byte、short、int、long、float、double、char、boolean
(2):引用數據類型: 數組、類、接口。
(3)級別從低到高爲:byte,char,short(這三個平級)-->int-->float-->long-->double
自動類型轉換:從低級別到高級別,系統自動轉的;
強制類型轉換:什麼情況下使用?把一個高級別的數賦給一個別該數的級別低的變量;
【注】:(1)整型默認:int 浮點型默認:double
(2)聲明long型要加l/L,聲明float型要加上f/F
(3)boolean不可以轉換成其他類型;byte,char,short三者之間不會相互轉換,它們在計算時首先轉成int類型。
【思考題】
已知byte b1=3,b2=4,b;則b=b1+b2;和b=3+4;哪裏話會編譯失敗?爲什麼?
b=b1+b2;不可以是因爲b1和b2是變量,變量的值是可變的,不確定具體的值,所以默認使用int類型進行存儲;b=3+4;3和4都是常量,所以編譯時會檢查該變量的和是否超出byte類型的範圍,如果沒有則可賦值。(虛擬機規定,int short boolean byte char在運算時都會轉爲int,32bit整型所以這裏要寫成b1=(byte)(b1+b2);或者b1+=b2;)
6、運算符號:(掌握)
(1)、算術運算符
1)C/C++只允許 % 兩邊的操作數是整型的,而Java既支持整型也支持浮點型.
double ret = 3.14 % 1.1;// 結果是 0.94
2)比較下列結果,想想原因:
System.out.println(1.0 / 0);
System.out.println(1 / 0);
因爲double的精度比int的精度高,表達式自動轉換爲double數據類型,除數的值爲0.0,1.0/0.0 等效應於1除以一個無限接近0的double類型的數據,結果就是無限大;
3)“+” 除用於算數加法運算外,還可以對字符串進行連接操作。“+”運算符兩側的操作數中只要有一個String類型,一個是基本數據類型時,編譯成class文件後,兩個操作數就被連接成了一個新的String值:
System.out.println(8+7+"hello"); //結果是:15hello
System.out.println(8+"hello"+7); //結果是:8hello7
System.out.println("hello"+8+7); //結果是:hello87
(2)、賦值運算符。
= += -= *= /= %=
【思考】:
short s = 3; s = s + 2;與s += 2;有什麼不同?
s = s + 2;//編譯失敗 原因:s會被提升爲int,運算後的結果是int,無法賦值給short類型。s += 2;//編譯通過,因爲+=在給s賦值時,自動完成強制轉換操作。
(3)、比較運算符。
特點:該運算符的特點是:運算完的結果,要麼是true,要麼是false。
(4)、邏輯運算符。
& | ^ ! && || 邏輯運算符除了! 外都是用於連接兩個boolean類型表達式。
&: 只有兩邊都爲true結果是true。否則就是false。
|:只要兩邊都爲false結果是false,否則就是true
“ ^ ”與“|”不同之處是:當左右都爲true時,"^"結果爲false。
& 和 &&區別: & :無論左邊結果是什麼,右邊都參與運算。&&:短路與,如果左邊爲false,那麼右邊不參數與運算。| 和|| 區別:|:兩邊都運算。||:短路或,如果左邊爲true,那麼右邊不參與運算。
(5)、位運算符:用於操作二進制位的運算符。
左移操作“<<”:將運算數的二進制碼整體左移指定位數,左移之後的空使用“0”來補充。
右移操作“>>”:將運算數的二進制碼整體右移指定位數,右移之後的空使用“符號位”來補充。若是正數使用“0”補充;若是負數使用“1”補充;
無符號右移">>>":將運算數的二進制碼整體右移指定位數,右移之後的空使用“0”來補充。
【注】:<<:相當於乘與2的倍數,>>:相當於除以2的倍數,移n位,就是對乘以或者除以2的n次冪
(6)三目運算符
語法格式:x ? y : z;
其中x爲boolean類型表達式,先計算x的值,若爲true,則整個三目運算符的結果是表達式y的值,否則就是z的值。
7、程序流程控制 (理解)
(1)判斷結構
if語句三種格式:
A. if(條件表達式)
{
執行語句;
}
B. if(條件表達式)
{
執行語句;
}
else
{
執行語句;
}
C. if(條件表達式)
{
執行語句;
}
else if (條件表達式)
{
執行語句;
}
……
else
{
執行語句;
}
if語句特點:a,每一種格式都是單條語句。b,第二種格式與三元運算符的區別:三元運算符運算完要有值出現。好處是:可以寫在其他表達式中。c,條件表達式無論寫成什麼樣子,只看最終的結構是否是true 或者false;
(2)選擇結構
switch語句
格式:
switch(表達式)
{
case 取值1:
執行語句;
break;
case 取值2:
執行語句;
break;
…...
default:
執行語句;
break;
}
A. switch語句特點:
a,switch語句選擇的類型只有四種:byte,short,int , char。
b,case之間與default沒有順序。先執行第一個case,沒有匹配的case執行default。
c,結束switch語句的兩種情況:遇到break,執行到switch語句結束。
d,如果匹配的case或者default沒有對應的break,那麼程序會繼續向下執行,運行可以執行的語句,直到遇到break或者switch結尾結束。
(3)循環結構
A. while語句格式:
while(條件表達式)
{
執行語句;
}
B. do while語句格式:
do
{
執行語句;
}while(條件表達式);
do while特點:是條件無論是否滿足,循環體至少執行一次。
C. for語句格式:
for(初始化表達式;循環條件表達式;循環後的操作表達式)
{
執行語句;(循環體)
}
【注】:
A、for裏面的連個表達式運行的順序,初始化表達式只讀一次,判斷循環條件,爲真就執行循環體,然後再執行循環後的操作表達式,接着繼續判斷循環條件,重複找個過程,直到條件不滿足爲止。
B、while與for可以互換,區別在於for爲了循環而定義的變量在for循環結束就是在內存中釋放。而while循環使用的變量在循環結束後還可以繼續使用。
C、最簡單無限循環格式:while(true) , for(;;),無限循環存在的原因是並不知道循環多少次,而是根據某些條件,來控制循環。
(4)其他流程控制語句
break(跳出), continue(繼續)
break語句:應用範圍:選擇結構和循環結構。
continue語句:應用於循環結構。
【注】:
a,這兩個語句離開應用範圍,存在是沒有意義的。
b,這個兩個語句單獨存在下面都不可以有語句,因爲執行不到。
c,continue語句是結束本次循環繼續下次循環。
d,標號的出現,可以讓這兩個語句作用於指定的範圍。
7、函數(方法) (掌握)
(1)定義:函數就是定義在類中的具有特定功能的一段獨立小程序,也稱爲方法。
(2)函數的格式:
修飾符 返回值類型 函數名(參數列表)
{
執行語句;
return 返回值;
}
返回值類型:函數運行後的結果的數據類型。
參數類型:是形式參數的數據類型。
形式參數:是一個變量,用於存儲調用函數時傳遞給函數的實際參數。
實際參數:傳遞給形式參數的具體數值。
return:用於結束函數。
返回值:該值會返回給調用者。
(3)調用方法:[類/對象.]方法名(實參);
【注】:函數中只能調用函數,不可以在函數內部定義函數。
(4)重載(overload)
定義:在一個類中,如果出現了兩個或者兩個以上的同名函數,只要它們的參數的個數,或者參數的類型不同,即可稱之爲該函數重載了。
如何區分重載:兩同一不同(兩同:在同一個類中,方法名相同;一不同:參數列表不同(包括/類型、個數、順序的不同))。【注】:與返回值類型,修飾符都無關。
8、數組 (掌握)
(1)定義:同一種數據類型的集合。數組一旦初始化後,長度就不可改變。
(2)聲明:數組類型[] 數組名;
(3)初始化:Java中的數組必先初始化纔可以使用,所謂初始化就是爲數組的數組元素分配內存,併爲每個數組元素賦值;
數組初始化的兩種方式:
A、靜態初始化:初始化時由我們自己指定每個數組元素的初始值,由系統決定需要的數組長度;
格式:數組名 = new 數組類型[]{元素1,元素2,元素3...元素n};
簡化語法:數組名 = {元素1,元素2,元素3...元素n};(建議使用這個)
B、動態初始化:初始化時由我們指定數組的長度,由系統爲數組元素分配初始值;
格式:數組名 = new 數組類型[數組長度];
動態初始化時,系統將負責爲這些元素分配初始值。指定初始值原則:
整型:0 浮點:0.0 布爾: false
字符:‘\u0000’(其實就是空) 引用類型:null
【注】:不能靜態和動態初始化同時使用:也就是說不能同時指定數組的長度和元素;數組的長度一旦確定,就不能改變,也就數組是定長的;
(4)得到數組長度:數組名.length;(length是數組的屬性)
9、java內存。(理解)
(1)寄存器。(2)本地方法區 (3)方法區(4)棧。(5)堆。
開闢不同內存空間是爲了對每一片內存中的數據都有不同的處理方式,提高效率。
棧:存儲的都是局部變量 ( 函數中定義的變量,函數上的參數,語句中的變量 );
只要數據運算完成所在的區域結束,該數據就會被釋放。
堆:用於存儲數組和對象,也就是實體(啥是實體呢?就是用於封裝多個數據的),通過new關鍵字建立的實體都存放在堆內存當中。
(1)每一個實體都有內存首地址值。
(2)堆內存中的變量都有默認初始化值。因爲數據類型不同,值也不一樣。
(3)垃圾回收機制,Java特有的內存管理機制,在不定時的時間內將垃圾清除釋放空間。