java語言的基礎組成
1.關鍵字:被java語言賦予了特殊含義的單詞,所有的字母都是小寫的,要注意java語言是嚴格區分大小寫的;
2.標識符:程序中自定義的一種名稱,由_、$、0-9之間的數字和26個字母(大小寫)組成;
注意: 1.數字不不可以開頭;
2.不可以使用關鍵字;
3.主函數名稱main不是關鍵字,被虛擬機識別;
4.在java中,爲了提高閱讀性,起名的時候儘量起的有意義。
命名格式:變量名和函數名 xxxYyyZzz
常量名 XXX_YYY
類名 接口名 XxxYyyZzz(首字母大寫)
註釋:Java中常用的三種註釋方式:
1.單行註釋://,能嵌套多行註釋;
2.多行註釋:/**/,能嵌套單行註釋,不能嵌套多行註釋,因爲結尾不對;
3.文檔註釋:/***/,可以通過javadoc來提取,生成說明書,放到網頁中,這也是和多行註釋的區別;
對於多行和單行註釋,被註釋的文字不會被虛擬機識別。
作用:1.說明、註解程序; 2.調試程序代碼。
注意:要養成一邊註釋一邊寫代碼的習慣,先寫程序的註釋(需求、步驟、思路),再寫代碼;
如Hello World的程序步驟:
1.通過class關鍵字定義一個類,將代碼寫到該類的區間中(區間要有階梯層次感);
2.爲了保證該類的獨立運行,在類中定義一個主函數,格式:public static void main(String[] args),這 裏的args是數組名稱,可以自定義;
3.保存成一個擴展名爲.java的java文件;
4.在dos控制檯中通過javac工具對java文件進行編譯,格式:javac 文件名.java
5.再通過java命令對生成的類文件進行執行,格式:java 文件名
3.常量:在程序中其值不會改變的量;
整數常量:所有整數;
小數常量:所有小數;
字符常量:將一個字母或者符號用''括起來來標示,如'e';
字符串常量:將一個或者多個字符用""括起來標示;如"erwer";
布爾型常量:只有兩個值true和false;
空常量:只有一個數值null;
對於整數,java中有四種表現形式:
二進制:0-1,滿2進1;
十進制:0-9,滿10進1;
八進制:0-7,滿8進1,用0開頭表示;
十六進制:0-15,滿16進1,用0X開頭表示。
進制的特點:八個二進制=一個字節;進制越大,表現形式越短。
進制間的轉換:
二——>十進制:二進制乘以2的過程;
十——>二進制:對十進制數進行除2運算;
其它進制轉換,先轉成二進制再轉。
負數的二進制表現形式:正數的二進制取反加一;如-6的二進制:
6: 0000-0000 0000-0000 0000-0000 0000-0110
對6取反:1111-1111 1111-1111 1111-1111 1111-1001
加1操作:0000-0000 0000-0000 0000-0000 0000-0001
————————————————————————————————————————————————
結果: 1111-1111 1111-1111 1111-1111 1111-1010
負數的最高位爲1,而正數最高位爲0.
4.變量:將不確定的數據進行存儲,也就是需要在內存中開闢一空間,即通過明確數據類型、變量名稱和數據來完成;
定義的格式:數據類型 變量名=初始化值;如 int i=4;
其它數據類型:byte b=2;//-128~127;若byte b=128,則提示可能會損失精度;
short s=30000;//-32768~32767;
long k=4l,後面加上L的小寫,表示long型;
char ch='4';
boolean b=true;
什麼時候定義變量?
當數據不確定,需要對數據進行存儲時定義一變量完成存儲動作。
注意: 1.byte b=3;b=b+2; System.out.println(b);這個在b=b+2時會報錯,因爲在這裏b佔一個8位,而2是int型的佔4個8位,不能直接進行運算。
2.System.out.println('a')與System.out.println('a'+1)的區別:前者輸出a,後者輸出98,因爲將char型'a'自動提升爲int型再加1。
自動類型提升:小單位向大單位提升;byte b=2;int i=3;i=i+b;
強制類型轉換:強制將大單位轉向小單位;byte b=2;b=(byte)(b+2);
5.運算符:提供符號對數據進行運算。
1.算術運算符:+ - * / % ++ --
++/--前綴式和後綴式參與運算時的區別:
前綴式:先自增(減),再賦值
後綴式:先賦值,再自增(減)
2.賦值運算符:+= -= = *= /= %=
short s=3,s+=2和s=s+2的區別
s=s+2會報錯,2爲int類型,所以s+2會隱式轉換爲int類型,而s爲short類型,int比short精度高,這樣會損失 精度;
而s+=2在內部能夠自動完成將結果轉換成對應類型的操作。
3.比較運算符:< > <= >= == !=
比較運算符的結果都是boolean型的,就兩值,要麼false要麼true。
4.邏輯運算符:& | ^ ! && ||
&和&&的區別?&是左右兩邊只要有一個條件的表達式爲假結果都爲假,即兩邊都要參與運算;而&&是當左邊值爲假時 ,右邊不再參與運算,結果爲假。
5.位運算符:<< >> >>> ^ ~ & |
<< >> >>> 2*8=2<<3
>>和>>>的區別? >>:移出後,若高位爲0則左邊用0補齊,若高位爲1則左邊用1補齊;而>>>:無論高位爲0還是1結 果都用0補齊。
^的特殊之處:一個數與另一個數同時異或兩次,結果仍是原來那數。
6 語句:
語句什麼時候用:當需要對程序的流程進行控制的時候使用。簡單說,告訴計算機在進行運算時該按照什麼樣的執行順序來完 成。
條件語句:對數據或者區間範圍進行判斷,或者對運算結構是布爾類型的進行判斷(if語句)。
三元運算符:運算完要有值的出現。
if()else語句:可以操寫在其他表達式中。
選擇語句:對幾個固定的值(byte、short、int、char)進行判斷的時候(switch語句)。
特點:case和default之間沒有順序,首先執行第一個case語句,沒有匹配的case語句就執行default語句,遇brea k或者}結束。
循環語句:當需要對某些語句執行很多次的時候。
while:先判斷條件是否成立,若成立則執行。
do while:無論條件是否成立,都先執行一次,再判斷。
for:for循環是在循環內初始化變量,在循環外不能使用;
while:在循環外初始化變量,循環內外都能使用。
for循環嵌套:在打印圖形時,外循環控制行,內循環控制列。
break:適用於switch語句和循環;當它單獨存在的時候,下面不要定義任何語句,因爲執行不到。
continue:適用於循環;當它單獨存在時,下面的語句也執行不到。作用是結束本次循環,繼續下次循環。
7 函數:對功能代碼進行封裝,以便提高複用性。
如何定義一個函數?
1.明確這個函數功能的結果,其實是在明確函數的返回值類型;
2.明確這個函數功能的未知內容,其實是在明確函數的參數列表(參數類型和參數個數)。
寫程序時,都需要將功能都封裝到具體的函數中,主函數中只要進行的動作就是調用,以驗證自定義函數功能的正確性。
誤區:
//正確情況。
public static void main(String[] args)
{
int num=add(4,5);
System.out.println(num);
}
public static int add(int a,int b)
{
return a+b;
}
//誤區情況
public static void main(String[] args)
{
add(4,5);
}
public static int add(int a,int b)
{
System.out.println(a+b);//需求是將兩個數加起來求和,並不需要打印出來
}
函數的重載:一個類中允許存在兩個及以上函數名一致的函數,只要參數列表不同就行。
什麼時候使用?
當要定義的功能一致但未知內容不一致時,可以讓其函數名一致,但參數列表(參數個數和參數類型)不同。
注意:重載只在一個類中有效。
好處:相同功能不用定義多個名稱,方便調用和閱讀,提高複用性。
return語句的作用:1.結束循環語句 2.返回結果給調用
8 數組:同一種類型數據的集合。
特點:1.定義數組必須明確元素的類型。
2.定義數組必須明確元素的個數(數組的長度)。
3.數組的長度必須是固定的,不能改變。
4.操作數組的核心思想是索引(角標)。
5.給元素進行編號(從0開始,到Length-1結束)。
什麼時候使用數組?
當數據多的時候,必須先想到用數組進行存儲,然後再通過數組對其中的數據進行操作。
數組這個實體僅具備一個屬性,就是Length,可以直接獲取數組的長度。
常見操作: 1.最值
2.排序
3.查找(對於有序數組可以進行折半查找——二分法查找)
二維數組:其實就是在數組中存儲的還是數組。
Java的內存劃分:
1.寄存器,cpu涉及的區域。
2.本地方法區,是和系統相關的代碼存儲區域。
3.棧內存:存儲的都是局部變量,變量運算區域一結束,就釋放。
局部變量:在方法上的參數,方法內的變量,語句中的變量。
4.堆內存:存儲的是數組和對象,簡單說,堆內存中存儲都是實體。
實體就是可以存儲多個數據地方。記住,只要是用new建立都存儲在堆內存中。
特點:1.任何實體都有內存地址值。
2.堆內存中的變量都有默認初始化值。
3.垃圾回收機制。
5.方法區:存儲函數的地方。
數組的查找:
順序查找:要定義找不到時返回的值;
折半查找:數組必須是有序的,找不到的條件begin>end.