正確答案是B。
理由:
main方法中定義了兩個int類型的變數,值var1=10 值var2=20
然後看輸出結果:
首先var1+var2++(兩個加號的意思是該變數自加1,但在下一次出現該變數的時候值才發生改變)=10+20 也就是30
然後兩個雙引號將值隔開,在這里雙引號前後的加號代表兩個字元的連接而不是算術運算的意思,再往後再次出現var2,這時的var2已經自加1變成了21
所以答案是B,也就是 30、21
要是錯了給我留言,我再看看·
B. java考試
復習題
1、多線程有幾種實現方法,都是什麼?同步有幾種實現方法,都是什麼?
答:多線程有兩種實現方法,分別是繼承Thread類與實現Runnable介面
同步的實現方面有兩種,分別是synchronized,wait與notify
2、線程的基本概念、線程的基本狀態以及狀態之間的關系
答:線程指在程序執行過程中,能夠執行程序代碼的一個執行單位,每個程序至少都有一個線程,也就是程序本身。
Java中的線程有四種狀態分別是:運行、就緒、掛起、結束
3、sleep() 和 wait() 有什麼區別?
答:sleep是線程類(Thread)的方法,導致此線程暫停執行指定時間,給執行機會給其他線程,但是監控狀態依然保持,到時後會自動恢復。調用sleep不會釋放對象鎖。
wait是Object類的方法,對此對象調用wait方法導致本線程放棄對象鎖,進入等待此對象的等待鎖定池,只有針對此對象發出notify方法(或notifyAll)後本線程才進入對象鎖定池准備獲得對象鎖進入運行狀態。
4、當一個線程進入一個對象的一個synchronized方法後,其它線程是否可進入此對象的其它方法?
答:不能,一個對象的一個synchronized方法只能由一個線程訪問。
5、Thread和Runnable有什麼不同?
JAVA線程式控制制著程序執行的主路徑。當你用java命令調用JVM時,JVM創建了一個隱式線程來執行main方法。Thread類提供了主線程調用其它線程並行運行的機制。
Runnable介面定義了一個能被Thread運行的類。實現Runnable的類只需要實行run方法。可以很靈活的擴展現在的已經繼承自其它父類的類。而thread則不可以,因為java只允許繼承一個父類。
6、啟動一個線程是用run()還是start()?
答:啟動一個線程是調用start()方法,使線程所代表的虛擬處理機處於可運行狀態,這意味著它可以由JVM調度並執行。這並不意味著線程就會立即運行。run()方法可以產生必須退出的標志來停止一個線程。
7、請說出你所知道的線程同步的方法。
答:wait():使一個線程處於等待狀態,並且釋放所持有的對象的lock。
sleep():使一個正在運行的線程處於睡眠狀態,是一個靜態方法,調用此方法要捕捉InterruptedException異常。
notify():喚醒一個處於等待狀態的線程,注意的是在調用此方法的時候,並不能確切的喚醒某一個等待狀態的線程,而是由JVM確定喚醒哪個線程,而且不是按優先順序。
Allnotity():喚醒所有處入等待狀態的線程,注意並不是給所有喚醒線程一個對象的鎖,而是讓它們競爭。
8、在Java中允許創建多線程應用程序的介面是()。
【A】Threadable 【B】Runnable
【C】Clonable 【D】以上均不是
【解析】A
9、在JAVA編程中,實現Runnable介面時必須實現的方法是()。
【A】wait() 【B】run()
【C】stop() 【D】start()
【解析】B
10、JAVA線程編程中,如果讓線程睡眠,可以用()方法實現。
【A】start() 【B】close();
【C】setDaemon(); 【D】sleep();
【解析】D
11、編譯運行下面的代碼會發生什麼
public class Test extends Thread {
private String sThreadName;
public static void main(String args[]) {
Test h = new Test();
h.go();
}
Test() {
}
Test(String s) {
sThreadName = s;
}
public String getThreadName() {
return sThreadName;
}
public void go() {
Test first = new Test("first");
first.start();
Test second = new Test("second");
second.start();
}
public void start() {
for (int i = 0; i < 2; i++) {
System.out.println(getThreadName() + i);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
System.out.println(e.getMessage());
}
}
}
}
【A】編譯錯誤
【B】輸出first0, second0, first1, second1
【C】輸出first0, first1, second0, second1
【D】運行時錯誤
答案:C。
12、編譯運行下面的代碼會發生什麼
public class Test {
public static void main(String argv[]) {
Pmcraven pm1 = new Pmcraven("one");
pm1.run();
Pmcraven pm2 = new Pmcraven("two");
pm2.run();
}
}
class Pmcraven extends Thread {
private String sTname = "";
Pmcraven(String s) {
sTname = s;
}
public void run() {
for (int i = 0; i < 2; i++) {
try {
sleep(1000);
} catch (InterruptedException e) {
}
yield();
System.out.println(sTname);
}
}
}
【A】編譯錯誤 【B】輸出One One Two Two
【C】輸出One Two One Two 【D】輸出One Two One Two
答案B
13、一個完整的URL地址由哪幾部分組成?
答:一個完整的URL由4部分組成:資源類型、存放資源的主機域名、資源文件名和埠。
其中:資源類型:指服務協議類型,如Web伺服器的http協議。
主機域名:一般給出伺服器主機的名稱或IP號。
資源文件名:給出要查詢的文件的相對路徑以及名稱。
埠:伺服器的整型埠號,通常只有使用非標准埠時才指定。
例如:http://192.168.1.220:80/index.html
其中:http是伺服器採用http協議、「192.168.1.220」是伺服器的IP號、「index.html」伺服器的根位置文件index.html、80為埠號。
14、建立Socket對象和ServerSocket對象的工作步驟分別是那些。
書籍P38-39
15、套接字包括( )
【A】埠號 【B】IP地址
【C】埠號和IP地址 【D】都不是
答案C
16、等待客戶端請求連接,伺服器可以使用的類是( )
【A】Socket 【B】ServerSocket
【C】Server 【D】URL
答案B
17、ServerSocket的accept()方法返回的對象類型是( )
【A】Socket 【B】ServerSocket
【C】Server 【D】URL
答案A
18、用來封裝計算機IP地址和域名的類是( )
【A】Socket 【B】InetAddress
【C】URLConnection 【D】URL
答案A
19、Java中的事件處理機制?
答:事件從事件源到監聽者的傳遞是通過對目標監聽者對象的Java 方法調用進行的。對每個明確的事件的發生,都相應地定義一個明確的Java 方法。這些方法都集中定義在事件監聽者介面(EventListener Interface)中,這個介面要繼承java.util.EventListener。實現了事件監聽者介面中一些或全部方法的類就是事件監聽者。伴隨著事件的發生,相應的狀態通常都封裝在事件狀態對象(Event State Object)中,該對象必須繼承自java.util.EventObject。事件狀態對象作為單參傳遞給應響應該事件的監聽者方法中。發出某種特定事件的事件源的標識是:遵從規定的設計格式為事件監聽者定義注冊方法,並接受對指定事件監聽者介面實例的引用。有時,事件監聽者不能直接實現事件監聽者介面,或者還有其它的額外動作時,就要在一個源與其它一個或多個監聽者之間插入一個事件適配器類的實例,來建立它們之間的聯系。
20、簡述適配器和監聽介面的區別。
21、下面( )方法用於獲得事件源。
【A】getEvent() 【B】getCommand()
【C】getText() 【D】getSource()
答案D
22、下述代碼中,如果單擊「TEST」按鈕,標准輸出的消息是( )
public class Exercise extends JFrame{
public Exercise(){
super("事件測試");
Button b=new Button("TEST ");
b.addMouseListener(new Tester());
this.add(b);
this.setSize(200,150);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}
class Tester implements MouseListener{
public void actionPerformed(ActionEvent e){
System.out.println("按鈕發生動作");
}
public void mouseClicked(MouseEvent e){
System.out.println("按鈕被單擊");
}
public void mousePressed(MouseEvent e) { }
public void mouseReleased(MouseEvent e) { }
public void mouseEntered(MouseEvent e) { }
public void mouseExited(MouseEvent e) { }
}
【A】"按鈕發生動作" 【B】"按鈕被單擊"
【C】"按鈕發生動作"和"按鈕被單擊" 【D】以上都不對
答案B
23、試描述創建一個菜單的步驟。
書籍P95
24、簡述實現一個JDialog對話框的步驟。
書籍P104
25、在正則表達式中,( )符號用於匹配單個字元。
【A】. 【B】?
【C】* 【D】+
答案B
26、下面( )符號用於匹配一次或多次。
【A】. 【B】?
【C】* 【D】+
答案D
27、下述正則表達式為:
(\d{1,3}\.){3}\d{1,3}
給出正則表達式描述的匹配字元( )。
註:\d 匹配數字字元(0~9);{n}匹配確定的n次,n是一個非負整數
{n,m}最少匹配n次且最多匹配m次,m和n均為非負整數,其中n≤m
C. 編譯如下代碼,為何會出現error:應輸入")"
兩個錯誤:
1. string make_plural(size_t ctr,const string &word,const string &ending "s")
在"s"之前要補一個等號.
2. return (ctr==1) ? word: word+ending
末尾漏了分號.
D. 編譯下列代碼時會發生什麼情況
A 類的成員變數是可以不賦初始值的,boolean的默認初始值是false;
B MyIf(){ ... } 是這個類的構造方法 不是判斷語句
C 可以創建 可以分配
D main方法創建 MyIf對象,jvm分配內存,給成員變數設置初始值,b=false,然後調用構造方法,因為b這時候是false 所以列印 The value of b was false
E. 當編譯並運行下面程序時會發生什麼結果 public class hope public static vo
編譯並運行輸出0到9
F. 用vc++6.0編譯下面代碼出現問題,怎麼解決求大神
拷貝,編譯,運行,沒毛病
這段代碼是C語言代碼。但是你用的是vc++編譯器。編譯器的版本差異,總會造成千奇百怪的錯誤。
G. 請問以下代碼在編譯執行的時候會出現什麼問題
代碼出現什麼問題,自己去運行就知道,這樣編譯環境會提示你並如何改進。
H. 編譯和運行以下代碼會發生什麼
答案為D 程序輸出」15」;
final對於基本類型的變數,的確是不能被修改值了
但是這里你的theA 它不是基本類型變數,它是對象變數,因為對象變數在傳遞時是傳遞其引用,這樣你在方法中對對象變數的修改也會影響到調用語句中的對象變數。明白了嗎?
I. 如果編譯運行下面的Java代碼,將會()
C) 發生運行時異常
因為父類 Base 向子類 Sub 轉型的時候就會出現 java.lang.ClassCastException 錯誤
J. 以下代碼在編譯和運行過程中會出現什麼情況
編譯報錯,錯誤代碼:c+=s; 此處c是字元類型,s是字元串類型,c+=s;實際為c=c+s;其中c+s該處相加後的結果是String類型的,是無法將String類型的直接賦值給char類型的