黑馬程式設計師_java語言基礎組成
二、java語言基礎組成
1 關鍵字
其實就是某一個計算機語言對指定的單詞賦予了特殊的含義。
特點:體現上都是英文小寫。
2 識別符號
就是在程式中起的名字。
包含:0~9,a~z,$,_。
注意:1、數字不可以開頭。
2、名稱不可以使用關鍵字。
3 註釋
作用1: 註解,說明,解釋。
表現形式三種:
1、單行註釋。行的開頭加 “//”
2、多行註釋。有開始有結束 /* 註釋的內容 */
3、java中特有的註釋,文件註釋。/** 註釋內容*/ 通常用於對程式進行說明,並可以建立說明文件。
作用 2:用於除錯程式
註釋的細節:註釋的巢狀
單行註釋中可以有單行,多行註釋。
多行註釋中可以有單行註釋。
4 常量和變數
常量:表示不能改變的數值。
1、整數常量,所有整數。表現形式有:二、八(以0開頭)、十、十六(以0x開頭)進位制。
2、小數常量,所有小數。
3、布林型常量,較為特有,只有兩個數值,true、false。
4、字元常量,將一個數字、字母或者符號用單引號(‘’)標識 。
5、 字串常量,將一個或者多個數字、字母或者符號用雙引號(“”)標識 。
6、null常量,只有一個數值就是null。
負數轉換:對應的正數的二進位制取反+1,。
變數:就是將不確定的資料進行儲存。
也就是需要在記憶體中開闢一個空間。
定義變數的格式:資料型別 變數名 = 初始化值
資料型別:
型別轉換
制動型別提升
強制轉換,即b=(byte)(b+2)
5 運算子
1、算術運算子:+、-、*、/、%(模,取餘)+(連線符,用於連線字串)++自增,——自減
對於a自增
++a 即 a=a+1
當自增參與運算的時候,++在前在後市有區別的,在前自增後參與運算。
2、賦值運算子: =、+=、-=、*=、/=、%=
3、比較運算子:>、<、>=、<=、==、!=
該運算子運算完的結果要麼是true,要麼是false。
4、邏輯運算子(用於連線boolean型別的表示式)
&、|、&&、||、^(異或)、!非
&&:當左邊為false時,右邊不參與運算
||:當左邊為true時,右邊不參與運算
^:兩邊結果一致。運算結果是false,兩邊結果不一致。運算結果是true。
5、位移運算子
左移:<<
右移:>>
無符號右移:>>>
&、|、^、~(反碼)
6、三元運算子
int x=1;y
y = x + 1?100:200 真100,假200。
6 語句
程式流程控制:順序結構、判斷結構、選擇結構、迴圈結構。
1、判斷結構
if 語句,三種格式:
1> if (條件表示式)
{
執行語句;
}
2> if (條件表示式)
{
執行語句;
}
else
{
執行語句;
}
3>if (條件表示式)
{
執行語句;
}
else if
{
執行語句;
}
……
else
{
執行語句;
}
if else 結構間歇格式:變數 = (條件表示式)?表示式1:表示式2;
三元運算子
好處:可以簡化 if else 程式碼。
弊端:因為是一個運算子,所有運算完必須有一個結果。
2、選擇結構
swith 語句 格式:
swith(表示式)//byte、short、int、char
{
case 取值1:
執行語句;
break;
case 取值:2
執行語句;
break;
case 取值3:
執行語句;
break;
default:
執行語句;
break;
}
if和swith 語句很像具體用那麼語句?
如果判斷的具體數值不多,而是符合byte short int char這四種類型,雖然兩個語句都可以使用,建議使用swith語句,因為效率稍高。
其他情況,對區間判斷,對結果為boolean型別判斷,使用if, if 的使用範圍更廣。
3、迴圈結果
代表語句:while、do while、for
while語句格式
while(條件表示式)
{
執行語句(迴圈體);
}
do while語句格式
do
{
執行語句(迴圈體);
}
while(條件表示式);
do while 迴圈體至少執行一次。
for(初始化表示式;迴圈條件表示式;迴圈後的操作表示式)
{
執行語句(迴圈體);
}
for 語句
1、變數有自己的作用域,對於for來講,如果將用於控制迴圈的增量定義在for語句中,那麼該變數只在for語句內有效,
for語句執行完畢,該變數在記憶體中被釋放。
2、for和while 可以進行互換,如果需要定義迴圈增量,用for更為合適。
語句巢狀形式,其實就是語句中還有語句
“\”的應用
製表符\t 換行符 \n 退格鍵 \b 按下回車鍵\r 轉移符 \
其他流程控制語句
break(跳出),continue(繼續)
break語句:應用範圍:選擇結構和迴圈結構
continue語句:應用與迴圈結構
注:1、break和continue語句的作用範圍
2、break和continue單獨存在時,下面可以有任何語句,因為都執行不到。
7 函式
定義:函式就是定義在類中的具有特定功能的一段獨立小程式,也稱方法。
函式的格式:
修飾符 返回值型別 函式名(引數型別 形式引數1,引數型別 形式引數2)
{
執行語句;
return 返回值;
}
修飾符:通過關鍵字對被修飾的內容加上指定的含義。
返回值型別:這要先明確什麼是返回值,函式就是一個功能,通常功能結束後,都有一個結果,而這個結果就是返回值。
函式名:函式就是一個程式碼區間,這個區間要被使用,必須有個名字,這就是函式名。
引數:就是參加運算的資料。
return 有結束函式的功能。
功能技巧:1、明確該功能的結果是什麼?
2、明確該功能中是否需要未知內容參與運算。
當函式運算後,沒有具體的返回值時,這是返回值型別用一個特殊的關鍵字來標識,該關鍵字就是void,
void:代表的是函式沒有具體返回值的情況。
函式的過載(overload)
什麼時候用過載?
當定義的功能相同,但參與運算的未知內容不同,那麼這時就定義一個函式名稱以表示其功能,方便
閱讀,而通過引數列表的不同來區分多個同名函式
8 陣列
概念:同一種類型資料的集合,其實陣列就是一個容器。
特點:1、這些資料必須是同一型別。2、儲存時必須明確元素的個數。
格式1(非靜態):元素型別 [ ] 陣列名 = new 元素型別 [ 元素個數或陣列長度];
陣列建立後都有預設初始化值,如int型別,預設值為0。
例:int [ ] arr = new int [2 ] ;
記憶體結構
棧:資料使用完畢,會自動釋放。
堆:堆允許程式在執行時動態地申請某個大小的記憶體(實體包括陣列和物件,用new建立)。
格式2(靜態):元素型別 [ ] 陣列名 = new 元素型別 [ ]{元素,元素,……};
元素型別 [ ] 陣列名 = {元素,元素,……};
常見異常
角標越界異常:arrayIndexOutOfBoundsException
空指標異常:NullpointerException
陣列的操作:獲取陣列中的元素,通常會用到遍歷。例如
int [ ] arr = new int [3];
陣列中有一個屬性可以直接獲取到陣列元素個數。length
使用方式:陣列名稱.length
獲取最大值(最小值)
public static int getMax(int [ ] arr)
{
int max = 0;
for (int x = 1; x <arr.length ; x++)
{
if (arr[x] >arr[max])
max = x;
}
return arr[max];
}
陣列選擇排序
public static void selectSort( int [ ] arr)
{
for (int x = 0; x < arr.length-1; x++)
{
for (int y = x+1; y < arr.length; y++)
{
if (arr[x] >arr[y])
{
int temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
}
}
}
氣泡排序
public static void bubbleSort( int [ ] arr)
{
for (int x = 0; x < arr.length-1; x++)
{
for (int y = 0; y < arr.length-x-1; y++)
{
if (arr[x] <arr[y])
{
int temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
}
}
}
java中的排序, Arrays.sort (arr);
陣列元素的位置置換
public static void swap( int [ ] arr,int a,int b)
{
int temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
陣列的查詢
pubic static int getIndex (int[] arr ,int key)
{
for(int x = 0; x <arrr.length; x++)
{
if (arr[x]==key)
return x ;
}
return -1;
}
折半查詢,必須陣列是有序的
pubic static int halfsearch(int[ ] arr ,int key)
{
int min, max ,mid;
min = 0;
max = arr,length-1;
mid = (max + min)/2;
while (arr[mid]!=key)
{
if (arr[mid] > key)
min = mid +1;
esle if (key < arr [mid])
max = mid -1;
if (min>max)
return -1;
mid = (max + min )/2;
}
return -1;
}
二維陣列
格式1:int [ ][ ] arr = new int [3] [4];
格式2:int [ ][ ] arr = new int [3] [ ];
引用變數初始化值都為null。