一:java基礎部分
1:基本數據類型
java語言有8種基本數據類型:六種數字類型(四個整數型,兩個浮點型),一種字符類型,還有一種布爾型。
byte(占1個字節),short(占2個字節),int(占4個字節),long(占8個字節),float(占4個字節),double(占8個字節),char(占2個字節),boolean(占1個字節)。
byte:
byte數據類型是8位、有符號的,以二進制補碼表示的整數;
最小值是-128(-2^7);
最大值是127(2^7-1);
默認值是0;
byte類型用在大型數組中節約空間,主要代替整數,因為byte變量占用的空間只有int類型的四分之一;
例子:byte a = 100,byte b = -50。
short:
short數據類型是16位、有符號的以二進制補碼表示的整數
最小值是-32768(-2^15);
最大值是32767(2^15 – 1);
Short數據類型也可以像byte那樣節省空間。一個short變量是int型變量所占空間的二分之一;
默認值是0;
例子:short s = 1000,short r = -20000。
int:
int數據類型是32位、有符號的以二進制補碼表示的整數;
最小值是-2,147,483,648(-2^31);
最大值是2,147,485,647(2^31 – 1);
一般地整型變量默認為int類型;
默認值是0;
例子:int a = 100000, int b = -200000。
long:
long數據類型是64位、有符號的以二進制補碼表示的整數;
最小值是-9,223,372,036,854,775,808(-2^63);
最大值是9,223,372,036,854,775,807(2^63 -1);
這種類型主要使用在需要比較大整數的系統上;
默認值是0L;
例子: long a = 100000L,int b = -200000L。
float:
float數據類型是單精度、32位、符合IEEE 754標準的浮點數;
float在儲存大型浮點數組的時候可節省內存空間;
默認值是0.0f;
浮點數不能用來表示精確的值,如貨幣;
例子:float f1 = 234.5f。
double:
double數據類型是雙精度、64位、符合IEEE 754標準的浮點數;
浮點數的默認類型為double類型;
double類型同樣不能表示精確的值,如貨幣;
默認值是0.0f;
例子:double d1 = 123.4。
boolean:
boolean數據類型表示一位的信息;
只有兩個取值:true和false;
這種類型只作為一種標志來記錄true/false情況;
默認值是false;
例子:boolean one = true。
char:
char類型是一個單一的16位Unicode字符;
最小值是’/u0000’(即為0);
最大值是’/uffff’(即為65,535);
char數據類型可以儲存任何字符;
例子:char letter = ‘A’。
2:Java命名規則:Java是大小寫敏感的
包名:由字母組成,所有字母必須小寫,比如:com.whir.xxx
類名,接口名:所有單詞首字母大寫,比如:TestXxx
變量名,函數名:第一個單詞小寫,其他單詞首字母大寫,比如:xxxYyyZzz
常量名:所有字母大寫,多單詞用下劃線分割,比如,XXX_YYY_ZZZ
3:運算符優先級:
下表中具有最高優先級的運算符在的表的最上面,最低優先級的在表的底部。
類別 | 操作符 | 關聯性 |
后綴 | () [] . (點操作符) | 左到右 |
一元 | + + – !? | 從右到左 |
乘性 | * /% | 左到右 |
加性 | + – | 左到右 |
移位 | >> >>> << | 左到右 |
關系 | >> = << = | 左到右 |
相等 | == != | 左到右 |
按位與 | & | 左到右 |
按位異或 | ^ | 左到右 |
按位或 | | | 左到右 |
邏輯與 | && | 左到右 |
邏輯或 | | | | 左到右 |
條件 | ?: | 從右到左 |
賦值 | = + = – = * = / =%= >> = << =&= ^ = | = | 從右到左 |
逗號 | , | 左到右 |
4:JKD1.7 switch表達式的值支持字符串,比如swtich("星期一")
switch語句判斷一個變量與一系列值中某個值是否相等,每個值稱為一個分支。
語法
switch語法格式如下:
switch(exPRession){ case value : //語句 break; //可選 case value : //語句 break; //可選 //你可以有任意數量的case語句 default : //可選 //語句}
switch語句有如下規則:
switch語句中的變量類型只能為byte、short、int或者char。
switch語句可以擁有多個case語句。每個case后面跟一個要比較的值和冒號。
case語句中的值的數據類型必須與變量的數據類型相同,而且只能是常量或者字面常量。
當變量的值與case語句的值相等時,那么case語句之后的語句開始執行,直到break語句出現才會跳出switch語句。3
當遇到break語句時,switch語句終止。程序跳轉到switch語句后面的語句執行。case語句不必須要包含break語句。如果沒有break語句出現,程序會繼續執行下一條case語句,直到出現break語句。
switch語句可以包含一個default分支,該分支必須是switch語句的最后一個分支。default在沒有case語句的值和變量值相等的時候執行。default分支不需要break語句。
5:增強for循環(遍歷集合時很好用)
格式:for(數據類型 變量名:被遍歷的集合(Collection)或數組) {}
二:類、對象及特性
1:類和對象
對象:對象是類的一個實例,有狀態和行為。例如,一條狗是一個對象,它的狀態有:顏色、名字、品種;行為有:搖尾巴、叫、吃等。
類:類是一個模板,它描述一類對象的行為和狀態。
2:權限修飾符
Java語言的修飾符主要分為以下兩類:
訪問修飾符
非訪問修飾符
訪問控制修飾符:
Java中,可以使用訪問控制符來保護對類、變量、方法和構造方法的訪問。Java支持4種不同的訪問權限。
默認的,也稱為default,在同一包內可見,不使用任何修飾符。
私有的,以private修飾符指定,在同一類內可見。
共有的,以public修飾符指定,對所有類可見。
受保護的,以protected修飾符指定,對同一包內的類和所有子類可見。
訪問控制和繼承:
請注意以下方法繼承的規則:
父類中聲明為public的方法在子類中也必須為public。
父類中聲明為protected的方法在子類中要么聲明為protected,要么聲明為public。不能聲明為private。
父類中默認修飾符聲明的方法,能夠在子類中聲明為private。
父類中聲明為private的方法,不能夠被繼承。
非訪問修飾符:
為了實現一些其他的功能,Java也提供了許多非訪問修飾符。
static修飾符,用來創建類方法和類變量。
Final修飾符,用來修飾類、方法和變量,final修飾的類不能夠被繼承,修飾的方法不能被繼承類重新定義,修飾的變量為常量,是不可修改的。
Abstract修飾符,用來創建抽象類和抽象方法。
Synchronized和volatile修飾符,主要用于線程的編程。
3:this關鍵字:代表本類對象,哪個對象調用this所在的函數,this就代表哪個對象
4:構造函數
一個類中默認會有一個空參數的構造函數,其權限和所屬類的權限一致
作用是給對象進行初始化,對象一建立就會調用與之對應的構造函數。
5:Java語言的特性
封裝:隱藏對象屬性和實現細節,僅對外提供公共訪問方式,提高復用性和安全性
繼承:必須類與類間有關系才能繼承,提高代碼復用性,java只支持單繼承,但是可以有多層繼承,但是可以用實現來彌補
子類為什么一定要訪問父類的構造函數呢:因為父類中的數據,子類是可以直接獲取的,所以子類對象在建立的時候,需要先查看父類是如何對這些數據進行初始化的,如果要指定父類中指定的構造函數,可以手動定義super語句來實現。
多態:某一類事物的多種存在形態
多態的實現:父類的引用指向了自己的子類對象(向上轉型)
多態的前提:類與類之間有關系,繼承或實現,通常還存在覆蓋
多態的好處:提高程序擴展性,弊端:父類引用只能訪問父類中成員。
6:抽象類
抽象方法一定在抽象類中
抽象方法和抽象類必須被關鍵字abstract修飾
抽象類不能用new創建對象,不能實例化,因為沒意義,方法沒內容
抽象類中的抽象方法要被使用,必須由子類重寫所有的抽象方法后,建立子類對象調用
7:接口
接口是對外暴露的規則,是程序的功能擴展,接口可以用來多實現,類與接口是實現關系,類可以繼承一個類的同時實現多個接口,接口與接口間可有繼承關系。
接口是特殊的抽象類,接口成員有固定修飾符,常量:public static final 方法:public abstract
接口不能創建對象,被子類實現后,子類需重寫接口中所有抽象方法,這樣子類才能實例化,否則子類還是一個抽象類。
8:重寫與重載
重寫:是對父類方法的重寫,子父類方法要一模一樣
重載:同名函數的參數列表不同
9:內部類
描述事物時,事物內部還有事物,該事物可用內部類描述,比如人體類里有器官類,
Java的內部類構造時持有對外部類的應用,C++不會,這一點和C++不一樣。這點容易引起內存泄露,要注意.
在Java中,非靜態的內部類和匿名內部類都會隱式地持有其外部類的引用。靜態的內部類不會持有外部類的引用。可以參考這里:
"失效"的private修飾符:
內部類訪問規則:
內部類可直接訪問外部類(這里的意思當然就是包含內部類的類)中成員,包括私有
外部類要訪問內部類,必須建立內部類對象
內部類可被static修飾,此時其只能訪問靜態成員了。但是內部類定義在局部時,也就是在外部類的方法中定義一個類,此時的內部類是不能被成員修飾符修飾的,此時仍能訪問外部類中的成員,并只能訪問其所在的局部中的被final關鍵字修飾的局部變量。
匿名內部類,這個在開發中也是可以用的,這個一般是繼承或實現一個類,調用或重寫其方法時方便的使用,缺點是可讀性較差。。。
10:異常處理機制
java兩個重要特性,垃圾回收機制和異常處理機制,使得java沒有內存泄露,實現平臺無關。
這個地方注意catch捕捉到異常后要有個處理,不要不寫也不要直接toString,printStackTrace(),要處理哦。還有一些必須執行的語句要放到finally代碼塊中,比如數據庫的關閉等。
throws和throw區別:
throws使用在函數上,throw使用在函數內
throws后面跟異常類名,可以跟多個,逗號隔開,throw后跟異常對象。
自定義異常類,只需繼承Exception類,自定義輸出內容的話,在構造函數里調用Exception類的構造函數,寫super(str)即可,這個str就是你構造函數參數,也就是你自定義的輸出內容,哈哈。。。
新聞熱點
疑難解答