牛客網第16天
- 若有定義語句: int a=10 ; double b=3.14 ; 則表示式 ‘A’+a+b 值的型別是()
A.char
B.int
C.double
D.float
正確答案: C 你的答案: C (正確)
解析:因為按照型別大的與型別小的運算,強制轉換型別小的進行運算的規則,double>int>char,因此結果是double型別、
2.在開發中使用泛型取代非泛型的資料型別(比如用ArrayList取代ArrayList),程式的執行時效能會變得更好。()
A.正確
B.錯誤
正確答案: B 你的答案: B (正確)
解析:泛型只在編譯的時候保證資料型別的正確性,和執行期間的效能無關
3.以下程式的輸出結果是?
public class Example {
String str = new String(“good”);
char[] ch = { ‘a’, ‘b’, ‘c’ };
public static void main(String args[]) {
Example ex = new Example();
ex.change(ex.str,
System.out.print(ex.str + " and ");
System.out.print(ex.ch);
}
public static void change(String str, char ch[])
{
str = “test ok”;
ch[0] = ‘g’;
}
}
A.good and abc
B.good and gbc
C.test ok and abc
D.test ok and gbc
正確答案: B 你的答案: B (正確)
解析:其實都是引用傳遞,只是因為String是個特殊的final類,所以每次對String的更改都會重新建立記憶體地址並存儲(也可能是在字串常量池中建立記憶體地址並存入對應的字串內容),但是因為這裡String是作為引數傳遞的,在方法體內會產生新的字串而不會對方法體外的字串產生影響。
4.我們在程式中經常使用“System.out.println()”來輸出資訊,語句中的System是包名,out是類名,println是方法名。()
A.正確
B.錯誤
正確答案: B 你的答案: B (正確)
解析:
java規範中包名一般是小寫的
類名一般是大寫的
System是類名 java.lang.System
out是System的成員
println是方法名
5.對下面Spring宣告式事務的配置含義的說明錯誤的是()
PROPAGATION_REQUIRED,readOnly
PROPAGATION_REQUIRED
A.定義了宣告式事務的配置模板
B.對get方法採用只讀事務
C.缺少sessionFactory屬性的注入
D.配置需要事務管理的bean的代理時,通過parent引用這個配置模板,程式碼如下:
正確答案: C 你的答案: B (錯誤)
解析:
<property name="transactionAttributes"> <props>
宣告式事務 管理建立在AOP之上的。其本質是對方法前後進行攔截,然後在目標方法開始之前建立或者加入一個事務,在執行完目標方法之後根據執行情況提交或者回滾事務。宣告式事務最大的優點就是不需要通過程式設計的方式管理事務,這樣就不需要在業務邏輯程式碼中摻雜事務管理的程式碼,只需在配置檔案中做相關的事務規則宣告(或通過基於@Transactional註解的方式),便可以將事務規則應用到業務邏輯中。
6.下面程式碼的輸出是什麼?
public class Base
{
private String baseName = “base”;
public Base()
{
callName();
}
public void callName()
{
System. out. println(baseName);
}
static class Sub extends Base
{
private String baseName = "sub";
public void callName()
{
System. out. println (baseName) ;
}
}
public static void main(String[] args)
{
Base b = new Sub();
}
}
A.null
B.sub
C.base
正確答案: A 你的答案: C (錯誤)
解析:new Sub();在創造派生類的過程中首先建立基類物件,然後才能建立派生類。
建立基類即預設呼叫Base()方法,在方法中呼叫callName()方法,由於派生類中存在此方法,則被呼叫的callName()方法是派生類中的方法,此時派生類還未構造,所以變數baseName的值為null
7.根據下面的程式碼,
String s = null;
會丟擲NullPointerException異常的有()。
A.if( (s!=null) & (s.length()>0) )
B.if( (s!=null) && (s.length()>0) )
C.if( (s==null) | (s.length()0) )
D.if( (snull) || (s.length()==0) )
正確答案: A C 你的答案: A C (正確)
解析:String s=null;沒有給s開闢任何空間,當執行length()方法時候,
因為沒有具體指向的記憶體空間,所以報出NullPointerException沒有指向的錯誤。
A &是與,位運算,兩個都得執行,執行到s.length()自然就報錯了。
B S!=null 結果為false 整體就為false ,&& 後面就不會執行。下面的同
8.String str = new String(“abc”),“abc”在記憶體中是怎麼分配的?
A.堆
B.棧
C.字串常量區
D.暫存器
正確答案: A C 你的答案: C D (錯誤)
解析:“abc”儲存在常量池,str引用的物件儲存在堆裡,而java7中又把常量池移到了堆中,所以這題題目就不夠嚴謹
9. 以下JSP程式碼定義了一個變數,如何輸出這個變數的值?
<bean:define id=“stringBean” value=“helloWorld”/>
A.<bean:write name=“helloWorld”/>
B.<%=stringBean%>
C.<bean:write name=“stringBean”/>
D.<%String myBean=(String)pageContext.getAttribute(“stringBean”,PageContext.PAGE_SCOPE);%>
<%=myBean%>
正確答案: B C D 你的答案: C D (錯誤)
解析: bean是Struts1的標籤,先下載struts-taglib-1.3.10.jar,然後新增到lib.
測試程式碼:
<%@ page language=“java” contentType=“text/html; charset=gbk”
pageEncoding=“gbk”%>
<%@ taglib prefix=“bean” uri=“http://struts.apache.org/tags-bean”%>
A.int a[][]=new int[][]
B.int b[10][10]=new int[][]
C.int c[][]=new int[10][10]
D.int []d[]=new int[10][10]
正確答案: C D 你的答案: C D (正確)
解析:後面不給出陣列的長度都是錯的。