[java之牛客网每日练习]
牛客練習(xí)
- java專項01
- java專項02
- java專項03
- java專項04
- java專項05
- java專項06
- java07
- 專項練習(xí)
- 判斷推理
- Java08
- Java專項練習(xí)
- 判斷推理
- Java09
- 1. 可以把任何一種數(shù)據(jù)類型的變量賦給Object類型的變量。
- 數(shù)據(jù)運算專項練習(xí)
- Java10
- Java11
- 錯題集
- Java01
- java02
- java03
- Java04
java專項01
正確答案: A 你的答案: A (正確)
void set(int y)
int set(int x,double y)
double set(int x,int y)
void set(int x,int y)
分析:重載是一個類中多個同名的方法,它與返回參數(shù),參數(shù)名無關(guān),與參數(shù)類型的排列組合有關(guān),(參數(shù)個數(shù),順序);
2.要在session對象中保存屬性,可以使用以下哪個語句( )
正確答案: B 你的答案: B (正確)
session.getAttribute(“key”,”value”)
session.setAttribute(“key”,”value”)
session.setAttribute(“key”)
session.getAttribute(“key”)
分析: 獲取屬性用getAttribute 保存屬性用setAttribute
屬性是一個鍵值對,要把鍵值對內(nèi)容都傳遞進(jìn)去。
3. 下面的程序 編譯運行后,在屏幕上顯示的結(jié)果是()
public class Test {
}
正確答案: A 你的答案: D (錯誤)
0
2
5
80
分析: >>表示右移,如果該數(shù)為正,則高位補(bǔ)0,若為負(fù)數(shù),則高位補(bǔ)1,
“>>>表示無符號右移,也叫邏輯右移,該數(shù)不論正負(fù),高位都補(bǔ)0”,即給該十進(jìn)制數(shù)除以對應(yīng)個數(shù)的2;
4.JSP分頁代碼中,哪個步驟次序是正確的?
正確答案: A 你的答案: B (錯誤)
先取總記錄數(shù),得到總頁數(shù),最后顯示本頁的數(shù)據(jù)。
先取所有的記錄,得到總頁數(shù),再取總記錄數(shù),最后顯示本頁的數(shù)據(jù)。
先取總頁數(shù),得到總記錄數(shù),再取所有的記錄,最后顯示本頁的數(shù)據(jù)。
先取本頁的數(shù)據(jù),得到總頁數(shù),再取總記錄數(shù),最后顯示所有的記錄。
分析:先拿總記錄數(shù),即count(*),再根據(jù)每頁多少條記錄,確定總頁數(shù),最后也就能顯示本頁的數(shù)據(jù)了。
5. 有以下程序段, 則下面正確的選項是()
public class MyThead extends Thread{
public static void main(String[] args) {
MyThead t=new MyThead();
MyThead s=new MyThead();
t.start();
System.out.println(“one.”);
s.start();
System.out.println(“two.”);
}
public void run() {
System.out.println(“Thread”);
}
}
正確答案: B C D 你的答案: D (錯誤)
編譯失敗
程序運行可能結(jié)果為:
one.
Thread
two.
Thread
程序運行可能結(jié)果是:
one.
two.
Thread
Thread
程序運行結(jié)果不穩(wěn)定
6.下列正確的有()
正確答案: A C D 你的答案: A B (錯誤)
call by value不會改變實際參數(shù)的數(shù)值
call by reference能改變實際參數(shù)的參考地址
call by reference不能改變實際參數(shù)的參考地址
call by reference能改變實際參數(shù)的內(nèi)容
java專項02
正確答案: D 你的答案: D (正確)
構(gòu)造方法名與類名相同
構(gòu)造方法不返回任何值,也沒有返回類型
構(gòu)造方法在創(chuàng)建對象時調(diào)用,其他地方不能顯式地直接調(diào)用
每一個類只能有一個構(gòu)造方法
分析:一個類可以有多個構(gòu)造方法,構(gòu)造方法可以進(jìn)行重載。
2. 以下類定義中的錯誤是什么?()
abstract class xy
{
abstract sum (int x, int y) { }
}
正確答案: C 你的答案: C (正確)
沒有錯誤
類標(biāo)題未正確定義
方法沒有正確定義
沒有定義構(gòu)造函數(shù)
分析:抽象方法沒有方法體,只定義功能;
3. 有如下代碼:請寫出程序的輸出結(jié)果。
public class Test
{
public static void main(String[] args)
{
int x = 0;
int y = 0;
int k = 0;
for (int z = 0; z < 5; z++) {
if ((++x > 2) && (++y > 2) && (k++ > 2))
{
x++;
++y;
k++;
}
}
System.out.println(x + ”” +y + ”” +k);
}
}
正確答案: B 你的答案: B (正確)
432
531
421
523
分析:&& 操作符,要求所有條件都為true,結(jié)果才為true,它是短路與,當(dāng)其第一個天劍為false,則不會判斷后續(xù)天劍,直接返回false;
4. 設(shè)有下面兩個賦值語句:
a = Integer.parseInt(“1024”);
b = Integer.valueOf(“1024”).intValue();
下述說法正確的是()
正確答案: D 你的答案: B (錯誤)
a是整數(shù)類型變量,b是整數(shù)類對象。
a是整數(shù)類對象,b是整數(shù)類型變量。
a和b都是整數(shù)類對象并且它們的值相等。
a和b都是整數(shù)類型變量并且它們的值相等。
分析: Integer.parseInt("");是將字符串類型轉(zhuǎn)換為int的基礎(chǔ)數(shù)據(jù)類型
Integer.valueOf("")是將字符串類型數(shù)據(jù)轉(zhuǎn)換為Integer對象
Integer.intValue();是將Integer對象中的數(shù)據(jù)取出,返回一個基礎(chǔ)數(shù)據(jù)類型int
5. 以下哪個類包含方法flush()?()
正確答案: B 你的答案: B (正確)
InputStream
OutputStream
A 和B 選項都包含
A 和B 選項都不包含
對于字符寫出流,如FileWriter,必須要使用到flush將字符緩沖區(qū)的內(nèi)容寫到文件中。字符緩沖區(qū)的數(shù)據(jù)是按字符算的,必須集齊一個字符(漢字是2個字符或者3個字符)的數(shù)據(jù)才能將數(shù)據(jù)寫入文件;
6.How should servlet developers handle the HttpServlet’s service() methond when extending HttpServlet?
正確答案: D 你的答案: D (正確)
They should override the service()method in most cases;
They should call the service()method from doGet()or doPost();
They should call the service()method from the init()method;
They should override at least one doXXX()method(such as doPost())
分析:至少重寫一個doXXX方法,如doGet();重寫service方法,還是會重寫doXXX方法;所以直接重寫doXXX()方法,減少開發(fā)工作量;
7.下列哪個是合法的 Java 標(biāo)識符?( )
正確答案: B C 你的答案: B C (正確)
Tree&Glasses
FirstJavaApplet
First_Applet
273.5
分析:標(biāo)識符只有英文字母,數(shù)字,下劃線和$,而且數(shù)字不能做開頭的。
8.關(guān)于身份證號,以下正確的正則表達(dá)式為( )
正確答案: A C 你的答案: B D (錯誤)
isIDCard=/ ^ [1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/;
isIDCard=/^ [1-9]\d{7}((9\d)|(1[0-2]))(([0|1|2]\d)|3[9-1])\d{3}$/;
isIDCard=/^ [1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$/;
isIDCard=/^ [1-9]\d{5}[1-9]\d{3}((9\d)|(1[9-2]))(([0|1|2]\d)|3[9-1])\d{4}$/;
分析:[m-n] m - n的數(shù)字,/d是,0-9,15位身份證的構(gòu)成:六位出生地區(qū)碼+六位出身日期碼+三位順序碼
18位身份證的構(gòu)成:六位出生地區(qū)碼+八位出生日期碼+三位順序碼+一位校驗碼
java專項03
1.分析以下代碼,說法正確的是()
public static void main(String[] args) {System.out.println(val());}public static int val() {int num = 5;try {num = num / 0;} catch (Exception e) {num = 10;} finally {num = 15;}return num;}正確答案: D 你的答案: D (正確)
運行時報錯
程序正常運行,輸出值為5
程序正常運行,輸出值為10
程序正常運行,輸出值為15
分析:num初始值為5;在try塊中因為分母為0,拋出異常,執(zhí)行catch塊語句,num賦值為10,最有執(zhí)行finally塊中num賦值為15;所以最后返回15;
2.對于java類型變量char c,short s,float f,double d,表達(dá)式c*s+f+d的結(jié)果類型為()
正確答案: D 你的答案: D (正確)
float
char
short
double
分析:short,char ,byte->int->long->double;long->float;float,>double;
3.以下正確的是:
正確答案: B 你的答案: B (正確)
true、true
true、false
false、true
false、false
分析:對于Integer類型,它底層是有緩存的,默認(rèn)是-128-127,上限可更改;如果對其賦值在緩存范圍內(nèi),那就不會創(chuàng)建新的對象,直接從緩存中拿,否則就需要創(chuàng)建新的對象;八大基本類型的包裝類除了float,double外都有緩存;Short,long,Byte為-128-127;但是byte類型范圍為-128-127,所以它一定是從緩存中拿,另外兩個超出就需要創(chuàng)建對象了哦;Character為0-127;Boolean是true,false;
4.下面輸出的結(jié)果是:
正確答案: C 你的答案: C (正確)
The output is “Equal”
The output in “Not Equal”
An error at line 5 causes compilation to fall.
The program executes but does not print a message.
分析:判斷語句中使用的是賦值語句,Java并不會向C會賦值后與0進(jìn)行比較,所以會報錯。
5. 下列關(guān)于異常處理的描述中,錯誤的是()。
正確答案: D 你的答案: D (正確)
程序運行時異常由Java虛擬機(jī)自動進(jìn)行處理
使用try-catch-finally語句捕獲異常
可使用throw語句拋出異常
捕獲到的異常只能在當(dāng)前方法中處理,不能在其他方法中處理
分析:我們可以將異常聲明出去,交給調(diào)用方法去處理。
6.java中下面哪些是Object類的方法()
正確答案: A B D 你的答案: A B D (正確)
notify()
notifyAll()
sleep()
wait()
分析:sleep是線程的方法;
7. 下列代碼片段中,存在編譯錯誤的語句是()
正確答案: B C D 你的答案: B C D (正確)
語句2
語句1
語句3
語句4
byte b1=1,b2=2,b3,b6,b8; final byte b4=4,b5=6,b7; b3=(b1+b2); /*語句1*/ b6=b4+b5; /*語句2*/ b8=(b1+b4); /*語句3*/ b7=(b2+b5); /*語句4*/ System.out.println(b3+b6);分析:語句一其實就是b3 = 3;int型賦值給byte型是需要強(qiáng)制轉(zhuǎn)型的,對于final修飾的變量它的類型是不會變的,所以語句2是正確的;語句3,4除了有final修飾的變量,還有byte類型參與運算,所以效果和語句一是一樣。
8.Test.main()函數(shù)執(zhí)行后的輸出是( )
正確答案: B 你的答案: A (錯誤)
6 7 7
22 34 17
22 74 74
11 17 34
分析:step1:首先new B();執(zhí)行super(5),父類A構(gòu)造函數(shù)調(diào)用了setValue()方法,這個方法是子類的,為什么這么說呢,因為我們創(chuàng)建的對象是B啊,子類重寫了父類方法,自然會調(diào)用自己的;super.setValue(2 * value);B實例化將value值設(shè)置為2 x 5 = 10; 在執(zhí)行g(shù)etValue()方法,子類沒有,所以調(diào)用父類的,value++ 變?yōu)?1,catch塊中有return語句,所以先將value = 11保存,執(zhí)行finally塊,又調(diào)用setValue()還是子類的,value變?yōu)?2;打印輸出22;
二:回到構(gòu)造方法執(zhí)行setValue(getValue()- 3);getValue返回值為11,為啥呢,還記得我們是暫時保存value值,再執(zhí)行finally塊,最后return語句嗎?return的就是暫存的那個值;方法就變成了setValue(8);再之后和 step1是一樣的。只不過getValue方法是B的實例調(diào)用的
java專項04
正確答案: A 你的答案: A (正確)
編譯運行通過,輸出結(jié)果是88
編譯時錯誤,count變量定義的是私有變量
編譯時錯誤,System.out.println方法被調(diào)用時test沒有被初始化
編譯和執(zhí)行時沒有輸出結(jié)果
分析:創(chuàng)建TestDemo()對象,并且通過有參構(gòu)造函數(shù)傳入值88,對count進(jìn)行賦值,所以最后輸出count為88;
2.下面關(guān)于垃圾收集的說法正確的是
正確答案: D 你的答案: D (正確)
一旦一個對象成為垃圾,就立刻被收集掉。
對象空間被收集掉之后,會執(zhí)行該對象的finalize方法
finalize方法和C++的析構(gòu)函數(shù)是完全一回事情
一個對象成為垃圾是因為不再有引用指著它,但是線程并非如此
分析:存在本地方法時需要finalize()方法來清理本地對象,線程的釋放是在run()方法結(jié)束之后,在線程開啟后,可能沒有引用指向它,但是run方法還在執(zhí)行,線程并不會釋放。
3.給出以下代碼,請給出結(jié)果.
正確答案: B 你的答案: A (錯誤)
null null 42
null 42 42
0 0 42
0 42 42
An exception is thrown at runtime
Compilation
分析:main方法中創(chuàng)建對象,調(diào)用start方法,在start方法中創(chuàng)建Two對象,調(diào)用它的變量x,初始化為null,因為它是Byte類型,在 執(zhí)行Two t2=fix(t)后,fix(t)也就是將對象t的變量進(jìn)行了賦值為42,再返回該對象,所以t對象的成員變量x值為42;t2對象引用的是t對象的地址,所以它的成員變量x也是42;
4. 下面代碼輸出是?
正確答案: C 你的答案: C (正確)
編譯正確,輸出”It is a account type”once followed by”FIXED”
編譯正確,輸出”It is a account type”twice followed by”FIXED”
編譯正確,輸出”It is a account type”thrice followed by”FIXED”
編譯正確,輸出”It is a account type”four times followed by”FIXED”
編譯錯誤
分析:public static final AccountType SAVING;
public static final AccountType FIXED;
public static final AccountType CURRENT;
枚舉類型的所有的枚舉值都是類靜態(tài)常量,所以在初始化時會對所有的枚舉值對象進(jìn)行第一次初始化,有幾個枚舉值,則調(diào)用構(gòu)造方法幾次。
5.以下哪些內(nèi)存區(qū)域?qū)儆贘VM規(guī)范?( )
正確答案: A D E 你的答案: A D E (正確)
方法區(qū)
實例變量
靜態(tài)變量
程序計數(shù)器
虛擬機(jī)棧
6.局部內(nèi)部類可以用哪些修飾符修飾?
正確答案: C D 你的答案: A B D (錯誤)
public
private
abstract
final
分析:局部內(nèi)部類就像是方法中的一個局部變量,它是沒有public
private,protected,static修飾的。
java專項05
1.下面有關(guān)JSP內(nèi)置對象的描述,說法錯誤的是?
正確答案: C 你的答案: B (錯誤)
session對象:session對象指的是客戶端與服務(wù)器的一次會話,從客戶連到服務(wù)器的一個WebApplication開始,直到客戶端與服務(wù)器斷開連接為止
request對象:客戶端的請求信息被封裝在request對象中,通過它才能了解到客戶的需求,然后做出響應(yīng)
application對象:多個application對象實現(xiàn)了用戶間數(shù)據(jù)的共享,可存放全局變量
response對象:response對象包含了響應(yīng)客戶請求的有關(guān)信息
分析:application對象是全局共享的,它是多個用戶共享一個application對象。
2. 關(guān)于如下程序的描述哪個是正確的?( )
正確答案: C 你的答案: C (正確)
編譯將產(chǎn)生錯誤
編譯時正確,但運行時將產(chǎn)生錯誤
正確,輸出0
正確,輸出 null
分析:數(shù)組按大小創(chuàng)建成功后,若是沒有進(jìn)行賦值,那么會有默認(rèn)值0;引用類型默認(rèn)為null;
3. 列表(List)和集合(Set)下面說法正確的是? ( )
正確答案: A 你的答案: A (正確)
Set中至多只能有一個空元素
List中至多只能有一個空元素
List和Set都可以包含重復(fù)元素的有序集合
List和Set都是有序集合
分析:List集合中的元素重復(fù)且有序;Set是無序不可重復(fù),既然不可重復(fù),那自然是只能有一個null;
4. 如果int x=20, y=5,則語句System.out.println(x+y +""+(x+y)+y); 的輸出結(jié)果是()
正確答案: D 你的答案: D (正確)
2530
55
2052055
25255
分析:表達(dá)式前面x+y按正常運算為25;因為后續(xù)拼接了"",所以變成了字符串,后面的+就變成了拼接符,后續(xù)x+y有括號所以先按正常算數(shù)運算;
5. 下面的程序輸出的結(jié)果是( )
正確答案: B 你的答案: B (正確)
i=0
i=10
程序有編譯錯誤
i=true
接口中定義了變量k并賦值為10,子類創(chuàng)建對象后調(diào)用該屬性進(jìn)行賦值,所以i = 10;
6.transient 變量和下面哪一項有關(guān)?
正確答案: B 你的答案: B (正確)
Cloneable
Serializable
Runnable
Comparable
分析:通常一個類實現(xiàn)序列化方式是實現(xiàn)序列化接口 Serializable
序列化的作用:把數(shù)據(jù)長久的保存在磁盤中,磁盤和內(nèi)存是不同的,內(nèi)存一般在程序運行時占用,數(shù)據(jù)保存周期短,隨程序結(jié)束而結(jié)束,磁盤可以長久保存數(shù)據(jù);
transient關(guān)鍵字的作用,在已實現(xiàn)序列化的類中,有的變量不需要保存在磁盤中,就要transient關(guān)鍵字修飾,如銀行卡密碼等,它的作用是在已序列化的類中使變量不序列化
7.以下哪些語言是面向?qū)ο蟮氖?#xff08;)
正確答案: B C 你的答案: B C (正確)
C
C++
JAVA
匯編
8.以下類型為Final類型的為()
正確答案: B C 你的答案: B C (正確)
HashMap
StringBuffer
String
Hashtable
分析:string與stringbuffer都是通過字符數(shù)組實現(xiàn)的。
其中string的字符數(shù)組是final修飾的,所以字符數(shù)組不可以修改。
stringbuffer的字符數(shù)組沒有final修飾,所以字符數(shù)組可以修改。
string與stringbuffer都是final修飾,只是限制他們所存儲的引用地址不可修改。
至于地址所指內(nèi)容能不能修改,則需要看字符數(shù)組可不可以修改。
java專項06
下面程序的運行結(jié)果是
String str1 = “hello”;
String str2 = “he” + new String(“l(fā)lo”);
System.err.println(str1 == str2);
正確答案: B 你的答案: B (正確)
true
false
exception
無輸出
分析:new會在堆中開辟內(nèi)存,存放該字符對象,而直接的字符賦值是在常量池里的
2.
下面哪個選項放在point X這里可以正確執(zhí)行?
正確答案: A 你的答案: A (正確)
import java.io.PrintWriter;
include java.io.PrintWriter;
import java.io.OutputStreamWriter;
include java.io.OutputStreamWriter;
no statement is needed.
分析:代碼調(diào)用了PrintWriter 對象,所以我們需要將該類導(dǎo)入;
3 下列關(guān)于包(package)的描述,正確的是()
正確答案: D 你的答案: D (正確)
包(package)是Java中描述操作系統(tǒng)對多個源代碼文件組織的一種方式。
import語句將所對應(yīng)的Java源文件拷貝到此處執(zhí)行。
包(package)是Eclipse組織Java項目特有的一種方式。
定義在同一個包(package)內(nèi)的類可以不經(jīng)過import而直接相互使用。
1、為了更好地組織類,Java提供了包機(jī)制。包是類的容器,用于分隔類名空間。如果沒有指定包名,所有的示例都屬于一個默認(rèn)的無名包。Java中的包一般均包含相關(guān)的類,java是跨平臺的,所以java中的包和操作系統(tǒng)沒有任何關(guān)系,java的包是用來組織文件的一種虛擬文件系統(tǒng)。A錯
2、import語句并沒有將對應(yīng)的java源文件拷貝到此處僅僅是引入,告訴編譯器有使用外部文件,編譯的時候要去讀取這個外部文件。B錯
3、Java提供的包機(jī)制與IDE沒有關(guān)系。C錯
4.Java數(shù)據(jù)庫連接庫JDBC用到哪種設(shè)計模式?
正確答案: B 你的答案: D (錯誤)
生成器
橋接模式
抽象工廠
單例模式
分析: 橋接模式:
定義 :將抽象部分與它的實現(xiàn)部分分離,使它們都可以獨立地變化。
意圖 :將抽象與實現(xiàn)解耦。
接模式是結(jié)構(gòu)型模式,關(guān)注點在依賴關(guān)系的維護(hù)。對于jdbc技術(shù)來說,它解耦了業(yè)務(wù)與數(shù)據(jù)庫通信協(xié)議這兩個緯度之間的關(guān)系,所以這兩個緯度之間的關(guān)系就需要一個橋,即Driver,至于DriverManager把這個關(guān)系接到哪里就是運行時的事情了。
5.對于如下代碼段
可以放入到橫線位置,使程序正確編譯運行,而且不產(chǎn)生錯誤的選項是( )
正確答案: C 你的答案: D (錯誤)
public void foo(){}
public int foo(){return 1;}
public A foo(B b){return b;}
public A foo(){return A;}
分析:重寫 要求兩同兩小一大原則, 方法名相同,參數(shù)類型相同,子類返回類型小于等于父類方法返回類型, 子類拋出異常小于等于父類方法拋出異常, 子類訪問權(quán)限大于等于父類方法訪問權(quán)限。[注意:這里的返回類型必須要在有繼承關(guān)系的前提下比較]
重載 方法名必須相同,參數(shù)類型必須不同,包括但不限于一項,參數(shù)數(shù)目,參數(shù)類型,參數(shù)順序。
A B 都是方法名和參數(shù)相同,是重寫,但是返回類型沒與父類返回類型有繼承關(guān)系,錯誤 D 返回一個類錯誤; c的參數(shù)類型與父類不同,所以不是重寫,可以理解為廣義上的重載;
6.下面哪一項不是加載驅(qū)動程序的方法?
正確答案: A 你的答案: C (錯誤)
通過DriverManager.getConnection方法加載
調(diào)用方法 Class.forName
通過添加系統(tǒng)的jdbc.drivers屬性
通過registerDriver方法注冊
分析:通過DriverManager.getConnection 拿到的是一個連接對象Connection,這個步驟是在加載驅(qū)動程序之后的。
java07
專項練習(xí)
1.在socket編程中,可以使用方法( )獲取本機(jī)的ip地址
正確答案: B 你的答案: B (正確)
getInetAddress()
getLocalAddress()
getReuseAddress()
getLocalPort()
分析: getInetAddress獲取主機(jī)名和IP地址
getLocalAddress()顧名思義,獲取本地IP地址
getReuseAddress()返回布爾類型,表示復(fù)用地址
getLocalPort() 返回本機(jī)端口號
2. 如果一個接口Glass有個方法setColor(),有個類BlueGlass實現(xiàn)接口Glass,則在類BlueGlass中正確的是? ( )
正確答案: C 你的答案: C (正確)
protected void setColor() { …}
void setColor() { …}
public void setColor() { …}
以上語句都可以用在類BlueGlass中
分析:子類繼承繼承接口實現(xiàn)方法,該方法遵循兩同兩小一大原則, 方法名相同,參數(shù)類型相同,子類返回類型小于等于父類方法返回類型, 子類拋出異常小于等于父類方法拋出異常, 子類訪問權(quán)限大于等于父類方法訪問權(quán)限。
3.在jdk1.8之前,下列哪一種敘述是正確的( )
正確答案: D 你的答案: D (正確)
abstract修飾符可修飾字段、方法和類
抽象方法的body部分必須用一對大括號{ }包住
聲明抽象方法,大括號可有可無
聲明抽象方法不可寫出大括號
分析:抽象方法沒有方法體;所以也沒有大括號;抽象方法只是提供具體的功能,不管如何實現(xiàn)。
4. 下面字段聲明中哪一個在interface主體內(nèi)是合法的? ()
正確答案: B 你的答案: B (正確)
private final static int answer = 42;
public static int answer = 42;
final static answer = 42;
int answer;
分析:接口內(nèi)的變量默認(rèn)是public static final 的,public沒有表示默認(rèn)權(quán)限default;
5.下列程序的運行結(jié)果
正確答案: A 你的答案: C (錯誤)
IOException!
IOException!Exception!
FileNotFoundException!IOException!
FileNotFoundException!IOException!Exception!
分析:題目說有一個異常,那就只有A符合
6.下面關(guān)于面向?qū)ο蟮囊恍├斫饽男┦清e誤的( )
正確答案: C 你的答案: C D (錯誤)
面向?qū)ο蟮淖钪匾奶匦允侵С掷^承、封裝和多態(tài)
系統(tǒng)設(shè)計應(yīng)該遵循開閉原則,系統(tǒng)應(yīng)該穩(wěn)定不不可修改,但應(yīng)支持通過繼承、組合等方式進(jìn)行擴(kuò)展
函數(shù)式的語言必然是面向?qū)ο蟮恼Z言
面向?qū)ο笤O(shè)計時,每個類的職責(zé)應(yīng)該單一,不要再一個類中引入過多的接口
過程式語言和面向?qū)ο蟮恼Z言各有其優(yōu)勢,過程式語言更加靈活,面向?qū)ο笳Z言更加強(qiáng)調(diào)抽象和封裝
Java和C++都是靜態(tài)類型的面向?qū)ο缶幊陶Z言
分析:設(shè)計模式"七大原則";
1.單一職責(zé)原則:一個類負(fù)責(zé)一項職責(zé),為避免因為一個職責(zé)而影響其他職責(zé)。可以降低類的負(fù)責(zé)度,提高可讀性,可維護(hù)性,降低變更風(fēng)險性。
2.接口隔離原則:一個類對另一個類的依賴建立在最小的接口上,劃分縮小接。
3.依賴倒轉(zhuǎn)原則:高層不依賴底層模塊,兩者都依賴其抽象,細(xì)節(jié)不依賴抽象,反之則不行;
4.里式替換原則:當(dāng)子類重寫父類方法而在子類方法中仍然需要使用父類的方法時,使用父類對象為參數(shù),添加方法;
5.開閉原則:編程中最基礎(chǔ)的設(shè)計原則;符合開閉的(依賴倒轉(zhuǎn)原則),對擴(kuò)展開放,對修改關(guān)閉。
6.迪米特法則:(也叫最少知道原則),將一個類的實現(xiàn)細(xì)節(jié)放于自己類中,其他類要是用,調(diào)用即可,不能將自己的實現(xiàn)細(xì)節(jié)放在其他類中。
7.合成復(fù)用原則:盡量使用合成/組合;
判斷推理
1.生態(tài)入侵是指人們有意識或無意識地把某種生物帶入適宜其棲息和繁衍的地區(qū),使得該生物種群不斷擴(kuò)大,分布區(qū)不斷穩(wěn)定地擴(kuò)展,從而危害當(dāng)?shù)氐纳a(chǎn)和生活,改變當(dāng)?shù)厣鷳B(tài)環(huán)境的過程。
根據(jù)上述定義,下列屬于生態(tài)入侵的是:
正確答案: C 你的答案: C (正確)
某地發(fā)生大面積放射性核素泄漏,使某種植物發(fā)生變異,其繁殖力超強(qiáng),逐漸取代了該地域內(nèi)的其他植物
某實驗室由于管理不當(dāng)將試驗用的致病性結(jié)核菌株散播了出去,造成結(jié)核病在周圍居民中流行
產(chǎn)于南美洲的鳳眼蓮花朵艷麗,曾經(jīng)作為觀賞植物被我國引進(jìn),致使云南滇池因為鳳眼蓮的瘋狂蔓延而魚蝦絕跡
美國科學(xué)家將從我國引進(jìn)的野生大豆與當(dāng)?shù)仄贩N雜交,培育出抗大豆萎黃病的優(yōu)良品種,該品種現(xiàn)已徹底取代了美國傳統(tǒng)大豆
2.如果所有的甲都不是乙,所有的乙都是丙,那么,一定沒有一個丙是甲,這句話是()
正確答案: B 你的答案: A (錯誤)
對的
錯的
既不對也不錯
分析:這是個范圍題,例如:男人不是女人,但是男人,女人都是人。
3.有四只老鼠一塊出去偷食物(每個都偷了),回來時,族長問它們都偷了什么,老鼠A說:我們每個都偷了奶酪。老鼠B說:我只偷了一顆櫻桃。老鼠C說:我沒偷奶酪。老鼠D說:有些人沒偷奶酪。族長觀察了一下,發(fā)現(xiàn)它們當(dāng)中只有一只老鼠說了實話,那么是哪只老鼠說了實話?
正確答案: A 你的答案: A (正確)
老鼠A
老鼠B
老鼠C
老鼠D
分析:只有一個說謊,C說他沒偷,D說有人沒偷,所以C,D為真,A說全偷了,所以A錯。
4. 某市舉辦了一場職業(yè)技能競賽,有甲、乙、丙、丁四支代表隊進(jìn)入決賽。每支隊伍有兩名參賽選手;獲得第一名的選手將得10分、第二名得8分、第三名到第八名分別是6、5、4、3、2、1分,最后總分最高的隊伍將獲得冠軍。
比賽的排名情況如下:
甲隊選手的排名都是偶數(shù);
乙隊兩名選手的排名相連;
丙隊選手的排名一個是奇數(shù)一個是偶數(shù);
丁隊選手的排名都是奇數(shù);
第一名是丁隊選手;
第八名是丙隊選手;
乙隊兩名選手的排名在甲隊兩名選手之間,同時也在丙隊兩名選手之間。
根據(jù)以上條件可以判斷各隊總分由高到低的排列順序為?
丁>甲>丙>乙
甲>丁>乙>丙
甲>丁>丙>乙
丁>甲>乙>丙
分析:選D 10 8 6 5 4 3 2 1
丁 甲 丙 乙 乙 甲 丁 丙
5: 2,6,15,28,( )
正確答案: A 你的答案: B (錯誤)
55
56
58
60
分析:
2=12,6=23,15=35,28=47,
可以看出第一個乘數(shù)是1、2、3、4
第二個乘數(shù)是2、3、5、7(質(zhì)數(shù))
于是下一個為5*11=55
Java08
Java專項練習(xí)
正確答案: A 你的答案: A (正確)
覆蓋(重寫)只有出現(xiàn)在父類與子類之間,而重載可以出現(xiàn)在同一個類中
覆蓋(重寫)方法可以有不同的方法名,而重載方法必須是相同的方法名
final修飾的方法可以被覆蓋(重寫),但不能被重載
覆蓋(重寫)與重載是同一回事
分析:重寫,要求子類與父類的方法參數(shù)和返回值類型要相同,并且訪問修飾符,即可見性要大于等于父類;
2.在異常處理中,若try中的代碼可能產(chǎn)生多種異常則可以對應(yīng)多個catch語句,若catch中的參數(shù)類型有父類子類關(guān)系,此時應(yīng)該將父類放在后面,子類放在前面。
正確答案: A 你的答案: A (正確)
正確
錯誤
分析:因為我們要按不同異常去捕獲,如果吧父類異常置于前面,那就會都能匹配;子類就永遠(yuǎn)不能得到捕獲執(zhí)行;
3. 以下java程序代碼,執(zhí)行后的結(jié)果是()
正確答案: C 你的答案: C (正確)
0
null
1
2
分析:hashMap中put 方法將key-value鍵值對存入集合中,插入之前,若key不存在,則插入,若是該key存在,則將其值覆蓋掉;所以這道題map中的元素個數(shù)為1;
4. 如果一個list初始化為{5,3,1},執(zhí)行以下代碼后,其結(jié)果為()?
正確答案: B 你的答案: B (正確)
[5, 3, 1, 6]
[4, 3, 1, 6]
[4, 3, 6]
[5, 3, 6]
分析:集合add(value)是在list尾部添加元素;add(index,value),將該值插入到指定index角標(biāo)處;remove(index)刪除角標(biāo)index對應(yīng)的值;
5. 當(dāng)你編譯和運行下面的代碼時,會出現(xiàn)下面選項中的哪種情況?
正確答案: B 你的答案: B (正確)
編譯時錯誤
編譯通過并輸出結(jié)果false
編譯通過并輸出結(jié)果true
編譯通過并輸出結(jié)果null
分析: 類中聲明的成員變量有默認(rèn)初始值;方法中聲明的變量沒有默認(rèn)初始值,必須在定義時初始化,否則在訪問該變量時會出錯,boolean類型默認(rèn)值是false。
6.URL u =new URL(“http://www.123.com”);。如果www.123.com不存在,則返回______。
正確答案: A 你的答案: C (錯誤)
http://www.123.com
””
null
拋出異常
new URL()時必須捕獲檢查異常,但這個異常是由于字符串格式和URL不符導(dǎo)致的,與網(wǎng)址是否存在無關(guān)。URL的toString方法返回字符串,無論網(wǎng)址是否存在。
7.下列關(guān)于系列化和反序列化描述正確的是:
正確答案: A B 你的答案: A B (正確)
序列化是將數(shù)據(jù)轉(zhuǎn)為n個 byte序列的過程
反序列化是將n個 byte轉(zhuǎn)換為數(shù)據(jù)的過程
將類型int轉(zhuǎn)換為4 byte是反序列化過程
將8個字節(jié)轉(zhuǎn)換為long類型的數(shù)據(jù)為序列化過程
分析: 序列化:將Object對象轉(zhuǎn)換成為二進(jìn)制數(shù)據(jù)流或者文本流的過程。序列化后的數(shù)據(jù)方便在網(wǎng)絡(luò)上傳輸和在硬盤上存儲;反序列化:與序列化相反,是將二進(jìn)制數(shù)據(jù)流或者文本流轉(zhuǎn)換稱為對象的過程。
8.下列有關(guān)java構(gòu)造函數(shù)敘述正確的是()
正確答案: C D 你的答案: C D (正確)
構(gòu)造器的返回值為void類型
如果一個源文件中有多個類,那么構(gòu)造器必須與公共類同名
構(gòu)造器可以有0個,1個或一個以上的參數(shù)
每個類可以有一個以上的構(gòu)造器
分析:構(gòu)造函數(shù)是沒有返回值的,它的方法名稱與類名相同,一個類可以有一個以上的構(gòu)造函數(shù),可以重載構(gòu)造函數(shù);一個類默認(rèn)都有一個無參構(gòu)造函數(shù),當(dāng)我們手寫一個帶參構(gòu)造函數(shù)時,就不會有默認(rèn)構(gòu)造函數(shù),需要我們手動添加無參構(gòu)造函數(shù)。
9.final、finally和finalize的區(qū)別中,下述說法正確的有?
正確答案: A B 你的答案: A B (正確)
final用于聲明屬性,方法和類,分別表示屬性不可變,方法不可覆蓋,類不可繼承。
finally是異常處理語句結(jié)構(gòu)的一部分,表示總是執(zhí)行。
finalize是Object類的一個方法,在垃圾收集器執(zhí)行的時候會調(diào)用被回收對象的此方法,可以覆蓋此方法提供垃圾收集時的其他資源的回收,例如關(guān)閉文件等。
引用變量被final修飾之后,不能再指向其他對象,它指向的對象的內(nèi)容也是不可變的。
分析:finalize()方法一個對象只能執(zhí)行一次,只能在第一次進(jìn)入被回收的隊列,而且對象所屬于的類重寫了finalize方法才會被執(zhí)行。第二次進(jìn)入回收隊列的時候,不會再執(zhí)行其finalize方法,而是直接被二次標(biāo)記,在下一次GC的時候被GC。final 修飾引用類型,引用不可變,但是內(nèi)容是可變的,例如final修飾數(shù)組,它指向的地址不變,但內(nèi)部具體的值是可以更改的。
判斷推理
1.廣義而言,集體記憶即是一個具有自己特定文化內(nèi)聚性和同一性的群體對自己過去的記憶。這種群體可以是一個政治宗教集團(tuán)、一個地域文化共同體,也可以是一個民族或一個國家。這種記憶可以是分散的、零碎的、口頭的,也可以是集中的、官方的、文字的,可以是對最近一個事件的回憶,也可以是對遠(yuǎn)古祖先事跡的追溯。
根據(jù)上述定義,下列屬于集體記憶的是:
正確答案: A 你的答案: A (正確)
我國廣泛流傳的大禹治水的傳說
某市宣傳地方旅游資源的紀(jì)錄片
某政府機(jī)構(gòu)關(guān)于某項工作的文件匯編
我國某大學(xué)內(nèi)介紹鄰國歷史的教材
2.羌特勒是一種野生的蘑菇,生長在能為它提供所需糖分的寄主樹木——例如道格拉斯冷杉下面。反過來,羌特勒在地下的根莖細(xì)絲可以分解這些糖分,并為其寄主提供養(yǎng)分和水分。正是因為這種互惠的關(guān)系,采割道格拉斯冷杉下面生長的羌特勒會給這種樹木造成嚴(yán)重的傷害。下面哪一個如果正確,對上面的結(jié)論提出了最強(qiáng)有力的質(zhì)疑?()
正確答案: D 你的答案: D (正確)
近年來,野生蘑菇的采割數(shù)量一直在增加
羌特勒不僅生長在道格拉斯冷杉樹下,也生長在其他寄主樹木下面
許多種野生蘑菇只能在森林里找到,它們不能輕易在別處被種植
對野生蘑菇的采割激發(fā)了這些蘑菇將來的生長
分析:野生蘑菇的采摘若是激發(fā)它的生長,那么對于該互惠的格拉斯樹來說是有利的;
3. 團(tuán)隊負(fù)責(zé)人接到一個緊急項目,他要考慮在代號為ABCDEF這6個團(tuán)隊成員中的部分人員參加項目開發(fā)工作。人選必須滿足以下各點:
AB兩人中至少一個人參加
AD不能都去
AEF三人中要派兩人
BC兩人都去或都不去
CD兩人中有一人參加
若D不參加,E也不參加
那么最后()參加緊急項目開發(fā)。
正確答案: E 你的答案: E (正確)
ECEF
AF
ECF
F
ABCF
BCDEF
分析:有BC就沒有DE,有A就沒有D,BC必須同時存在;AEF需要2個,CD中必須有一個
Java09
1. 可以把任何一種數(shù)據(jù)類型的變量賦給Object類型的變量。
1.正確答案: A 你的答案: A (正確)
對
錯
分析:Object是所有類的父類
2. 對文件名為Test.java的java代碼描述正確的是()
正確答案: C 你的答案: B (錯誤)
輸出:0000
輸出:123
編譯報錯
輸出:No name
分析:報錯的原因是, 子類的構(gòu)造方法總是先調(diào)用父類的構(gòu)造方法,如果子類的構(gòu)造方法沒有顯式的調(diào)用父類的哪個構(gòu)造方法,子類就調(diào)用父類不帶參數(shù)的構(gòu)造方法。
而父類沒有無參的構(gòu)造函數(shù),所以子類需要在自己的構(gòu)造函數(shù)中顯示的調(diào)用父類的構(gòu)造函數(shù)。
3. 下面哪些選項是正確的()
正確答案: A D 你的答案: A D (正確)
A >>是算術(shù)右移操作符
B >>是邏輯右移操作符
C >>>是算術(shù)右移操作符
D >>>是邏輯右移操作符
4.關(guān)于equals和hashCode描述正確的是 ()
正確答案: A B C 你的答案: A B C (正確)
兩個obj,如果equals()相等,hashCode()一定相等(符合代碼規(guī)范的情況下)
兩個obj,如果hashCode()相等,equals()不一定相等
兩個不同的obj, hashCode()可能相等
其他都不對
分析:HashCode()的存在是為了查找的快捷性,用于在散列存儲結(jié)構(gòu)中確定對象的存儲地址
如果兩個對象 equals相等,則 hashCode()也一定相等
如果 equals方法被重寫,則 hashCode()也應(yīng)該被重寫
如果兩個對象的 hashCode()相等, equals()方法不一定相等;equals方法沒有重寫,比較的就是應(yīng)用類型的變量所指向的對象的地址
5.下面程序輸出結(jié)果為():
正確答案: B C 你的答案: C (錯誤)
程序異常,編譯不通過
程序編寫正常,可正常運行
程序輸出值為“LeXin”
程序輸出值為“Fenqile”
分析:分析出輸出結(jié)果就選了,失策了;引用數(shù)據(jù)類型在變量中存儲的是地址;所以 String nb = lx;是將常量池中"LeXin"的地址給了變量lx;而 lx = “Fenqile”;是將lx指向了另一個地址;所以nb的指向并沒有改變;
數(shù)據(jù)運算專項練習(xí)
1:給出下列數(shù)字,括號中的數(shù)字應(yīng)該是多少?
3,4,6,9,(),18
正確答案: C 你的答案: C (正確)
11????????????12????????????13????????????14
分析:相鄰兩個數(shù)之間相差1,2,3,4,5…
2: 3,3/2,1,3/4,(),1/2
正確答案: A 你的答案: A (正確)
3/5????????????5/3????????????3/4????????????4/3
分析:分子為3;分母分別是1,2,3…,差值為1的等差數(shù)列;
3: -1,1,0,0,1,1,8,4,(),()
正確答案: B 你的答案: C (錯誤)
8,12
27,9
9,27
12,8
分析: 變量i從-1開始計數(shù),分別為i^3 和 i^2; (-1)^3 , (-1)^2 0^3 ,0^2 ,1^3 ,1^2 ,2^3 ,2^2 ,3^3 , 3^2 …,i^3 ,i^2…
-1, 1, 0, 0, 1, 1, 8, 4, 27, 9,…, i^3 ,i^2,…
Java10
正確答案: B 你的答案: C (錯誤)
false,false
false,true
true,false
true,true
分析:因為是new,所以是在堆內(nèi)存中創(chuàng)建了兩個對象,雖然它在緩存區(qū)間;
2.ResultSet中記錄行的第一列索引為?
正確答案: C 你的答案: B (錯誤)
-1
0
1
以上都不是
分析:結(jié)果集中的下標(biāo)時從1開始的。
3.下面有關(guān)java的引用類型,說法正確的有?
正確答案: A B C D 你的答案: A C D (錯誤)
對于一個對象來說,只要有強(qiáng)引用的存在,它就會一直存在于內(nèi)存中
如果一個對象僅持有虛引用,那么它就和沒有任何引用一樣,在任何時候都可能被垃圾回收器回收。
如果一個對象只具有軟引用,則內(nèi)存空間足夠,垃圾回收器就不會回收它;如果內(nèi)存空間不足了,就會回收這些對象的內(nèi)存
一旦發(fā)現(xiàn)了只具有弱引用的對象,不管當(dāng)前內(nèi)存空間足夠與否,都會回收它的空間
1.強(qiáng)引用:一個對象賦給一個引用就是強(qiáng)引用,比如new一個對象,一個對象被賦值一個對象。
2、軟引用:用SoftReference類實現(xiàn),一般不會輕易回收,只有內(nèi)存不夠才會回收。
3、弱引用:用WeekReference類實現(xiàn),一旦垃圾回收已啟動,就會回收。
4、虛引用:不能單獨存在,必須和引用隊列聯(lián)合使用。主要作用是跟蹤對象被回收的狀態(tài)。
Java11
1.下面哪段程序能夠正確的實現(xiàn)了GBK編碼字節(jié)流到UTF-8編碼字節(jié)流的轉(zhuǎn)換:
byte[] src,dst;
正確答案: B 你的答案: A (錯誤)
dst=String.fromBytes(src,“GBK”).getBytes(“UTF-8”)
dst=new String(src,“GBK”).getBytes(“UTF-8”)
dst=new String(“GBK”,src).getBytes()
dst=String.encode(String.decode(src,“GBK”)),“UTF-8” )
分析: 用new String(src,“GBK”)解碼得到字符串
用getBytes(“UTF-8”)得到UTF8編碼字節(jié)數(shù)組
2.下面關(guān)于Applet的說法是正確的是
正確答案: A B C D 你的答案: B D (錯誤)
Applet可以在帶有Java解釋器的瀏覽器中運行
Applet類必須繼承java.applet.Applet
Applet可以訪問本地文件
Applet是Object類的子類
class A {} class B extends A {} class C extends A {} class D extends B {}3.下面的哪4個語句是正確的?
正確答案: A C D G 你的答案: B D F G (錯誤)
The type Listis assignable to List.
The type Listis assignable to List.
The type Listis assignable to List<?>.
The type Listis assignable to List<?extends B>.
The type List<?extends A>is assignable to List.
The type Listis assignable to any List reference.
The type List<?extends B>is assignable to List<?extends A>.
吃了英語差的虧啊。
1. 只看尖括號里邊的!!明確點和范圍兩個概念
2. 如果尖括號里的是一個類,那么尖括號里的就是一個點,比如List< A >,List< B >,List< Object >
3. 如果尖括號里面帶有問號,那么代表一個范圍,<? extends A> 代表小于等于A的范圍,<? super A>代表大于等于A的范圍,<?>代表全部范圍
4. 尖括號里的所有點之間互相賦值都是錯,除非是倆相同的點
5. 尖括號小范圍賦值給大范圍,對,大范圍賦值給小范圍,錯。如果某點包含在某個范圍里,那么可以賦值,否則,不能賦值
6. List<?>和List 是相等的,都代表最大范圍
7.補(bǔ)充:List既是點也是范圍,當(dāng)表示范圍時,表示最大范圍
錯題集
Java01
2.public class Interesting{
3. // 省略代碼
4.}
正確答案: D 你的答案: B (錯誤)
import java.awt.*;
package mypackage;
class OtherClass{ }
public class MyClass{ }
分析:不能插入,看錯了,還猶豫半天;1處,可以是包名,也可以是導(dǎo)包,亦可以定義一個類,只要不是public的,因為下面有一個public的類;
2.一般情況下,以下哪個選項不是關(guān)系數(shù)據(jù)模型與對象模型之間匹配關(guān)系?
正確答案: D 你的答案: B (錯誤)
表對應(yīng)類
記錄對應(yīng)對象
表的字段對應(yīng)類的屬性
表之間的參考關(guān)系對應(yīng)類之間的依賴關(guān)系
分析:一個表對應(yīng)一個類,表中的一個字段對應(yīng)類的一個屬性,一條記錄就是創(chuàng)建一個對象;
3.假設(shè)如下代碼中,若t1線程在t2線程啟動之前已經(jīng)完成啟動。代碼的輸出是?
正確答案: B 你的答案: C (錯誤)
Thread 1 wake up
Thread 2 sent notify.
Thread 2 sent notify.
Thread 1 wake up
A、B皆有可能
程序無輸出卡死
分析:執(zhí)行obj.wait();時已釋放了鎖,所以t2可以再次獲得鎖,然后發(fā)消息通知t1執(zhí)行,但這時t2還沒有釋放鎖,所以肯定是執(zhí)行t2,然后釋放鎖,之后t1才有機(jī)會執(zhí)行。
4.
根據(jù)下面的代碼,
String s = null;
會拋出NullPointerException異常的有()。
正確答案: A C 你的答案: A D (錯誤)
if( (s!=null) & (s.length()>0) )
if( (s!=null) && (s.length()>0) )
if( (s==null) | (s.length()==0) )
if( (s==null) || (s.length()==0) )
分析:String s=null;沒有給s開辟任何空間,當(dāng)執(zhí)行l(wèi)ength()方法時候,因為沒有具體指向的內(nèi)存空間,所以報出NullPointerException沒有指向的錯誤。所以只要不執(zhí)行s.length>0或是s.length()==0即可;
&和|,是非短路邏輯運算符,兩個都得執(zhí)行,執(zhí)行到s.length()自然就報錯了。
java02
1.下面代碼的輸出是什么?
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 你的答案: C (錯誤)
null
sub
base
分析:new Sub();在創(chuàng)造派生類的過程中首先創(chuàng)建基類對象,然后才能創(chuàng)建派生類。
創(chuàng)建基類即默認(rèn)調(diào)用Base()方法,在方法中調(diào)用callName()方法,由于派生類中存在此方法,則被調(diào)用的callName()方法是派生類中的方法,此時派生類還未構(gòu)造,所以變量baseName的值為null。
2.以下哪個式子有可能在某個進(jìn)制下成立()
正確答案: A 你的答案: B (錯誤)
13 * 14=204
12 * 34=568
14 * 14=140
1+1=3
3.以下哪種JAVA的變量表達(dá)式使得變量a和變量b具有相同的內(nèi)存引用地址( )
正確答案: A B 你的答案: A B D (錯誤)
String a = “hello”; String b = “hello”;
Integer a; Integer b = a;
int a = 1; Integer b = new Integer(1);
int a = 1; Integer b = 1;
分析:內(nèi)存引用地址,是指棧中存放的地址,來指向堆中的某個位置。
int 是基本類型,數(shù)據(jù)直接存放在棧中,不存在內(nèi)存引用地址的說法。D選項會進(jìn)行拆箱,它的值是相等的,但是Integer類型引用地址是不同的。
4.關(guān)于Java的一些概念,下面哪些描述是正確的:( )
正確答案: B F 你的答案: A B F (錯誤)
所有的Java異常和錯誤的基類都是java.lang.Exception, 包括java.lang.RuntimeException
通過try … catch … finally語句,finally中的語句部分無論發(fā)生什么異常都會得到執(zhí)行
java中所有的數(shù)據(jù)都是對象
Java通過垃圾回收回收不再引用的變量,垃圾回收時對象的finallize方法一定會得到執(zhí)行
Java是跨平臺的語言,無論通過哪個版本的Java編寫的程序都能在所有的Java運行平臺中運行
Java通過synchronized進(jìn)行訪問的同步,synchronized作用非靜態(tài)成員方法和靜態(tài)成員方法上同步的目標(biāo)是不同的
分析:Java中所有錯誤和異常的父類是java.lang.Throwable;基本數(shù)據(jù)類型不是對象哦;Java垃圾回收器負(fù)責(zé)回收無用對象占據(jù)的內(nèi)存資源,但對象沒有使用new獲取了一塊特殊區(qū)域,這塊特殊區(qū)域的回收使用finallize();java跨平臺是因為JVM
java03
1.下列哪些情況下會導(dǎo)致線程中斷或停止運行( )
正確答案: B 你的答案: A B (錯誤)
InterruptedException異常被捕獲
線程調(diào)用了wait方法
當(dāng)前線程創(chuàng)建了一個新的線程
高優(yōu)先級線程進(jìn)入就緒狀態(tài)
2.下列哪個選項是錯誤的。()
正確答案: A D 你的答案: C (錯誤)
一個文件中只能有一個public class。
一個文件中可以有多個類。
一個類中可以有兩個main方法。
若類中只含一個main方法,則必須是public的。
分析:一個類中和類同名的類只能有一個,main方法,并不是主線程方法啊;
Java04
1.在各自最優(yōu)條件下,對N個數(shù)進(jìn)行排序,哪個算法復(fù)雜度最低的是? ()
正確答案: A 你的答案: B (錯誤)
插入排序
快速排序
堆排序
歸并排序
2.下面代碼的輸出是什么?
正確答案: A 你的答案: B (錯誤)
null
sub
base
分析:這里考到了向下轉(zhuǎn)型,重寫等知識;
創(chuàng)建的是子類對象Sub,指向的是父類類型Base,創(chuàng)建子類對象時通過無參構(gòu)造調(diào)用父類Base(),父類無參構(gòu)造調(diào)用callname()方法,由于子類重寫了該方法,所以調(diào)用的是子類的callname()方法,而此時子類還沒有創(chuàng)建實例,沒有初始化,所以basename此時為null;
3.假設(shè) a 是一個由線程 1 和線程 2 共享的初始值為 0 的全局變量,則線程 1 和線程 2 同時執(zhí)行下面的代碼,最終 a 的結(jié)果不可能是()
正確答案: D 你的答案: C (錯誤)
-1
-2
0
1
分析:
1.AB不并發(fā):此時相當(dāng)于兩個方法順序執(zhí)行。A執(zhí)行完后a=-1,B使用-1作為a的初值,B執(zhí)行完后a=-2
2.AB完全并發(fā):此時讀寫沖突,相當(dāng)于只有一個線程對a的讀寫最終生效。相同于方法只執(zhí)行了一次。此時a=-1
3.AB部分并發(fā):假設(shè)A先進(jìn)行第一次讀寫,得到a=1;之后A的讀寫被B覆蓋了。B使用1作為a的初值,B執(zhí)行完后a=0;或是線程A,B第一次讀寫沖突,A被B覆蓋了,之后執(zhí)行先線程A的第二次讀寫,再執(zhí)行線程B的第二次讀寫,得到a=-3;
總結(jié)
以上是生活随笔為你收集整理的[java之牛客网每日练习]的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 软件测试---如何选择合适的正交表
- 下一篇: iOS架构-cocoaPods之Podf