java語言編程基礎
java語言基本要素
高級語言如c++、c#、java等都有一些共同性的東西:關鍵字、標識符、
運算符、註釋、數據類型、常量和變量、語句、函數、數組。高級語言在這些要素上大同小異。
Java關鍵字:一些有特定含義,有專門用途的字符串(keyword)。Java中關鍵字均為小寫。如do while if int等。不需要記,用多了自然會知道。
標識符
自定義的名稱。如類名、變量名、方法名等。合法標識符規則:1 不可使用關鍵子字 2 不能以數字開頭。在java中標識符可有26個英文大小寫字母、數字0~9、_$組成。Java中嚴格區分大小寫。
★:編程中一般起有意義的標識符,方便閱讀。這也是一個良好的編程習慣。
註釋
顧名思義,就是對代碼進行一些標註,說明,或者暫時的”刪除”。
Java的註釋格式為://單行註釋 /* xxxxx */多行註釋。註意:註釋的代碼不參與編譯,即不包含在字節碼中。
數據類型
Java 是強類型語言,每一種數據都定義了明確的數據類型,在內存總分配了不同的大小的內存空間。註:整數默認int,小數默認double。類型轉換:分為強制類型轉換(顯示)和自動類型轉換(隱式)。表達式中byte、short、char的值會提升至int,其他的long、double、float,對應自身類型
例:System.out.println(‘a‘ + 1);//char自動類型轉換 98
System.out.println( (char)(‘a‘ + 1));//強轉 b ACSII碼
byte b = 4; //byte 範圍-128~127 在此範圍內的值java會自動強轉為byte
byte = b1 + b2;// 變量不可檢測,編譯會出錯,應加強轉 舉一反三 以下類型一樣
Byte 8位帶符號整數 -128到127之間的任意整數
Short 16位無符號整數 -32768~32767之間的任意整數
Int 32位帶符號整數 -2^31到2^31-1之間的任意整數
Long 64位帶符號整數 -2^63到2^63-1之間的任意整數
Float 32位單精度浮點數 根據IEEE754-1985標準
Double 64位雙精度浮點數 根據IEEE754-1985標準 一些提示:
不象其它程序設計語言,Java語言中的整型的位數是固定的,而不會根據硬件平臺以及操作系統的不同而不同。
值傳遞:(形式參數類型是基本數據類型加上String類型):方法調用時,實際參數把它的值傳遞給對應的形式參數,形式參數只是用實際參數的值初始化自己的存儲單元內容,是兩個不同的存儲單元,所以方法執行中形式參數值的改變不影響實際參數的值。
引用傳遞:(形式參數類型是引用數據類型參數):也稱為傳地址。方法調用時,實際參數是對象(或數組),這時實際參數與形式參數指向同一個地址,在方法執行中,對形式參數的操作實際上就是對實際參數的操作,這個結果在方法結束後被保留了下來,所以方法執行中形式參數的改變將會影響實際參數。
常量與變量
常量表示不可以改變的數值。Java中的常量:1 整數常量,所有整數 2 小數常量,所有小數。 3 布爾型常量,true和false。 4字符常量 用‘’標識 5 字符串常量 用“”標識 6 null常量,就一個null。
變量:內存中的一塊區域,其中有名稱(變量名)和類型(數據類型),該區域的數據可以在同一數據類型下不斷變化。用途:不斷的存放該數據類型的常量,可重復使用。變量的作用範圍:在{}中有效。需要初始化。定義變量格式:
數據類型變量名 = 初始化值;在java中的基本類型變量都有一個默認的初始化值,因此也可以 基本類型 變量名;前提是該變量是類的成員變量時才有默認值,作為局部變量時必須要初始化;
運算符
算數運算:+ 加,連接符如“3” + 2 輸出32 - 減 *乘 /除 取商 %取余
++自增(原有基礎+1,再賦給原數據 a++等價與 a = a+1 ) --自減
+=加等於a+= 4等價與a = a+4
★:a++參與其他運算時,a原值參與運算後再+1, ++a 則是a+1後參與運算
賦值運算: = 、+= 、-=、/=、%=
比較運算:
>大於 <小於 ==等於 !=不等於 <=小於等於 >=大於等於
instanceof 檢查是否是類對象 例:"Hello" instanceof String //true
比較運算符的結果只有兩個true 或 false
邏輯運算:&&與 ||或 & |亦可,單個與2個的區別: 表達式1&表達式2:兩邊同時運算後,結果相與;表達式1&&表達式2:表達式1若=false,表達式2不再運算。 用於連接兩個boolean類型的值
位運算:直接對二進制進行操作 <<左移 >>右移 >>>無符號右移 &與 | 或 ^異或 ~反碼
★ 2<<3 =16 左移3位後低位補零 等價與 2 * 2(3)
6>>1 = 3 右移後1位,若高位為0,空位補零,否則補1 等價與 6/2(1)
用位運算比算數運算更高效 3*8 ,3<<3 前提:2的整數倍
兩個數值型變量交換值的方法:
1.a = temp, a = b, b = temp;
2.a =a + b, b= a-b, a = a-b;
3.a=a^b; b=a^b; a=a^b; 一個數異或兩次等於原來的數
三元運算:格式:(條件表達式)?表達式1:表達式2 如果條件表達式為 true結果等於表達式1,為false,結果為表達式2。可看做簡 化的if else 語句,但區別是三元運算一定會有結果。
例:獲取兩數中較大者: int a=4,b=3,c;c= a>b?a:b;結果c=4
語句(程序流程控制)
判斷結構、順序結構、循環結構、選擇結構。
順序結構:沒什麽好說的,就是程序從上到下執行。
判斷結構:if 語句,if else 語句 ,if else if else if..語句:
if(條件判斷){
true執行
} else{
false執行};
不寫else默認if的以下的程序就是else要執行的程序,如果沒有中括號,但按照一定的格式(如上去掉中括號)if else 語句也成立。
{}的作用:括起來的代碼叫局部代碼塊,可決定局部變量的生命周期。
選擇結構:switch語句:switch(表達式){
case(取值1):
執行;break;//已取1值,中斷選擇,執行switch的下一條
case(取值2):
執行;break;
......
default:語句;break;//如果都沒選擇case的值(先判斷case值,不論default寫在哪裏),則取默認值。
}
註:只有四種數據類型供給switch選擇,byte、short、int、char、Enum(枚舉類型)、String(java7新增)。緊跟}的語句可以不寫break;
循環結構:語句:while、 do while、 for.
While(條件表達式){ do{
執行語句; 執行語句;
}while(條件表達式);//註意分號
}
while(){} 若條件為true,執行語句後 再次判斷條件,若為true再執行第二次語句,再判斷...,直到條件為false為止。
do while 無論條件如何至少會執行一次do中的執行語句。先做後判斷。
for語句:格式for(初始化表達式;循環條件表達式;循環後的操作表達式){
執行語句;//循環體
}
運行順序:首先執行初始化表達式,然後判讀循環條件表達式,若真,執行循環體,然後在執行循環後的操作表達式,接著再判斷條件表達式,重復過程,知道調教不滿足為止。For語句可以嵌套for 、if。
註:while和for可以交換使用,在於for中定義的變量包括在初始化表達式中定義的變量在循環結束後被內存釋放。 無限循環:while(true) for(;;)
其他語句:break跳出循環應用與選擇和循環結構、continue跳出本次循環,執行下次一循環,應用於循環結構。
註:兩個語句必須作用於自己的應用範圍裏才有效。這兩個語句單獨存在時後不跟其他語句,因為執行不到。
函數
函數即方法,指在類中具有特定功能的代碼塊。運用函數可以將功能代碼進行封裝,並切只有在被調用時才會執行,提高了代碼的復用性。
如何設計一個函數:以函數的功能為中心,考慮功能如何實現?需要幾個形參?返回值是什麽,自然而然就能下手了。
註:函數內不能再定義另一個函數,能調用其他函數(需要看修飾符,後文會提),函數的結果應返回給調用者。函數調用完,便被內存移除,當被調用時再加載進內存(形參會掛..)。
格式:修飾符 返回類型 函數名(參數類型 形式參數1,參數類型 形式參數2...){
執行語句;
return ;返回值
}
特殊:函數無返回值,不需要返回值時返回類型用void,return可以不寫。
函數的重載:在一個類當中允許存在多個重名的函數,只要它們的形參個數或形參類型不同即可。
重載:同類,同名 ,同返回值,不同參數。
註:與返回類型沒有關系,區別僅在於參數列表。
數組
同一種類型數據的集合,數組其實就是一個容器。
格式:
元素類型[] 數組名 = new 元素類型[數組長度]
元素類型[] 數組名 = new 元素類型{元素1,元素2,....}
數組自動給元素標號,從0開始。不明確具體的數據是什麽時用格式1,
已知具體數據用格式2.
數組常見的異常:
ArrayIndexOutofBoundsException: 下標越界,即訪問了數組不存在的角標。
NullpointerException: 當引用的變量沒有任何實體指向時arr=null,出現該異常。
對數組的操作通過操作角標完成,arr[x] = xx; print(arr[x]);...可以用for循環遍歷數組。遍歷數組能完成很多有用的功能,查找某個特定數據,求和,求最大,排序等。
基本的遍歷方式:for(int = 0;i<arr.length;i++){
arr[i];
}
二維數組:數組中的數組。
格式:int[][] arr = new int[2][3];//二維數組中有2個含有三個元素的一維數組。
int[]][] arr = new int[3][];//二維數組中有三個一維數組。
排序與查找: 記於數據結構與算法中。
java語言編程基礎