String str=new String("abc"); 建立了幾個對象?html
這是個極簡單極常規的問題:答案是:2個web
面試的時候不知道是第一次面試緊張仍是以爲問題簡單太自信,張口就說了1個。回來的路上猛地想起來,差點找個地縫鑽進去。面試
例:String str="abc"; 毫無疑問,這行代碼建立了一個String對象。
例:String a="abc"; String b="abc"; 那這裏呢?答案仍是一個。
例:String a="ab"+"cd"; 再看看這裏呢?答案是三個。sql
String對象的聲明數據庫
原來寫過==與equals的區別時也提到過 equals與==的區分編程
寫一段冒泡排序數組
/*冒泡排序: 冒泡排序(BubbleSort)的基本概念是:依次比較相鄰的兩個數,將小數放在前面,大數放在後面。 即在第一趟:首先比較第1個和第2個數,將小數放前,大數 放後。 而後比較第2個數和第3個數,將小數放前,大數放後, 如此繼續,直至比較最後兩個數,將小數放前,大數放後。 至此第一趟結束,將最大的數放到了最後。 在第二趟:仍從第一對數開始比較 (由於可能因爲第2個數和第3個數的交換,使得第1個數再也不小於第2個數),將小數放前中,大數放後. 一直比較到倒數第二個數(倒數第一的位置上已是最大的). 第二趟 結束,在倒數第二的位置上獲得一個新的最大數(其實在整個數列中是第二大的數)。 如此下去,重複以上過程,直至最終完成排序。*/ public class SortTest { public static void main(String[] args) { //定義數組 int arr[] = { 24, 13, 48, 25, 88, 66, 20, 14, 45, 360, 65, 77 }; int k = 0; // 冒泡排序 for (int i = 0; i < arr.length - 1; i++) { //設定i爲第i行 for (int j = 0; j < arr.length - 1; j++) { //設定j爲第j個數 if (arr[j] < arr[j + 1]) { //若是前邊的數小於後邊的數 int t = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = t; //進行交換,把大的放在前面 k++; //交換的總次數 } System.out.print("第" + (i+1) + "行的第j=" + (j+1) + "次交換\t"); for (int d = 0; d < arr.length; d++) { System.out.print(arr[d] + "\t"); //輸出 } System.out.println(); } } System.out.println("交換的次數爲" + k); } } **寫一段選擇排序** public class Sort2Test { /*選擇排序 第一次從下標爲0的開始下標爲0的這個數與後面的n-1個進行比較; 找出最小或者最大的放在下標爲0的這個位置; 第二次從下標爲1的開始比較;查詢剩下的最大或者最小值;放在 下標爲1的位置;以此類推;直到排序完成.*/ public static void main(String[] args) { //定義數組 int arr[] = { 24, 13, 48, 25, 88, 66, 20, 14, 45, 360, 65, 77 }; // 選擇排序 int l = 0; for (int i = 0; i < arr.length - 1; i++) { for (int j = i + 1; j < arr.length - 1; j++) { if (arr[i] < arr[j]) { int t = arr[i]; arr[i] = arr[j]; arr[j] = t; l++; } System.out.print("第" + (i+1) + "趟的第j=" + j + "次交換\t"); for (int d = 0; d < arr.length; d++) { System.out.print(arr[d] + "\t"); } System.out.println(); } } /*for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + "\t"); }*/ System.out.println("交換的次數爲" + l); } }
Oracle、Mysql的分頁程序服務器
Oracle:代理
SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHERE ROWNUM <= 40 ) WHERE RN >= 21
Mysql:code
取前5條數據 select * from table_name limit 0,5 查詢第11到第15條數據 select * from table_name limit 10,5
單例模式
Java中單例模式定義:「一個類有且僅有一個實例,而且自行實例化向整個系統提供。」
顯然單例模式的要點有三個;一是某個類只能有一個實例;二是它必須自行建立這個實例;三是它必須自行向整個系統提供這個實例。
說一下Servlet執行流程和生命週期
執行流程:
客戶端發出請求,經過表單或者超連接,找到相對應的servlet(@WebServlet(「」))
WEB3.1以後註解開發不須要再去web.xml中配置了,可是兩者不能同時有經過redirect方法或者forward方法將數據返回到客戶端
生命週期
客戶端發送請求後首先判斷是否存在Servlet實例,若是沒有存在建立Servlet實例(Servlet的構造方法)。(Servlet引擎載入servlet)
若是存在Servlet實例,則開始其初始化階段,執行器初始化方法(init()方法)。
第三階段是響應客戶端請求階段,調用service()方法,根據提交方式選擇執行doGet()方法或者doPost()方法。
最後是銷燬階段,程序結束或者是服務器中止,調用其銷燬方法(destroy()方法)
Spring的核心是什麼?
IOC和AOP
IOC:一個bean容器,其中的bean可實現控制反轉(依賴注入)
依賴注入(控制反轉)的意思就是你不用顯示的在一個類裏用new關鍵字來生成你想要的對象而只需在xml配置文件裏添加相應節點便可,這樣就讓你整個程序的組成變得靈活多樣。
AOP:面向切面編程
Spring中AOP代理由Spring的IOC容器負責生成、管理,其依賴關係也由IOC容器負責管理。
2018.06.27.保定