一、&和&& |和|| 的區別?html
a&b,會執行a,執行b ,得出結論java
a&&b,會執行a,若是a false,則不執行b,直接返回false程序員
二、Math.round(11.5) 等於多少?Math.round(-11.5)等於多少?正則表達式
round(x)方法是獲取最進階算法
Math.round(11.5)= 12數據庫
Math.round(-11.5)= -11編程
該方法的實現:將括號內的數+0.5以後,向下取值,
好比:round(3.4)就是3.4+0.5=3.9,向下取值是3,因此round(3.4)=3;
round(-10.5)就是-10.5+0.5=-10,向下取值就是-10,因此round(-10.5)=-10設計模式
三、switch 是否能做⽤用在byte 上,是否能做⽤用在long 上,是否能做⽤用在String 上?安全
switch表達式後面的數據類型只能是byte,short,char,int四種整形類型,枚舉類型和java.lang.String類型(從java 7才容許),不能是boolean類型服務器
四、用最有效率的⽅方法計算2乘以8
2<<2
左移至關於乘以2,右移至關於除以2
五、在Java中,如何跳出當前的多重嵌套循環
1)
ok: for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { System.out.println("i=" + i + ",j=" + j); if (j == 5) break ok; }
2)
for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { System.out.println("i=" + i + ",j=" + j); if (j == 5) return; } }
3)
boolean isStop=false; for (int i = 0; i < 10&&!isStop; i++) { for (int j = 0; j < 10; j++) { System.out.println("i=" + i + ",j=" + j); if (j == 5){ isStop=true; break; } } }
六、當⼀一個對象被看成參數傳遞到⼀一個⽅方法後,此⽅方法可改變這個對象的屬性,並可返回變化後的結果,那麼這⾥裏里究竟是值傳遞仍是引⽤用傳遞?
其實java都是值傳遞
基本數據類型:是將變量的一個副本傳遞到方法中,方法中如何操做該變量副本,都不會改變原變量的值
引用類型:是將引用的拷貝,傳遞給方法,方法操做變量時會找到保存在該地址的變量,對其進行操做,因此內容會改變。可是將該引用賦值,是不會影響原來的對象的
public class MainTest { public static void main(String[] args) { int a = 5; User u=new User(); test(a,u); System.out.println("a:"+a + " user age:" +u.getAge() ); } public static void test(int a, User u) { a++; u.setAge(u.getAge()+1); } } class User { int age = 3; public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
七、重載(Overload)和重寫(Override)的區別。重載的⽅方法可否根據返回 類型進⾏行行區分嗎?
重寫的規則:
重載的規則:
8)訪問修飾符的做用?
控制訪問
類 包 子類 其餘包
public ∨ ∨ ∨ ∨ (對任何人都是可用的)
protect ∨ ∨ ∨ × (繼承的類能夠訪問以及和private同樣的權限)
default ∨ ∨ × × (包訪問權限,即在整個包內都可被訪問)
private ∨ × × × (除類型建立者和類型的內部方法以外的任何人都不能訪問的元素)
9)char變量能不能存儲一箇中文漢字,爲何?
不能
Java 的char用兩字節存儲,表示範圍從 '\u0000' 到 '\uffff' ,也就是從0到65535。事實上,一個 char不能表示65535個字符,由於只有U+0000 到 U+D7FF 和 U+E000 到U+FFFF能用來表示 一個完整的字符,這些叫作 BMP,另外的做爲high surrogate和 low surrogate 拼接組成由4字節表 示的字符。
在UTF-16編碼中,大於U+10000碼位將被編碼爲一對16比特長的碼元,即按4個字節編碼,此時char沒法表示。utf16編碼格式
因此Java的char只能表示utf16中的bmp部分字符。對於CJK(中日韓統一表意文字)部分擴展字符集則沒法表示
10)抽象類和接口的異同?
從語言層面上:
設計層面上:
十一、面向對象的特徵?
抽象
忽略一個主題中與當前目標無關的東西,專一的注意與當前目標有關的方面.(就是把現實世界中的某一類東西,提取出來,用程序代碼表示,抽象出來的通常叫作類或者接口).抽象並不打算了解所有問題,而是選擇其中的一部分,暫時不用部分細節.抽象包括兩個方面,一個數據抽象,而是過程抽象.
數據抽象 -->表示世界中一類事物的特徵,就是對象的屬性.好比鳥有翅膀,羽毛等(類的屬性)
過程抽象 -->表示世界中一類事物的行爲,就是對象的行爲.好比鳥會飛,會叫(類的方法)
封裝
封裝就是把過程和數據包圍起來,對數據的訪問只能經過特定的界面.如私有變量,用set,get方法獲取
繼承
一種聯結類的層次模型,而且容許和鼓勵類的重用,提供一種明確表達共性的方法.對象的一個新類能夠從現有的類中派生,這個過程稱爲類繼承.新類繼承了原始類的特性,新類稱爲原始類的派生類(子類),原始類稱爲新類的基類(父類).派生類能夠從它的父類哪裏繼承方法和實例變量,而且類能夠修改或增長新的方法使之更適合特殊的須要.所以能夠說,繼承爲了重用父類代碼,同時爲實現多態性做準備.
多態
多態是指容許不一樣類的對象對同一消息作出響應.多態性包括參數化多態性和包含多態性.多態性語言具備靈活/抽象/行爲共享/代碼共享的優點,很好的解決了應用程序函數同名問題.總的來講,方法的重寫,重載與動態連接構成多態性.java引入多態的概念緣由之一就是彌補類的單繼承帶來的功能不足.
動態連接 -->對於父類中定義的方法,若是子類中重寫了該方法,那麼父類類型的引用將調用子類中的這個方法,這就是動態連接
十二、靜態嵌套類(Static Nested Class)和內部類(Inner Class)的不不同?
嵌套類分爲靜態嵌套類 和 非靜態嵌套類。而非靜態內部類又稱爲內部類
內部類包括:成員內部類,局部內部類,匿名內部類
靜態嵌套類和內部類的區別:靜態嵌套類只能訪問靜態變量。內部類既能夠訪問非靜態變量,又能夠訪問靜態變量
1三、Java 中會存在內存泄漏漏嗎,請簡單描述
存在
對於應用程序來講,當對象已經再也不被使用,可是Java的垃圾回收器不能回收它們的時候,就產生了內存泄露
防止內存泄漏:
1四、抽象的(abstract)⽅方法是否可同時是靜態的(static),是否可同時是本地 ⽅方法(native),是否可同時被synchronized修飾?
abstract:用來聲明抽象方法,抽象方法沒有方法體,不能被直接調用,必須在子類overriding後才能使用
static:用來聲明靜態方法,靜態方法能夠被類及其對象調用
native:用來聲明本地方法,該方法的實現由非java 語言實現,好比C。通常用於java與外環境交互,或與操做系統交互
synchronized:用於防止多個線程同時調用一個對象的該方法,與static連用可防止多個線程同時調用一個類的該方法
static與abstract不能同時使用:用static聲明方法代表這個方法在不生成類的實例時可直接被類調用,而abstract方法不能被調用,二者矛盾
native與abstract不能同時使用: 由於 native 暗示這些方法是有實現體的,只不過這些實現體是非java 的,可是abstract卻顯然的指明這些方法無實現體
abstract與synchronized不能同時使用: 從synchronized的功能也能夠看出,用synchronized的前提是該方法能夠被直接調用,顯然和abstract連用
1五、闡述靜態變量量和實例變量的區別
語法上:
靜態變量:須要static修飾
實例變量:不須要static修飾
被誰全部:
靜態變量:屬於類
實例變量:屬於對象實例
初始化時間:
靜態變量:加載類的時候,初始化
實例變量:建立類的對象時
存儲位置:
靜態變量:方法區(jdk1.8 元空間)
實例變量:堆
1六、是否能夠從⼀一個靜態(static)⽅方法內部發出對⾮非靜態(non-static)⽅方法 的調⽤用?
不能
可是 從非靜態方法內,能夠調用靜態方法
1七、接口是否可繼承(extends)接口?抽象類是否可實現(implements)接口?抽象類是否可繼承具體類(concrete class)?
接口能夠extends接口
抽象類能夠implements接口
抽象類能夠extends具體類
1八、 一個".java"源⽂文件中是否能夠包含多個類(不不是內部類)?有什什麼限制?
能夠包含多個類
可是隻能有一個public修飾的,而且該類要與文件名相同
JVM虛擬機實例經過調用某個類的main()來執行程序,這個main()必須時public static void 並接受一個字符串做爲參數,可是該類不必定是public類
1九、 Anonymous Inner Class(匿匿名內部類)是否能夠繼承其它類?是否能夠實 現接口?
匿名內部類在實現時必須藉助一個類或一個接口,若從這個層次上講它是能夠繼承其餘類也能夠實現接口的,但如果經過extends或implements關鍵字那是不可能的
20、Java 中的final關鍵字有哪些⽤用法?
http://www.cnblogs.com/amei0/p/8073853.html
2一、Error和Exception有什麼區別?
http://www.cnblogs.com/amei0/p/4591770.html
2二、 try{}裏有一個return語句句,那麼緊跟在這個try後的finally{}裏的代碼會不會被執行?何時被執行,在return前仍是後?若是finally{}裏有return,try{}裏的return會不會執行?若是try裏分別返回值int a=1;Map map; 在finally{}裏對以上返回值a,map作了修改。那麼最終的返回會被影響嗎?
try{}裏有一個return語句句,那麼緊跟在這個try後的finally{}裏的代碼會不會被執行:finally{}代碼塊始終被執行
在return前仍是後:在return後
若是finally{}裏有return,try{}裏的return會不會執行?:不會
若是try裏分別返回值int a=1;Map map; 在finally{}裏對以上返回值a,map作了修改。那麼最終的返回會被影響嗎?:a不會被影響,map會被引用(值傳遞&引用傳遞)
http://www.javashuo.com/article/p-hmaxztnf-ec.html
2三、Java語言如何進行異常處理,關鍵字:throws、throw、try、catch、 finally分別如何使用?
throws是拋出異常的聲明,說明有拋異常的可能性,但不必定會拋異常
throw是拋出異常
try是將會發生異常的語句括起來,從而進行異常的處理
catch是若是有異常就會執行他裏面的語句
而finally不管是否有異常都會進行執行的語句
2四、闡述final、finally、finalize的區別
2五、List、Set、Map是否繼承自Collection接口?
list,set是
map不是
集合詳解:http://www.cnblogs.com/amei0/p/4589243.html
2六、Collection和Collections的區別?
java.util.Collection 是一個集合接口。它提供了對集合對象進行基本操做的通用接口方法。Collection接口在Java 類庫中有不少具體的實現。Collection接口的意義是爲各類具體的集合提供了最大化的統一操做方式
Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set
Collections則是集合類的一個工具類/幫助類,其中提供了一系列靜態方法,用於對集合中元素進行排序、搜索以及線程安全等各類操做。經常使用方法以下
Collections.sort(list) 排序
Collections.Shuffling(list) 隨機排序
Collections.reverse(list) 反轉
Collections.copy(list,li) 複製
Collections.min(list) 獲取集合中最小元素
2七、 TreeMap和TreeSet在排序時如何比較元素?Collections工具類中的sort() 方法如何比較元素?
TreeSet:要求存放的對象所屬的類必須實現Comparable接口,該接口提供了比較元素的compareTo()方法,當插入元素時會回調該方法比較元素的大小
TreeMap:要求存放的鍵值對映射的鍵必須實現Comparable接口從而根據鍵對元素進行排序
Collections工具類:的sort方法有兩種重載的形式,第一種要求傳入的待排序容器中存放的對象比較實現Comparable接口以實現元素的比較;第二種不強制性的要求容器中的元素必須可比較,可是要求傳入第二個參數,參數是Comparator接口的子類型(須要重寫compare方法實現元素的比較),至關於一個臨時定義的排序規則,其實就是經過接口注入比較元素大小的算法,也是對回調模式的應用(Java中對函數式編程的支持)
2八、闡述 sleep(),wait(),yield()
sleep():
Thread類的方法,用於當前線程短暫休眠
用來暫停線程的執行,將CPU放給線程調度器
線程執行sleep()方法後轉入阻塞(blocked)狀態,會給低優先級的線程以運行的機會,休眠時間結束後,直接進入就緒狀態。
不釋放對象鎖,若是有synchronized同步快,其餘線程仍然不能訪問共享數據
是一個靜態方法,它暫停的是當前執行的線程
若是其餘的線程中斷了一個休眠的線程,sleep方法會拋出Interrupted Exception(爲何要拋出該異常:https://www.ibm.com/developerworks/cn/java/j-jtp05236.html)
休眠的線程在喚醒以後不保證能獲取到CPU,它會先進入就緒態,與其餘線程競爭CPU
wait():
Object類的方法,用於線程間的通信
執行wait()方法後轉入等待(阻塞狀態的一種)狀態,一直到被喚醒,被喚醒之後,先要得到對象鎖,得到鎖後進入就緒狀態。
釋放對象鎖
wait方法是針對一個被同步代碼塊加鎖的對象
在使用這個方法時,必須處於synchronized代碼塊或者synchronized方法中,不然就會拋出IllegalMonitorStateException異常,這是由於調用這個方法前必須拿到當前對象的監視器monitor對象,也就是說notify/notifyAll和wait方法依賴於monitor對象
yield():
Thread類的方法
執行yield()方法後轉入就緒(ready)狀態,讓有一樣優先級的正在等待的線程有機會執行
yield方法不保證當前的線程會暫停或者中止,可是能夠保證當前線程在調用yield方法時會放棄CPU
2九、 synchronized關鍵字的用法
http://www.cnblogs.com/amei0/p/5051003.html
30、什麼是線程池(thread pool)?
http://www.cnblogs.com/amei0/p/8422800.html
3一、線程的基本狀態以及狀態之間的關係?
http://www.cnblogs.com/amei0/p/8473613.html
3二、簡述synchronized 和java.util.concurrent.locks.Lock的異同?
http://www.cnblogs.com/amei0/p/8475972.html
3三、Java中如何實現序列化,有什麼意義
http://www.cnblogs.com/amei0/p/8480260.html
3四、 Java中有幾種類型的流?
http://www.cnblogs.com/amei0/p/8480663.html
3五、闡述JDBC操做數據庫的步驟
http://www.cnblogs.com/amei0/p/8480776.html
3六、 使⽤用JDBC操做數據庫時,如何提高讀取數據的性能?如何提高更更新數據的性能?
3七、 在進行數據庫編程時,鏈接池有什麼做用?
http://www.cnblogs.com/amei0/p/8482877.html
3八、 什麼是DAO模式?
DAO(Data Access Objects)設計模式是屬於J2EE體系架構中的數據層的操做。
DAO設計模式提供了一種通用的模式,來簡化大量的代碼,加強程序的可移植性。
DAO組成
在這個模式中DAO主要完成數據的操做,客戶端依靠DAO接口進行操做,服務端要將接口進行具體實現。DAO的主要組成由如下幾個部分組成。
一、DatabaseConnection:專門負責數據庫打開與關閉操做的類。
二、VO:主要由屬性、setter、getter方法,VO類中的屬性與數據表中的字段相對應。每個VO對象至關於表中的一條記錄。
三、DAO接口:主要定義數據庫操做的接口,定義數據庫的原子性操做,如增刪改,按ID查詢。
四、Impl:DAO的具體實現類,完成具體的數據庫操做,可是不負責數據庫的打開和關閉,接口類的名稱首字母用「I」,表示其是一個接口。
五、Proxy:代理實現類。主要完成數據庫的打開和關閉,並調用Impl類對象(真實對象類)的操做,之因此增長代理類是爲了之後的拓展,若是一個程序能夠A-B,那麼中間最好加一個過渡,使用A-C-B的形式,能夠有效減小程序的耦合度,使開發結構更加清晰。
六、Factory:工廠類,經過工廠類取得一個DAO的實例化對象,編寫工廠類也是爲了下降代碼的耦合度,工廠類產生實例的方法一般是靜態函 數,這樣一來就能夠經過工廠類名直接生成實例
3九、 事務的ACID是指什麼?
原子性(Atomic):組成事務處理的語句造成了一個邏輯單元,不能只執行其中的一部分
一致性(Consistency):在事務處理執行以前和以後,數據是一致的
隔離性(Isolation):一個事務處理對另外一個事務處理沒有影響
持久性(Durabiliy):當事務處理成功執行到結束的時候,其效果在數據庫中被永久紀錄下來
http://www.cnblogs.com/amei0/p/4512573.html
40、JDBC中如何進行事務處理?
設置事務的提交方式爲非自動提交:
conn.setAutoCommit(false);
將須要添加事務的代碼放入try,catch塊中
在try塊內添加事務的提交操做,表示操做無異常,提交事務
conn.commit()
在catch塊內添加回滾事務,表示操做出現異常,撤銷事務:
conn.rollback();
4一、JDBC可否處理理Blob和Clob?
能夠
CLOB:
Character Large Object 字符大對象
在一些數據庫系統裏,也使用Text 做爲CLOB的別名,好比SQL Server
使用CHAR來保存數據。 如:保存XML文檔
BLOB:
binary large object 二進制大對象
是一個能夠存儲二進制文件的容器
使用二進制保存數據。 如:保存圖片
4二、 簡述正則表達式及其用途
正則表達式就是記錄文本規則的代碼
4三、 Java中是如何支持正則表達式操做的
Java中的String類提供了支持正則表達式操做的方法,包括:matches()、replaceAll()、replaceFirst()、split()
Java中能夠用Pattern類表示正則表達式對象,它提供了豐富的API進行各類正則表達式操做
String str = "北京市(朝陽區)(西城區)(海淀區)"; Pattern p = Pattern.compile(".*?(?=\\()"); Matcher m = p.matcher(str); if(m.find()) { System.out.println(m.group()); }
4四、 得到一個類的類對象有哪些方式?
new:
new操做符的本意是分配內存。程序執行到new操做符時, 首先去看new操做符後面的類型,由於知道了類型,才能知道要分配多大的內存空間。分配完內存以後,再調用構造函數,填充對象的各個域,這一步叫作對象的初始化,構造方法返回後,一個對象建立完畢
反射
a:Student stu = (Student)Class.forName("根路徑.Student").newInstance()
b:Student stu = Student.class.newInstance()
區別:
> Class類的newInstance只能觸發無參數的構造方法建立對象,而構造器類的newInstance能觸發有參數或者任意參數的構造方法來建立對象。
> Class類的newInstance須要其構造方法是共有的或者對調用方法可見的,而構造器類的newInstance能夠在特定環境下調用私有構造方法來建立對象。
> Class類的newInstance拋出類構造函數的異常,而構造器類的newInstance包裝了一個InvocationTargetException異常。
clone
先分配內存,將原來對象內存裏的內容copy一份。不會調用構造方法
反序列化
4五、什麼是UML
UML這三個字母的全稱是Unified Modeling Language,直接翻譯就是統一建模語言,簡單地說就是一種有特殊用途的語言
UML的分類
結構型的圖(Structure Diagram)
類圖(Class Diagram)
對象圖(Object Diagram)
構件圖(Component Diagram)
部署圖(Deployment Diagram)
包圖(Package Diagram)
行爲型的圖(Behavior Diagram)
活動圖(Activity Diagram)
狀態機圖(State Machine Diagram)
順序圖(Sequence Diagram)
通訊圖(Communication Diagram)
用例圖(Use Case Diagram)
時序圖(Timing Diagram)
詳解:http://www.360doc.com/content/15/0322/16/14009801_457172619.shtml
4六、闡述Servlet
http://www.cnblogs.com/amei0/p/8485140.html
4七、經常使用的Web服務器有哪些
IIS
IIS服務是Windows產品自帶的一種免費的Web服務器,安裝配置簡單,主要解析的是ASP程序代碼,對於小型的、利用ASP編程的項目,能夠採用其做爲Web服務器。通常能夠跟Apache整合起來使用。這種服務在配置過程當中須要注意權限的問題。
Apache
世界排名第1、免費開源的Web服務器軟件,能夠安裝運行在絕大多數的計算機平臺上,支持大多數語言開發的B/S結構軟件。通常狀況下Apache與其餘的Web服務器整合使用,功能很是強大,尤爲在靜態頁面處理速度上表現優異。
Tomcat
Tomcat是Apache下的一個核心子項目,是目前使用量最大的免費的JAVA服務器。主要處理的是JSP頁面和Servlet文件。Tomcat經常與Apache整合起來使用,Apache處理靜態頁面,好比Html頁面,而Tomcat負責編譯處理JSP頁面與Servlet。在靜態頁面處理能力上,Tomcat不如Apache。因爲Tomcat是開源免費、功能強大易用的,不少JAVA的初學者都喜歡用它。固然,也有很多中小企業用其與Apache整合作Web服務器。熟練掌握Tomcat的使用是很是必要的。能夠這麼說,熟練安裝配置Tomcat是軟件測試工程師的必備技能。
Jboss
Jboss是RedHat的產品(RedHat於2006年收購了Jboss)。與Tomcat相比,Jboss要專業些。JBoss是一個管理EJB的容器和服務器,支持EJB 1.一、EJB 2.0和EJB3.0的規範,自己不支持JSP/Servlet,須要與Tomcat集成才行。通常咱們下載的都是這兩個服務器的集成版。與Tomcat同樣,Jboss也是開源免費的。Jboss在性能上的表現相對於單個Tomcat要好些。固然並不是是絕對的,由於Tomcat作成集羣,威力不容忽視。Jboss沒有圖形界面,也不須要安裝,下載後解壓,配置好環境變量後便可使用。
Resin
Resin是CAUCHO公司的產品,它也是一個經常使用的、支持JSP/Servlet的引擎,速度很是快,不只在表如今動態內容的處理,還包括靜態頁面的處理上,Tomcat、Jboss在靜態頁面上的處理能力明顯不足,通常都須要跟Apache進行整合使用。而Resin能夠單獨使用,固然Resin也能夠與Apache,IIS整合使用。
Weblogic
WebLogic是BEA的產品,用於開發、集成、部署和管理大型分佈式Web應用、網絡應用和數據庫應用的Java應用服務器。將Java的動態功能和Java Enterprise標準的安全性引入大型網絡應用的開發、集成、部署和管理之中。與前面的幾種小型Web服務器相比,更具專業性,但安裝配置也更爲複雜。WebLogic是一個商業的軟件,使用是收費的,費用還挺貴的。
WebSphere
WebSphere是IBM的產品,是因特網的基礎架構軟件,也就是咱們一般所說的中間件。它使企業可以開發、部署和集成新一代電子商務應用(如B2B的電子交易),而且支持從簡單的Web發佈到企業級事務處理的商務應用。比WebLogic更專業,固然價格也更貴。通常部署在IBM專業的服務器上
4七、Java是如何實現跨平臺的?
跨平臺是怎樣實現的呢?這就要談及Java虛擬機(Java Virtual Machine,簡稱 JVM)。 JVM也是一個軟件,不一樣的平臺有不一樣的版本。咱們編寫的Java源碼
,編譯後會生成一種 .class 文件,稱爲字節碼文件。Java虛擬機就是負責將字節碼⽂文件翻譯 成特定平臺下的機器器碼而後運⾏行行。也就是說,只要在不一樣平臺上安裝對應的 JVM,就能夠運⾏行行字節碼⽂文件,運⾏行行咱們編寫的Java程序。 ⽽而這個過程當中,咱們編寫的Java程序沒有作任何改變,僅僅是經過JVM這⼀一」中間 層「,就能在不一樣平臺上運⾏行行,真正實現了了」⼀一次編譯,處處運⾏行行「的⽬目的。 JVM是⼀一個」橋樑梁「,是⼀一個」中間件「,是實現跨平臺的關鍵,Java代碼⾸首先被編譯 成字節碼⽂文件,再由JVM將字節碼⽂文件翻譯成機器器語⾔言,從⽽而達到運⾏行行Java程序 的⽬目的。 注意:編譯的結果不是⽣生成機器器碼,⽽而是⽣生成字節碼,字節碼不能直接運⾏行行,必 須經過JVM翻譯成機器器碼才能運⾏行行。不一樣平臺下編譯⽣生成的字節碼是⼀同樣的,但 是由JVM翻譯成的機器器碼卻不⼀同樣。 因此,運⾏行行Java程序必須有JVM的⽀支持,由於編譯的結果不是機器器碼,必需要經 過JVM的再次翻譯才能執⾏行行。即便你將Java程序打包成可執⾏行行⽂文件(例例如 .exe),仍然須要JVM的⽀支持。 注意:跨平臺的是Java程序,不是JVM。JVM是用C/C++開發的,是編譯後的機 器器碼,不能跨平臺,不一樣平臺下須要安裝不一樣版本的JVM
4八、理解spiring ioc aop
IOC:http://blog.csdn.net/qq_22654611/article/details/52606960/
4九、comparable與comparator的區別?
Comparable: 內比較器 若一個類實現了 Comparable 接口,就意味着 「該類支持排序」。
Comparator: 外比較器 咱們若須要控制某個類的次序,能夠創建一個 「該類的比較器」 來進行排序。適用場景:
1)一個對象沒有實現Comparable接口,可是須要比較
2)一個對象實現了Comparable接口,可是開發者認爲compareTo方法中的比較方式並非本身想要的那種比較方式