Java復習
? ? Java的基礎知識
? ? 1.變量和數(shù)據(jù)類型以及類型的轉(zhuǎn)換
? ? ? ? ? 基本數(shù)據(jù)類型 :byte short? int? long float double boolean char
? ? ? ? ? 類型的轉(zhuǎn)換: 自動類型轉(zhuǎn)換? 強制類型轉(zhuǎn)換
? ? ? ? ? 比如:一個int類型與double類型轉(zhuǎn)換,最終的結(jié)果是double類型
? ? ? ? ? char c1 = '\n';? ? ? char c1='\n';? \n轉(zhuǎn)義符代表換行? ? \t 表示制表符Tab
? ? ? ? ? int aa = 34; int aa='A';
? ? ? ? ? 浮點數(shù)默認為double
? ? ? ? ? float f =3.14;錯的 需要強轉(zhuǎn) 下面2種類型
? ? ? ? ? float f =(float)3.14;
? ? ? ? ? float f=3.14F;
? ? ? ? ? double ff =3.14;(常用)
? ? ? ? ? boolean 類型默認值為False(常用)
? ? ? ? ? boolean isRight = false? boolean isRight = null;(只有引用類型才能賦值為null)
? ? 2.運算符
? ? ? ? ? 算數(shù)運算符 : + - * / %
? ? ? ? ? 一元運算符 : ++ --
? ? ? ? ? int x = 10;
? ? ? ? ? System.out.println(x++); 10
? ? ? ? ? System.out.println(x); 11
? ? ? ? ? System.out.println(++x); 12
? ? ? ? ? System.out.println(x);? 12
? ? ? ? ? ? int a = (x++)+(++x)+(--x);
? ? ? ? ? ? ? ? ? ? 10? ? 12? ? 11
? ? ? ? ? 賦值運算符 : = += -= *= /= %=
? ? ? ? ? 邏輯運算符 : &&? ||? !? ? ? &&與&區(qū)別? ? || 與|的區(qū)別
? ? ? ? ? 比較運算符: > < >= <= !=
? ? ? ? ? 三元運算符: ?:
? 3.基本語法:
? ? if...esle
? ? if...else if...else?
? ? switch?
? ? while
? ? do...while();
? ? for
? 4.數(shù)組
? ? ? ? 數(shù)組如何定義具钥,如何向數(shù)組中添加元素以及獲取元素
? ? ? ? int[] array = new int[10];
? ? ? ? int[] array1 = new int[]{1,2,3,4,5};
? ? ? ? int[] array2 = {1,2,3,4,5};
? ? ? ? 對象數(shù)組定義
? ? ? Employee emps1= new Employee[10];? ?
? ? ? Employee emps1= new Employee[]{new Employee(),new Employee()};
? ? ? Employee emps1= {new Employee(),new Employee()};
? ? ? for(int i =0; i<emps1.length;i++){
? ? ? ? ? emps1[i];
? ? ? ? ? System.out.printIn(emp.getName());? ? ?
? ? ? }? ?
? ? ? 數(shù)組也是引用類型:默認值null
? ? ? String[] strs = null;
? ? ? 可以向字符串添加3個""
? ? ? String[] strs = new String[3];
? ? ? for(int i = 0;i<3;i++);{
? ? ? strs[i] = "";
? ? ? }
? ? ? String[] strs = new String[]{"","",""};? 不加長度就得在后面賦值
? ? ? String[] strs = new String[]; strs={"","",""};不正確的
? ? ? String[] strs = {"","",""};
? ? ? String[] strs = new String[3]{"","",""}; 不正確
? ? ? 對數(shù)組的排序(冒泡排序法)
? ? ? for循環(huán)嵌套
? ? ? 對二維數(shù)組了解,如何創(chuàng)建二維數(shù)組以及對二維數(shù)組的遍歷
? ? ? 5. 方法(函數(shù)):就是一個功能
? ? ? ? 方法的定義: 有返回值的方法,無返回值的方法
? ? ? ? public? static void m1(String s){
? ? ? ? System.out.println(s);
? ? ? ? }
? ? ? ? public String m2(String name){
? ? ? ? return name;
? ? ? ? }
? ? ? ? ? 方法的調(diào)用:
? ? 類名.方法名? ? ? ?
? ? ? ? ? ? 類名.m1("tom"); String name =? 類名.m2("jazz");
? ? ? ? ? ? 注意:
? ? ? 1.在實際應用中,方法什么時候有返回的/無返回的? 什么時候定義有參數(shù)的/無參數(shù)的
? ? ? 2.參數(shù)表示用戶的輸入澈蚌,而返回值表示方法的最終結(jié)果
? ? ? 3.參數(shù)與返回值類型可以是基本類型也可以是引用類型
? ? ? ? ? ? ? ? ? 變量的作用域:
? ? ? ? ? ? ? ? ? 局部變量(方法中的變量) 寫在方法里
? ? ? ? ? ? ? ? ? 成員變量(類中的變量)
? ? ? ? ? ? ? ? ? 注意:局部變量一定要先初始化然后才能使用
? ? int x? ;
? int[] array=new int[5];
? for (int i = 0; i < array.length; i++) {
x++; 報錯毁腿,因為x沒有初始化,就使用了廓脆。
}
Java面向?qū)ο蠡A:繼承,封裝磁玉,多態(tài)
? 1.類與對象的關系停忿,類中可以寫什么,類中的方法如何調(diào)用
? ? ? ? ? 類與對象的關系:類是抽象的蚊伞,對象是具體的席赂,對象是對模板的復制? ? ? ?
? ? ? ? 創(chuàng)建對象的基本語法:? 類名 變量名(對象名)=new 類名();
? ? ? ? 訪問對象中的屬性行為: 對象名.屬性? ? ? 對象名.方法名()
? ? 2.類中的方法重載?
? ? 3.構(gòu)造器:作用是初始化屬性和對象?
? ? public 類名(){}
? ? 調(diào)用構(gòu)造器:類名 對象名= new 構(gòu)造器(實參1...實參n);
匿名對象:? new 構(gòu)造器().方法名;
注意:使用匿名對象調(diào)用方法的時候,這個方法只能被調(diào)用一次
? ? ? ? ? 初始化屬性?
? ? private Test(String name)? {
? ? this.name=name
? ? }
? ? ? ? ? ? 初始化對象?
? ? ? private String[] array;
? ? ? private Emp emp;
public Test(){
array=new String[10];
emp=new Emp();
}
? ? 調(diào)用構(gòu)造器
? ? Test t = new Test("tom");
? ? Test t = new Test()?
? ? 構(gòu)造器也可以重載?
? ? 繼承: B extends A 為什么使用繼承(體現(xiàn)到Java中的可重用性(少些代碼))
? ? ? Java只支持單繼承?
? ? ? 注意:B類繼承A類的時候會調(diào)用父類中的無參數(shù)的構(gòu)造器时迫,如果沒有會報錯
? ? ? public class A{
? ? ? ? ? public A(){
? ? ? ? ? }
? ? ? ? ? Public A(int a){
? ? ? ? ? System.out,println(a);
? ? ? ? ? }
? ? ? }
? ? ? public class B? extends A{
? ? ? }
? ? ? 注意:this與super的區(qū)別
? ? ? this表示當前類自身的資源 颅停,放在構(gòu)造方法的第一行
? ? ? super表示調(diào)用父類的資源
? this.屬性名
? this.方法名()
? this():表示當前類中的構(gòu)造器? 注意: this()一定要出現(xiàn)方法的第一行
? super:
? super.屬性名
? super.方法名
? super()調(diào)用父類中的構(gòu)造器
4.方法重寫(Override)
? 要有繼承關系,子類的方法與父類的方法相同掠拳,會繼承父類的構(gòu)造器癞揉,會調(diào)用子類重寫后的方法
? 注意:方法重載與重寫的區(qū)別
? 1.重載發(fā)生在一個類
? 2.重寫要有繼承關系,與父類的方法一樣
5.多態(tài)(三個條件)
1.要有繼承關系
2.方法重寫
3.父類的引用指向子類的對象? ? ? 繼承多態(tài)
public void m1(父類型)? m1(子類的對象)
public 父類型m2()? ? ? ? return 子類的對象
使用多態(tài)的好處:可以優(yōu)化程序的設計溺欧,提高重用性喊熟。
注意:子類新擴充的方法對父類是不可見的。才需要引用類型的轉(zhuǎn)換(向上造型:自動轉(zhuǎn)換姐刁,向下造型:強制轉(zhuǎn)換)
6.抽象類與接口
接口也是Java中多態(tài)的體現(xiàn)
抽象類(abstract):一個類中只要有抽象類芥牌,那么這個類一定就一定定義為抽象類 。
抽象類不能實例化(不能創(chuàng)建對象)
抽象類中可以有抽象方法也可以有非抽象方法聂使,從規(guī)范來說我們抽象類中只寫抽象方法壁拉。
在接口中:常量默認的都是 public static final
? ? ? ? 方法默認的都是: abstract
public void m1(List list){}? ? ? 調(diào)用方法 m1(new ArrayList());
public List(父類型) m2()? ? ? ? ? ? ? ? return new ArrayList(子類型)();
? ? 接口與抽象類的區(qū)別
1.從規(guī)范來說: 接口會更加規(guī)范一些(常量以及抽象方法)而抽象類(變量拐叉,常量,非抽象方法)
2.類只支持單繼承而接口可以實現(xiàn)多繼承
3.使用接口的好處:接口靈活(接口和實現(xiàn)可以分離)扇商,解耦合(減少層與層之間的依賴)
? 接口和抽象類都不能被實例化
類成員的訪問權限修飾符:private? default protected public
? 關于接口是如何進行解決耦合的凤瘦。 參考三層結(jié)構(gòu)
? 7.設計模式:單例模式 (重要)?
? 構(gòu)造器是私有的? ?
? 8.異常處理? ? ?
? ? Throwable 類是Java語言中所有錯誤或異常的超類,兩個子類 :Error/Exception(需要程序員處理)? ? ?
? ? 基本語法 try catch fanilly
? ? 異常的兩大類:非檢查異常(RuntimeException)? 檢查異常
? ? try{
//有可能產(chǎn)生異常的代碼
}catch(異常的類型? 變量名){//catch 捕獲異常? 異常類型指的是:ArrayIndexOutOfBoundsException
? ? //處理案铺。蔬芥。。控汉。? ? //子類的子類
}catch(異常的類型2 變量名){//子類
}catch(異常的類型3? 變量名){//父類? ? 從上往下笔诵,從小到大排
}finally{
//無論try中的代碼有沒有異常,都會執(zhí)行finally中的語句
//在實際應用中主要用于對資源的釋放
}? ?
? ? ? 面試題:
throws 與throw 的區(qū)別
throws? 寫在方法的后面
表示異常的聲明姑子,它在定義方法的時候去使用乎婿,表示這個方法有可能會產(chǎn)生異常,但是我不會在這個方法中去處理街佑,誰調(diào)用誰處理谢翎。
throw 表示人為的拋出異常,這個異常對象需要我們自己new? ? 使用語法:throw new NullPointerException("");? ? ?
9.常用的工具:封裝類 (8種)? ? 字符串 (String)? ? SimpleDateFormat(格式化日期)? ?
? ? == 和equals的區(qū)別 (重要)
? ? ==:
? ? 1.對基本數(shù)據(jù)類型進行比較沐旨,它比較的是值是否相等
? ? 2.而引用類型比較的是內(nèi)存地址
? ? equals:
? ? 1.JDK文檔中提供的一些系統(tǒng)類都重寫了這個equals方法森逮,比較的是內(nèi)容是是否相等
? ? 2.對于用戶來說我們自定義的類如果沒有重寫Object中的equals方法,實際來說比較的是內(nèi)存地址
? ? 3.所以說對于用戶的自定義類需要重寫Object中的equals方法
? String 與 StringBuffer的區(qū)別
? StringBuffer的長度是可變的
10.集合
1.List? ArrayLast? ? add get Iterator
2.Set? ? HashSet/TreeSet? add? Iterator
3.Map? ? HashMap/TreeMap? put(key,value)? get(key)
? 以上三種集合的特點:
? List是一個有序的集合磁携,可以有重復的元素? extends Collection
? Set是一個無序的集合褒侧,不能有重復的元素? ? extends Collection
? Map是以鍵Key-值value的方式來保存元素,獲取元素可通過Key就能獲取到value
? Collection與Collections的區(qū)別
? Collection:接口? ? ? Collections:針對集合提供的工具類