錯題集day01

Day80_錯題集

先定個小目標:天天作20-30道題把。加油java

一、局部內部類能夠用哪些修飾符修飾?瀏覽器

abstract 和final安全

局部內部類式放在代碼塊或者方法中的。不能有訪問控制修飾符,也不能用static修飾。多線程

二、指出下來程序運行的結果是jsp

由於String是被final修飾的類,因此自己的內容是不會改變的,至關於基本數據類型的值傳遞,在changge方法中給str賦值了「test」,至關於從新建立了一個string類型的變量。this

字符型char是可變的。因此變成了gbc插件

最後輸出 good and gbc。線程

三、以下哪些是 java 中有效的關鍵字()code

native 和 this。對象

這個關鍵字常見的坑:

true、false、null都不是關鍵字

goto、const、是保留的關鍵字

abstract                continue           for            new        
switch                  default            if             package     
synchronized            do                 goto           private     
this                    break              double         implements   
protected               throw              byte           else       
import                  public             throws         case       
enum                    instanceof         return         transient  
catch                   extends            int            short       
try                     char               final          interface    
static                  void               class          finally   
long                    strictfp           volatile       const      
float                   native             super          while
boolean                 assert

四、運行代碼,結果正確的是:輸出true

Boolean flag = false;//賦值flag => false
if(flag = true){//這裏flag = true 是賦值操做,flag =>true 後 再判斷是否爲正確, 因此輸出true
	System.out.println("true");
	}
else{
	System.out.println("false");
	}

五、transient 變量和下面哪一項有關?

Serializable

和序列化有關,這是一個空接口,起標記做用,具體的序列化由ObjectOutputStream和ObjectInputStream完成。transient修飾的變量不能被序列化,static變量無論加沒加transient都不能夠被序列化。

六、對於線程局部存儲TLS(thread local storage),如下表述正確的是

解決多線程中的對同一變量的訪問衝突的一種技術
TLS會爲每個線程維護一個和該線程綁定的變量的副本
Java平臺的java.lang.ThreadLocal是TLS技術的一種實現

上面這三個是對的。


這個是錯的-- >>每個線程都擁有本身的變量副本,從而也就沒有必要對該變量進行同步了

若是ThreadLocal本地變量的類型是不變類(如 String,Integer,Long等)或線程絕對安全的類,那麼在多線程下訪問同一個ThreadLocal本地變量時是不須要進行同步的,不然就算是相對線程安全的類(如Vector等)仍是須要進行同步的。

七、 假設a 是一個由線程 1 和線程 2 共享的初始值爲 0 的全局變量,則線程 1 和線程 2 同時執行下面的代碼,最終 a 的結果不多是1

boolean isOdd = false;

for(int i=1;i<=2;++i){
	if(i%2==1){
		isOdd = true;
	}
	else {
		isOdd = false;
		a+=i*(isOdd?1:-1);
	}
}

無論怎樣線程對a的操做就是+1後-2

1.線程1執行完再線程2執行,1-2+1-2=-2

2.線程1和2同時+1,再-2不一樣時,1-2-2=-3

3.線程1和2不一樣時+1,同時-2,1+1-2=0

4.線程1和2既同時+1又同時-2,1-2=-1

沒有結果爲1的狀況

八、java8中,下面哪一個類用到了解決哈希衝突的開放定址法

ThreadLocal

ThreadLocal使用開放定址法解決hash衝突,

HashMap使用鏈地址法解決hash衝突

九、給定includel.isp文件代碼片斷,以下:
<% pageContext.setAttribute(「User」,」HAHA」);%>
________________________________ // 此處填寫代碼
給定include2.jsp文件代碼片斷以下:
<%=pageContext.getAttribute(「User」)%>
要求運行include1.jsp時,瀏覽器上輸出:HAHA

<%@include file=」include2.jsp」%> -->>>靜態包含,至關於不include2.jsp頁面內容拷貝到此處,所以能夠輸出User屬性值

<jsp:include page=」include2.jsp」 flash=」true」> flash,這是瀏覽器插件名,不是include指令的屬性

<jsp:forward page=」include2.jsp」> 請求轉到一個新的頁面, 題目用的是page域對象:pageContext,pageContent屬性做用範圍:僅限於當前jsp頁面。因此跳轉到其餘頁面的時候,就沒辦法起做用了

<% response.sendRedirect(「include2.jsp」); %> 轉發重定向,轉發的時候pageContent內的屬性值不能被傳遞,所以得不到User屬性值

跟上面這個同樣。

相關文章
相關標籤/搜索