錯題集04
總結:
1、瀏覽器根據jsp頁面開頭聲明的編碼方式對request中參數編碼;
2、tomcat默認解碼是ISO-8859-1, 但是我們可以顯示指定解碼格式通過調用 request.setCharacterEncoding("UTF-8"),或者修改tomcat的配置文件server.xml中的編碼,添加uriEncoding屬性。
總結:
程序運行到 try塊,b=20;並沒有發生異常,不運行catch塊,運行到return b;因為finally塊無論如何都要運行,因此並不發生返回動作,進行運行finally塊,b=30;
進行程序返回輸出;
總結:
HttpServletRequest類主要處理:
1.讀取和寫入HTTP頭標
2.取得和設置cookies
3.取得路徑信息
4.標識HTTP會話
總結:
1、ThreadLocal的類聲明:
public class ThreadLocal<T>
可以看出ThreadLocal並沒有繼承自Thread,也沒有實現Runnable接口。所以AB都不對。
2、ThreadLocal類為每一個線程都維護了自己獨有的變量拷貝。每個線程都擁有了自己獨立的一個變量。
所以ThreadLocal重要作用並不在於多線程間的數據共享,而是數據的獨立,C選項錯。
由於每個線程在訪問該變量時,讀取和修改的,都是自己獨有的那一份變量拷貝,不會被其他線程訪問,
變量被徹底封閉在每個訪問的線程中。所以E對。
3、ThreadLocal中定義了一個哈希表用於為每個線程都提供一個變量的副本:
總結:
1. 只看尖括號裏邊的!!明確點和範圍兩個概念
2. 如果尖括號裏的是一個類,那麽尖括號裏的就是一個點,比如List<A>,List<B>,List<Object>
3. 如果尖括號裏面帶有問號,那麽代表一個範圍,<? extends A> 代表小於等於A的範圍,<? super A>代表大於等於A的範圍,<?>代表全部範圍
4. 尖括號裏的所有點之間互相賦值都是錯,除非是倆相同的點
5. 尖括號小範圍賦值給大範圍,對,大範圍賦值給小範圍,錯。如果某點包含在某個範圍裏,那麽可以賦值,否則,不能賦值
6. List<?>和List 是相等的,都代表最大範圍
----------------------------------------------------------------------------------
7.補充:List既是點也是範圍,當表示範圍時,表示最大範圍
public static void main(String[] args) { List<A> a; List list; list = a; //A對,因為List就是List<?>,代表最大的範圍,A只是其中的一個點,肯定被包含在內 List<B> b; a = b; //B錯,點之間不能相互賦值 List<?> qm; List<Object> o; qm = o; //C對,List<?>代表最大的範圍,List<Object>只是一個點,肯定被包含在內 List<D> d; List<? extends B> downB; downB = d; //D對,List<? extends B>代表小於等於B的範圍,List<D>是一個點,在其中 List<?extends A> downA; a = downA; //E錯,範圍不能賦值給點 a = o; //F錯,List<Object>只是一個點 downA = downB; //G對,小於等於A的範圍包含小於等於B的範圍,因為B本來就比A小,B時A的子類嘛 }
錯題集04