java基礎知識點滴整理(一)

1.八種基本類型:boolean,byte,char,short,int,float,long,double(其中boolean佔1bit,1/8字節;byte佔1字節;short和char佔2字節;int和float佔4字節;long和double佔8個字節)

2.補碼的計算規則:正數的補碼和原碼相同;負數的補碼是其反碼+1;反碼是對原碼按位取反,只是最高位(符號位)保持不變

3.i++底層執行:i自增1,執行1步;i+=1底層執行i自增1再賦值給i,執行2步;i=i+1底層執行取i值,再加1,最後賦值給i執行3步

4.字符串拼接考慮數據量和線程安全問題,string是終態修飾,每次拼接都會new object,StringBuffer是線程安全的;StringBuilder是非線程安全

5.如下依次輸出:

fs.TestClass
java.util.Date

因爲getClass方法是在object中,final修飾,在類中調用getClass方法,默認調用的就是本類的,想輸出父類,必須再次getSuperclass

import java.util.Date;

public class TestClass extends Date{
	public static void main(String[] args){
		new TestClass().test();
	}
	
	public void test(){
		System.out.println(super.getClass().getName());
		System.out.println(super.getClass().getSuperclass().getName());
	}
}

6.重載發生在本類中,多個方法形參列表不同本質是通過參數的靜態類型而非實際類型作爲判定依據,靜態類型是編譯器可知,所有以來靜態類型來定位方法執行版本的分派動作,稱爲靜態分派;

重寫發生在子類中,本質是運行時jvm調用字節碼指令時,兩次invokevirtual指令把常量池中的類方法符號引用解析到了不同的直接引用上

7.Java中父子類靜態代碼塊,靜態變量,非靜態代碼塊,非靜態變量,構造函數加載順序:父類靜態資源(靜態代碼塊和靜態變量以代碼中書寫順序爲準)-->子類靜態資源-->父類非靜態資源(非靜態代碼塊和非靜態變量以代碼中書寫順序爲準)-->子類非靜態變量-->父類構造函數-->子類構造函數

8.Integer將-128-127放入緩存中,即int和Integer轉型時值爲-128-127,不會新創建Integer實例(其初次創建時即加載到數組中)

9.Integer迭代器採用的是快速失敗(fail-fast)機制,一旦在迭代過程中檢測到該集合已經被修改(多線程導致),程序立即引發ConcurrentModificationException異常,而不是顯示修改後的結果,這樣可避免共享資源而引發的潛在問題

10.數組適合隨意訪問;鏈接適合頻繁修改;因此對經常讀取的可用arrayList;對頻繁修改的用LinkedList

11.實際開發中,PreparedStatement能否替代Statement

   能替代,PreparedStatement接口繼承Statement

  1>預編譯方式sql和參數分離,有利於提高代碼可能性和可維護性

  2>預編譯語句被db編譯器緩存,後期再執行相同語句就可以直接執行;而statement語句中,每次參數不同都需要重新編譯

  3> statement直接進行字符串拼接,很可能出現sql注入

12.三種寫入文件的方法:

                        //FileWriter
			FileWriter fw = new FileWriter("hello.txt");
			String str = "hello world";
			fw.write(str,0,str.length());
			fw.flush();
			
			//OutputStreamWriter
			OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("hello2.txt"));
			osw.write(str,0,str.length());
			osw.flush();
			
			//PrintWriter
			PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream("hello3.txt")));
			pw.println(str);

13.並行就是兩個任務同時運行,就是甲任務進行的同時,乙任務也在進行。
併發是指兩個任務都請求運行,而處理器只能按受一個任務,就把這兩個任務安排輪流進行,由於時間間隔較短,使人感覺兩個任務都在運行

14.遠程通訊技術方式

  1>底層協議:基於Socket擴展的傳輸協議:http、tcp、udp;網絡IO:bio、nio、aio

  2>應用級協議:按網絡通信原理,將請求轉換成流,通過傳輸協議傳輸到遠端,遠端計算機將收到的請求的流進行處理,處理完畢後將結果轉換爲流,並通過傳輸協議返回客戶端


發佈了25 篇原創文章 · 獲贊 9 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章