1.基本數(shù)據(jù)類型
byte? 8位;? ? shout? ? ?16位;? ? ?int? ? 32位;? ? long? ? 64位;
float(浮點型)? ?32位 ;? ?double(雙精度)? ? ? ? 64位;
char(字符型)? ? ? 16位;? ?boolean(布爾)? ? ?1位
2.基本數(shù)據(jù)類型和封裝類的區(qū)別
1.內(nèi)存位置:基本數(shù)據(jù)類型在棧中;封裝類對象在堆中;
2.默認(rèn)值:基本數(shù)據(jù)類型0或false;封裝類:null;
3.傳參方面:基本數(shù)據(jù)類型傳遞值;包裝類傳遞地址;
4.裝箱和拆箱:裝箱:integer? i =1;拆箱:int? a=new? Integer(10);
3.接口和抽象類的區(qū)別
1.接口多實現(xiàn),抽象類單繼承;
2.接口中只有方法的定義沒有方法的實現(xiàn)
3.接口中只有常量,抽象類中可以有變量;
4.實現(xiàn)接口需要實現(xiàn)接口中的所有方法,繼承抽象類不需要實現(xiàn)所有的方法;
5.抽象類中可以定義非抽象方法;
6.接口中沒有構(gòu)造方法,抽象類可以有構(gòu)造方法。
4.Java中重載和重寫的區(qū)別
1.重載要求方法名相同,參數(shù)列表不同;重寫方法名相同,參數(shù)列表相同;
2.重寫用在具有繼承關(guān)系的子類中;重載用在本類中。
5.文件輸入,輸出分別是什么流
文件輸入:FileInputStream、FileReader、BufferedInputstream、BufferedReader;
文件輸出:FileOutputStream、FileWriter、BufferedOutputstream、BufferedWriter
按照流劃分:
字節(jié)? ? ? 字節(jié)流,字符流
方向? ? ? ?輸入流,輸出流
功能? ? ? ? 字節(jié)流? ? 處理流
6.常見的異常
運行異常:
NullpointerException空指針異常
ArrayIndexOutofBoundsException數(shù)組下標(biāo)越界
FileNotFoundException
受檢異常:
SQLException;IOException;ClassNotFoundException
7.二分查找
要求:(1)必須采用順序存儲(2)必須按關(guān)鍵字大小有序排列
原理:
????將數(shù)組分為三部分,依次是中值(所謂中值就是數(shù)組中間位置的值)前,中值,中值后;
? ? 將要查找的值和數(shù)組的中值進行比較,若小于中值則在中值前面找,若大于中值則在中值后面找,等于中值直接返回,然后依次是一個遞歸循環(huán)的過程,前半部分或后半部分繼續(xù)分解為三部分。
8.遞歸及用法
自己調(diào)用自己的方法,要求:必須有表示結(jié)束的條件;
應(yīng)用:查詢后代數(shù)據(jù);階乘;斐波那契數(shù)列
9.多態(tài)的理解
分為賦值多態(tài)和傳參多態(tài)兩種
賦值:通過多態(tài),只能調(diào)用子類中的重寫的方法,不能表用子類特有的方法
傳參:形參為父類,實參為子類。
接口和類中存在多態(tài)
建立耦合(聯(lián)系),用在賦值傳參。
條件:繼承,重寫,向上轉(zhuǎn)型
10.異常和錯誤的區(qū)別
Error(錯誤)是系統(tǒng)中的錯誤,程序員不能改變和處理的,是在程序編寫時的錯誤,只能通過修改代碼才能修正;
Exception(異常)表示程序可以處理的異常,可以捕獲且可以恢復(fù)。
11.equals底層是怎么實現(xiàn)
比較地址,返回true,判斷是不是字符串,(value當(dāng)前字符串的變量)拿到數(shù)組長度,判斷長度,賦值數(shù)組,比較每一個值
12.談?wù)剬γ嫦驅(qū)ο蟮睦斫?/h4>
面向?qū)ο笫窍颥F(xiàn)實世界模型的自然延伸,這是一種“萬物皆對象”的編程思想。在現(xiàn)實生活中的任何物體都可以歸為一類事物,而每一個個體都是一類事物的實例。面向?qū)ο蟮木幊淌且詫ο鬄橹行?,以消息為?qū)動,所以程序=對象+消息。
面向?qū)ο笥腥筇匦?,封裝、繼承和多態(tài)。
封裝就是將一類事物的屬性和行為抽象成一個類,使其屬性私有化,行為公開化,提高了數(shù)據(jù)的隱秘性的同時,使代碼模塊化。這樣做使得代碼的復(fù)用性更高。
繼承則是進一步將一類事物共有的屬性和行為抽象成一個父類,而每一個子類是一個特殊的父類--有父類的行為和屬性,也有自己特有的行為和屬性。這樣做擴展了已存在的代碼塊,進一步提高了代碼的復(fù)用性。
如果說封裝和繼承是為了使代碼重用,那么多態(tài)則是為了實現(xiàn)接口重用。多態(tài)的一大作用就是為了解耦--為了解除父子類繼承的耦合度。
(如果說封裝和繼承是面向?qū)ο蟮幕A(chǔ),那么多態(tài)則是面向?qū)ο笞罹璧睦碚?。?/p>
13.Java中異常處理機制的實現(xiàn)原理和應(yīng)用
捕獲異常 try catch finally
1,try是嘗試運程代碼塊,如果有異常會被隨后的catch捕獲,異常發(fā)生后代碼不執(zhí)行。
2,catch代碼塊是異常處理代碼,注意:異常的大小關(guān)系,大類型的放到后面處理。
3,finally代碼塊中,經(jīng)常用來處理現(xiàn)場清理。例如:數(shù)據(jù)庫連接關(guān)閉。
3,處理異常有一個基本原則:能夠底層處理的盡量處理,但是如果不能處理,必須拋出
到方法。
14.object里的tostring方法的實現(xiàn)
getClass().getName()+"@"+Integer.toHexString(hashCode());
15.java的三大特性和五大原則
特征:封裝,繼承,多態(tài)
原則:單一原則,開閉原則,替換原則,依賴倒置原則,接口隔離原則。
16.string,stringbuffer,stringbuilder區(qū)別
1.string長度不可變,底層是final修飾的char[]數(shù)組,用于拼接較少的情況
2.stringbuffer? ?JDK1.0? 長度可變,底層是沒有final修飾的char[]數(shù)組線程安全,效率低,多用于多編程情況;
3.stringbuilder? ?JDK1.5長度可變,底層是沒有final修飾char[]數(shù)組,非線程安全,效率高,用于拼接較多的情況
17.隱式轉(zhuǎn)換(自動轉(zhuǎn)換)和顯示轉(zhuǎn)換(強轉(zhuǎn))
隱士轉(zhuǎn)換特征:從小到大,可以隱士轉(zhuǎn)換,數(shù)據(jù)類型將自動提升
強制轉(zhuǎn)換特征:從大到?。ㄈ绻忝鞔_知道數(shù)據(jù)是可以用該數(shù)據(jù)類型來表示的,可以用強制轉(zhuǎn)換)
byte + byte = int; 拿byte存儲以Int計算
byte + short = int; ??
byte,short,int,char,都是以Int來計算。
Int + long = long;
float + short = float;(double也可以)
float + int = float;
float + long = float;(損失精度)
char + double = double;
18如何不用new實例化對象(反序列化和克?。?/h4>
通過I/O流(包括反序列化),如運行反序列化手段,調(diào)用java.io.ObjectInputStream對象的readObject()方法
19.collection和collections
collection抽象的集合概念,實現(xiàn)它有l(wèi)ist和set
collections集合靜態(tài)工具類,包含集合的工具方法,sort()等
19 final,finalize和finally的不同之處
final 是一個修飾符,可以修飾變量、方法和類。如果 final 修飾變量,意味著該變量的值在初始化后不能被改變。
finalize 方法是在對象被回收之前調(diào)用的方法,給對象自己最后一個復(fù)活的機會,但是什么時候調(diào)用 finalize 沒有保證。
finally 是一個關(guān)鍵字,與 try 和 catch 一起用于異常的處理。finally 塊一定會被執(zhí)行,無論在 try 塊中是否有發(fā)生異常。
20 final的用法
1.被final修飾的類不可以被繼承
2.被final修飾的方法不可以被重寫
3.被final修飾的變量不可以被改變,如果修飾引用,那么表示引用不可變,引用指向的內(nèi)容可變
4.被final修飾的方法,JVM會嘗試將其內(nèi)聯(lián),以提高運行效率
5.被final修飾的常量,在編譯階段會存入常量池中
21 static用法
1.static修飾的變量,存儲在常量池,公共訪問;
2.static修飾的方法為靜態(tài)方法,存放在方法區(qū),可以通過“類型.方法名”來調(diào)用
3.static修飾的類不能調(diào)用非靜態(tài)變量或方法,但是非靜態(tài)方法或變量可以訪問靜態(tài)變量或方法
4.static優(yōu)先于對象創(chuàng)建,只能修飾成員變量
拓展:靜態(tài)代碼塊>main方法>構(gòu)造代碼塊>構(gòu)造方法
儲存于堆內(nèi)的方法區(qū),在主方法執(zhí)行之前加載
聲明的變量儲存在常量池中,修飾的方法為靜態(tài)方法,類方法
非static修飾的變量及方法能夠訪問static修飾的變量和方法
22.截取字符串
Substring(int startindex ,int endindex)前包含,后不包含
Substring(int startindex,int length)
split(",");(用“,”截取)
23.泛型的理解
泛型是具有占位符(類型參數(shù))的類,機構(gòu),接口和方法,占位符就是先占住一個固定的位置,再往里面添加內(nèi)容的符號,就是約束數(shù)據(jù)類型的
24 請求轉(zhuǎn)發(fā)和重定向的區(qū)別
轉(zhuǎn)發(fā):
req.getRequestDispatcher("***.jsp";)
服務(wù)器內(nèi)部轉(zhuǎn)發(fā),訪問該項目下的文件,一次請求,URL不變
重定向:
resp.sendRedirect("http://baidu.com");
可以訪問任何資源,由jsp文件發(fā)出的兩次請求,URL變化
25.JVM運行順序
1.運行class文件((靜態(tài)變量、靜態(tài)初始化塊)–>(變量、初始化塊)–> 構(gòu)造器;如果有父類,則順序是:父類static方法 –> 子類static方法 –> 父類構(gòu)造方法- -> 子類構(gòu)造方法?)
2.管理并分配內(nèi)存
3.執(zhí)行垃圾回收
26.連接池的作用
減少創(chuàng)建連接的時間,更快響應(yīng),統(tǒng)一管理。