1.Java編譯運行過程:
JAVA是編譯型和解釋型語言的結合體,首先採用通用的JAVA編譯器將Java源程序編譯成爲平臺無關的字節碼文件(class文件),然後由java虛擬機(JVM)對字節碼文件解釋執行。
計算機高級編程語言按其程序的執行方式可以分爲編譯型語言和解釋型語言。
編譯型語言:用專門的編譯器,針對特定的操作系統將源程序代碼一次性翻譯成計算機能識別的機器指令,例如C,C++等都屬於編譯型語言
解釋型語言是指使用專門的解釋器,將源程序代碼逐條地解釋成特定平臺的機器指令,解釋一句執行一句,例如:ASP,PHP等都屬於解釋型語言。
2.JDK,JRE,JVM的關係:
JDK (Java Development Kit)即可Java開發工具包,包含編寫Java程序所必須的編譯,運行等開發工具以及JRE,開發工具有:javac:用於編譯java程序;java:用於啓動jvm運行;javadoc:用於生成文檔;jar:用於打包
JRE(Java Runtime Environment)即爲Java運行環境,提供了運行Java應用程序所必須的軟件環境,包含有java虛擬機(JVM)和豐富的系統類庫。
JVM(Java Virtual Machines)即爲java虛擬機,提供了字節碼文件的運行環境支持
3.對於變量需要注意的問題:
(1)變量的聲明:當使用一個變量時,必須對該變量進行聲明,變量的聲明包含兩點:變量名和數據類型,變量在使用之前必須聲明,否則會有編譯錯誤。
(2)變量的命名:標識符的命名規則爲:
Ⅰ.可以由字母,數字,”_”或者”$”符組成,但是不能以數字開頭
Ⅱ.中文可以作爲變量名,但是不提倡使用
Ⅲ.Java大小寫敏感,嚴格區分大小寫,命名時需要注意
Ⅳ.不能使用Java保留字(一些java語言規定好的,有特殊意義的字符如break,if等)
變量名需見名知義,且符合java規範:變量的命名需要採用駝峯命名法即如果變量的名字有多個單詞組成,除第一個單詞外,其他單詞的首字母大寫,其餘字母小寫。
(3)變量初始化:
java語法規定變量在使用之前必須初始化,即必須給該變量賦予特定的值。
(4)變量的訪問:
Ⅰ.可以對變量進行賦值,更改等操作,但是需要注意,對變量的操作即爲對其所存儲的數據的操作
Ⅱ.變量的操作類型必須與類型匹配,對變量的賦值或者操作與其類型不匹配,會產生編譯錯誤。
4. 8種基本變量,最常用的有五種類型,分別爲int,long,double,char,boolean
8種基本類型存儲空間以及使用場景:
5.int類型需要注意的問題:
Ⅰ.整數直接量是int類型,所謂直接量就是直接寫出的整數,例如:int a=100;//100即爲直接量,如果直接寫出的整數超過了int的表達範圍,將會出現編譯錯誤,整數直接量也可以是16進制(以0x或0X開頭)或8進制(以0開頭)的形式
Ⅱ.整型數據除法運算中取整:若兩個整數相除,會捨棄小數部分(不會四捨五入,直接捨去小數部分),結果也是整數。eg. int a=30/300; //a的值爲0
Ⅲ.運算時要防止溢出,正數過大溢出,其結果爲負,反之爲正數(int的取值範圍爲-2147483648到:2147483647 )
Ⅳ.如果int類型範圍不夠,可以使用long類型,要表示long直接量,需要以L或l結尾。
6.double類型需要注意的問題:
Ⅰ.默認浮點直接量爲double類型,如果需要表示float類型的直接類,需要加f或者F後綴
Ⅱ.double運算時會出現舍入誤差,2進制系統中無法精確表示1/10,2進製表示10進制會有一些舍入誤差,對於一些要求精確運算的場合會導致代碼的缺陷。
7.char類型需要注意的問題:
Ⅰ.char類型是一個16位無符號整數(都是正數),這個值是對應字符的編碼,java字符類型採用Unicode字符集編碼
Ⅱ.對char型變量的賦值有三種方法,字符直接量賦值(char c1='A';),整型直接量賦值(char c2=65;)(範圍在0~65535),Unicode形式(char c2='\u0041';)
漢字的unicode編碼0x4E00到0x9FBF
Ⅲ.使用轉義字符
8.基本類型間的轉換
Ⅰ.類型間轉換有兩種方式:
1)自動類型轉化(隱式類型轉換):從小類型到大類型可以自動完成,類型的大小關係爲:
2)強制轉換:從大類型轉換爲小類型,語法爲:(需要轉換成的類型)變量
強制轉換,可能造成精度喪失和溢出
Ⅱ.數值運算時的自動轉換:如果在一個表達式中出現了多種數據類型,則運算結果會自動的向較大的類型進行轉換。
Ⅲ.byte,char,short轉換爲int
1)int直接量可以直接賦值給byte,char和short類型,只要不超過其表示的範圍
2) byte,char,short,char三種類型參與運算時,先一律轉換爲int類型再計算
9.++和--運算符:
Ⅰ.如果寫在變量之前,表示在使用這個變量之前加1或者減1
Ⅱ. 如果寫在變量後,表示這個變量使用完之後再加1或者減少1
Ⅲ.i=i++,無法執行多少次,i的結果都不會改變
10.短路邏輯:
Ⅰ.對於&&來說,當第一個操作數爲false時,將不會判斷第二個操作數(&則會繼續判斷第二個操作數,不存在短路邏輯現象)
Ⅱ.對於||來說,當第一個操作數爲true時,將不會判斷第二個操作數
11.使用=進行賦值,在賦值運算符=前加上其他運算符即爲擴展賦值運算符,其效率高於賦值運算符,推薦使用。
12.使用“+”進行字符串連接:
Ⅰ.當+號作用於兩個數字類型變量時,進行算術運算
Ⅱ.當+號兩邊有一個是字符串類型時,進行字符串的連接,連接後的結果爲字符串類型
eg. String str=4+2+“66”; //str=666;
13.三目運算符:其結構爲:boolean表達式?表達式1:表達式2
Ⅰ.先計算boolean表達式
Ⅱ.如果boolean表達式的值爲true,整個表達式的值爲表達式1的值,反之爲表達式2的值
Ⅲ.三目運算符的右結合性,即有多個三目運算符嵌套使用的時候,先計算右邊的三目運算符的結果
eg. Boolean b=true?false:true==true?false:true; //b=true?false:false b=false;
14.考慮到代碼的可讀性,擴展性,建議即便if語句塊中只有一條語句,也不要省略{}
15.使用switch需要注意:
Ⅰ.case後面的常量值必須不同
Ⅱ. switch後面的整型表達式的值必須是整型或者字符型
Ⅲ.switch常常和break語句結合使用實現分支的功能,實現分支功能的效率要高於else if結構,並且結構更清晰,用於分支的時候推薦使用
16.循環結構需要注意:
Ⅰ.while語句的執行過程:首先計算boolean表達式的值,而後進行判斷,若值爲true則執行語句塊,語句塊執行完成之後,再次判斷boolean表達式的值,如果爲true則繼續執行,如此循環往復,直到boolean表示式的值爲false時,退出while循環。
while語法結構: while(boolean表達式){ 語句塊;}
Ⅱ.do while語句的執行過程:先執行語句塊,再判斷boolean表達式,如果爲true則再次執行語句塊,如此循環往復,直到boolean表達式的值爲false時止。
do while語法結構:do{語句塊;}while(boolean 表達式);
(注意區分while和do while的區別)
Ⅲ.for語句用於實現固定次數的循環
for語句的語法:for(表達式1;表達式2;表達式3){語句塊;}
特殊方法:1)表達式1位置內容爲空,表達式後方的”;“不可少(下同)
2)表達式3位置內容爲空(放置到語句塊中)
3)表達式1,2,3位置內容均爲空(可能造成死循環,可以用break跳出 循環)
4)表達式1和表達式3的位置內容多樣化,表達式可以使用逗號表達式,逗號表達式通過“,”運算符隔開多個表達式組成,從左到右開始計算
Ⅳ.break可以用在循環體中用於退出循環結構,常常與條件語句一起使用
continue只能用於循環中,作用是爲跳過循環體中剩餘語句而執行下一次循環
17.數組需要注意的問題:
Ⅰ.聲明數組:數據類型【】數組名=new 數據類型【大小】
Ⅱ.數組的初始化:
1)基本類型的數組,創建完成之後,默認爲其數組元素設置了初始值,元素的初始值爲:byte,short,char,int,long爲0;float和double爲0.0;boolean爲false;
2)數組初始化的方法:
ⅰ.數組聲明的同時進行初始化:int[] arr={10,20,30,40};
ⅱ.對於已經聲明的數組,初始化方法爲:int[] arr; arr=new int[]{10,20,30};
Ⅲ.數組的訪問:
1)獲取數組的長度:可以調用數組的length屬性獲取數組的長度
2)通過下標訪問數組元素,下標從0開始
3)遍歷數組元素:選擇for循環進行變量,循環變量作爲訪問數組的下標
Ⅳ.數組的複製:
1)System.arraycopy方法用於數組複製:
public static void arraycopy(Object src,int srcPoc,Object dest,int destPos,int length)
src:源數組
srcPos:源數組中的起始位置
dest:目標數組
destPos:目標數組中的起始位置
length:要複製的數組元素的數量
2)Arrays.copyOf方法用於數組的複製;
類型【】 newArray=Arrays.copyOf(類型【】original,int newLength)
Ⅴ.數組的擴容:java語法規定,數組的長度在創建之後是不可改變的,所謂的擴容實際上是指創建一個更大的新數組並將原有的數組的內容複製到其中,可以通過Arrays.copyOf()方法,簡單的實現數組的擴展。代碼如下:
int【】 a={10,20,30,40};
a=Arrays.copyOf(a,a.length+1);
Ⅵ.數組的排序:
1)常用的排序算法:冒泡算法:比較相鄰的元素,如果違反最後的順序準則,則交換。
<span style="font-size:18px;"> public static int[] bubbleSort(int[] arr){
int t;
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr.length-1-i;j++){
if(arr[j]>arr[j+1]){
t=arr[j];
arr[j]=arr[j+1];
arr[j+1]=t;
}
}
}
return arr;
}</span>
2)Arrays.sort(數組)方法用於實現數組的排序
18.方法用於封裝一個特定的功能,定義時需要考慮五個要素:修飾詞、返回值類型、方法名、參數列表、方法體
public static int sum ( int num1 , int num2 ) {
// 方法體
}