第一章總結
1.java語言的發展方向:
j2se → java se
j2me → java me
j2ee → java ee →jakarat ee
2.java語言的特點:簡單、面向物件、健壯性、安全性、分散式、跨平臺、編譯性自動垃圾回收機制。
3. jvm、jre、jdk的關係:
jvm:java虛擬機器,二進位制位元組碼.class檔案的執行環境
jre:java執行環境,java檔案的執行環境jre=jvm+核心類庫
jdk:java語言開發工具包jdk=jre+java語言開發工具
4.環境變數的配置,一般選用動態配置法,建立一個系統變數:名稱為:JAVA_HOME ,地址配置到java的jdk的安裝路徑bin的上一級(為了方便今後的專案不在配置環境),然後在path路徑下配置到bin目錄上,%%這個符號表示引用,格式為:%JAVA_HOME%\bin;靜態的配置方法為:在path路徑上,點選編輯然後點選更改,把jdkbin檔案的目錄放在第一個,儲存好就行了,放第一的目的是為了減少path的操作。
5.關鍵字和識別符號:
關鍵字:賦予了特殊的單詞。
識別符號:由類名、物件名、方法名、變數名和常量名組成。
注意識別符號規則:
1.只能由字母、數字、_、$組成,並且不能為數字開頭;
2.不能是關鍵字
3.支援中文,但是不建議用中文
4.區分大小寫,但是不建議用大小寫。因為c語言寫的系統,最後寫的東西會用到c上去,而
c語言不分大小寫
5.駝峰原則:小駝峰:方法名和變數名都是第二個單詞首字母大寫
大駝峰:類名和介面名都是每個單詞首字母大寫
6.常量名全部字母都大寫,包名全部小寫
6.資料型別:分為兩大類,引用資料型別和基本資料型別。
基本資料型別:整數型:byte(1位元組(一個位元組為8位,一位為1bit,叫位元),位元組型、範圍:-2^8—2^7)、short(2位元組,短整型、範圍:-2^162^15)、int(4位元組整型、範圍:-2^32—2^31)、long(8位元組,長整型、範圍:-2^64—2^63)
浮點型:float(4位元組)、double(8位元組)
布林型:boolean (1位元組,結果只能是ture和false)
字元型:char(2位元組,採用ascii碼編碼,’a’是97,和’A’的值是65還不相同的)
7.運算子:算數運算子、賦值運算子、比較運算子和、邏輯運算子和三目運算子。
算數運算子:+ - * / % -- ++ (自增自減:符號在前則先先加減再賦值,變數在前先賦值再加減)
賦值運算子:= += -= *= /= %=(有自動型別轉換,但是會產生精度損失:long a=(long)10;int b+=a;)
比較運算子:> < >= <= == != (結果為true和false,如果要A>B>C,則要用到邏輯運算子)
邏輯運算子:& | && || !(短路與也叫雙與和短路或和雙或,單與和單或的話兩邊的式子都會執行
而雙與:第一個為false第二個就不執行,雙或:第一個為true第二個不執行)
三目運算子:格式:(布林判斷式? true的結果:false 的結果)簡寫的if—else,但是true和false的結果必須由不能什麼都不寫,否則編譯不通過)
8.全域性變數和區域性變數:
全域性變數:類中方法外,可以不賦值,就能使用,每種資料都有預設值,如下:
區域性變數:方法中,必須賦值才能使用
資料的預設值:整型:0 浮點型:0.0 字元型:‘\u0000’ 布林型 :false 引用資料型別:null
9.進位制:
二進位制:0-1,逢2進1
八進位制:0-7,逢8進1
十進位制:0-9,逢10進1
十六進位制:0-9,10-15用abecdf來表示
注意:主要是計算機中儲存的數值為二進值,都是以補碼的方式儲存的,正數的補碼為原碼,
負數的補碼為反碼加一
10.位運算 <<有符號左移 >> 有符號右移 >>> 無符號右移
格式:運算元 <<移動位數
有符號左移:正數:乘以2的移動位數的冪,負數無規律
有符號右移:正數:除以2的移動位數的冪,負數無規律,正數補0,負數補1
無符號右移:全部補0,不論是0還是1
11.掃描器:Scanner
步驟:1.先建立掃描物件:Scanner sc=new Scanner(System.in);
2.導包:用import :import java.util.Scanner;
3.用變數來接收掃描進來的數字:比如我需要一些正數,就用int型別的變數來接收:
int a= nextInt();後面int是的單詞首字母大寫。
12.分支結構:有if、if-else、switch分支結構
格式:1.if(布林結果的表示式){結果為true 執行大括號裡面的語句}
2.if(布林結果的表示式){結果為true 執行大括號裡面的語句}else {為false執行的語句}
3.if(){}else if(){}else…else{}
4.switch(變數值){
case 具體的變數值1: 執行語句;break;
……
case 具體的變數值n: 執行語句;break;
default:執行語句;
}
注意:1.switch有貫穿現象,用break跳出,default標識除此之外輸出結果,可以省略不寫
2.變數值型別:byte short int char String型別
13.迴圈結構:有while、do-while、for迴圈,其中迴圈的布林判斷如果衡為true,則為死迴圈,以應用在寫一個計算器,可以使用多次。
格式:1.while (布林型表示式){為true執行大括號的語句}
2.do{為true執行大括號的語句}while(布林的表示式);注意:do-while與while的區別是不管為true還是false都會執行一次
3.for (初始變量表達式(可以不寫)①;布林型別的表示式②;初始變數的改變的表示式③){執行語句④
}
具體的步驟為:先執行①,然後判斷②是否成立,如果成立則執行④,再執行③,在判斷②是否成立,成立執行④。①只執行一次,而且是在迴圈之前就執行完畢,當然也可以不寫,省略。
14.迴圈的巢狀:雙迴圈:也叫大圈套小圈。
格式:for(){
for (){}
}
注意:外層控制行,內層控制列,如列印一個任意行和列的*號矩陣
15.隨機數:Random
跟掃描器一樣,都是java我們提供的型別:
步驟:1.建立一個隨機數產生的物件:Random rd =new Random();
2.導包:import java.util.*;(*代表所有的包,包括了Scanner和Random等等的包)
3.產生的隨機數通過一個數來接收:int a = rdnextInt(n);n的取值為[0,n)需要什麼樣的型別就用什麼型別的變數,但是next後面的型別名第一個字母要大寫。
break和continue的區別:break為跳出迴圈和結構(switch),continue為跳過本次迴圈,只要
迴圈條件判斷值為true就還可以繼續迴圈,迴圈還沒結束。
16.方法:具有特定功能的程式碼塊。
好處:提高程式碼的複用性。
格式 :[許可權修飾符]修飾符 返回值型別 方法名稱(形參的型別 形參變數名){
方法體}
注意:實參和形參是不一樣的,實參是具體的資料,是需要傳入的資料,而形參則是方法名後的小括號
的內容,是來寫方法是便於描述的,同時實參也是通過形參傳遞資料到方法中的。
17.方法的使用:不能巢狀,一個類可以有多個方法,方法裡面不能有方法。
注意:1.不呼叫不執行
2.如果在同一個類中直接呼叫 格式:add();
3.在不同的類中得通過物件去呼叫 格式:先建立物件,物件名稱.方法名();
18.方法的返回值:
1.返回值的型別必須與return後的資料型別一致,
2.當為void型別時,就沒有返回值,此時return就可以省略
返回值的使用:
1.直接列印輸出:System.out.println(“add(23,33)”)
2.賦值使用:用一個變數來接收;int a = add(23,33);
3.直接呼叫:執行了方法,但是返回值不能使用了:add(23.33);
19.方法過載:
好處:降低程式設計師的記憶複雜度
概念:在一個類中,方法名稱相同,引數列表不同,稱為方法過載
1.與返回值型別無關,
2.引數列表不同:引數個數不同、引數型別不同、引數順序不同
20.方法的記憶體圖:棧:載入的是方法和區域性變數,堆:載入的是物件、靜態成員和常量
棧的特點:隨著元素的進棧,棧的指標依次上移,先進後出,後進先出。
壓棧:進棧,push
彈棧:出棧,pop
21.陣列:多個變數組成的一個整體,用來便於批量操作資料的,也是用來儲存資料的。
1.元素:陣列中的每一個變數
2.索引:角標,編號
3.長度:陣列中的元素的個數
22.陣列的宣告方法:
1.動態初始化:
格式:資料型別 [] 陣列名稱=new 資料型別 [長度];
陣列一旦建立,就確定了長度,資料中的元素為預設值,見8全域性變數和區域性變數的總結。陣列的名稱可以在[]前,也能在[]後,兩個方式都是合法的
2.靜態初始化
格式:資料型別 [] 陣列名稱=new 資料型別 []{值1,值2,……};
[]中沒有長度值,長度值為大括號裡面的值的個數,檢視的用陣列名稱.length
3.簡寫的靜態初始化:宣告和賦值不能分開,其他的兩個可以
格式:資料型別 []陣列名稱={值1,值2,……};
23.陣列的異常:
1.陣列角標越界異常。ArrayIndexOutofbourdsExcrption
原因:陣列的訪問超出索引範圍
2.空指標異常:NullPointorException
原因:物件為空
24.二維陣列的宣告和賦值:陣列套陣列,Java中沒有多維陣列的概念,所謂的多維陣列,就是陣列套陣列
1.動態初始化:
格式:陣列型別[] [] =new 陣列型別[長度1][長度2]
注意:長度2可以省略不寫,但是必須要先賦值才能使用,不然會出線空指標
2.靜態初始化
格式:陣列型別 [] [] =new 資料型別 [] []{{},{},{}};
3.簡寫的靜態初始化
格式:陣列型別 [] [] ={{},{},{}}
注意:對於二維陣列來說,第一個[]表示陣列的外層,第二個[]陣列的內層,在堆中如圖