unsigned int const size1 = 2;
char str1[ size1 ];
unsigned int temp = 0;
cin $amp;>amp;$gt; temp;
unsigned int const size2 = temp;
char str2[ size2 ];
第1題
unsigned int const size1 = 2;
char str1[ size1 ];
unsigned int temp = 0;
cin >> temp;
unsigned int const size2 = temp;
char str2[ size2 ];
第2題
第3題
A、以上代碼可通過(guò)編譯
B、不能通過(guò)編譯,因?yàn)闆](méi)有實(shí)現(xiàn)MouseListener接口中的所有方法
C、不能通過(guò)編譯,因?yàn)轭?lèi)頭定義不能分行
D、能通過(guò)編譯,若組件用該類(lèi)作為Mouse的監(jiān)聽(tīng)者并且接收了mouse-exited事件,則在執(zhí)行過(guò)程中會(huì)拋出異常
第4題
public class Servletl extends HttpServlet{
public void init() throws ServletException{
}
public void service(HttpServletRequest
request,HttpServletResponse response)throws
ServletException,IOException{
PrintWriter ut=response.getWriter();
out.println(“hello!”);
}
}
A、編譯該文件時(shí)會(huì)提示缺少doGet()或者doPost()方法,編譯不能夠成功通過(guò)
B、編譯后,把Servletl.class放在正確位置,運(yùn)行該Servlet,在瀏覽器中會(huì)看到輸出文字:hello!
C、編譯后,把Servletl.class放在正確位置,運(yùn)行該Servlet,在瀏覽器中會(huì)看不到任何輸出的文字
D、編譯后, 把Servletl.class放在正確位置,運(yùn)行該Servlet,在瀏覽器中會(huì)看到運(yùn)行期錯(cuò)誤信息
第5題
B.運(yùn)行時(shí)打印“We are equal 30”。
C.運(yùn)行時(shí)打印“Not equal! 20”。
D.以上選項(xiàng)都不正確。
第6題
B.編譯時(shí)出錯(cuò):main方法中無(wú)法訪問(wèn)private類(lèi)型的變量var。
C.運(yùn)行時(shí)出錯(cuò):變量var沒(méi)有被初始化。
D.運(yùn)行時(shí)打印“Value is: 1”。
第7題
[說(shuō)明]
在某些系統(tǒng)中,存在非常復(fù)雜的對(duì)象,可以采用循序漸進(jìn)的方式進(jìn)行組合將小對(duì)象組合,成復(fù)雜的對(duì)象。
以下實(shí)例展示了Builder(生成器)模式。該實(shí)例用來(lái)建立“文件”,文件內(nèi)容包括:一個(gè)標(biāo)題、一串字符以及一些有項(xiàng)目符號(hào)的項(xiàng)目。Builder類(lèi)規(guī)定組成文件的方法,Director類(lèi)利用這個(gè)方法產(chǎn)生一份具體的文件。圖6-1顯示了各個(gè)類(lèi)間的關(guān)系。
以下是Java語(yǔ)言實(shí)現(xiàn),能夠正確編譯通過(guò)。
[Java代碼]
//Builder. java文件
public (1) class Builder {
public abstract void makeTitle(String title);
public abstract void makeString(String str);
public abstract void makeItems(String[] items);
public abstract Object getResult();
}
//Director. java文件
public class Director{
private (2) builder;
public Director(Builder builder){
this. builder = builder;
}
public Object construct(){
builder.makeTitle("Greeting");
builder.makeString("從早上到白天結(jié)束");
builder.makeItems(new String[]{"早安", "午安",});
builder.makeString("到了晚上");
builder.makeItems(new String[]("晚安", "好夢(mèng)",});
return builder.getResult();
}
}
//TextBuilder.java文件
public class TextBuilder (3) Builder{
private StringBuffer buffer = new StringBuffer();
public void makeTitle(String title){
buffer.append("『" + title + "』"\n\n");
}
public void makeString(String str){
buffer.append('■' + str + "\n\n ");
}
public void makeItems(String[] items){
for(int i = 0; i< (4) ; i++){
buffer.append('·' + items[i] + "\n");
}
buffer.append("\n");
}
public Object getResult(){
return buffer.toString();
}
}
//Main.java文件
public class Main {
public static void main(String[] args) {
Director director = new Director(new TextBuilder());
String result = (String)director. (5) ;
System.out.println(result);
第8題
【說(shuō)明】
在一公文處理系統(tǒng)中,開(kāi)發(fā)者定義了一個(gè)公文結(jié)構(gòu)OfficeDoc,其中定義了公文應(yīng)該具有的屬性。當(dāng)公文的內(nèi)容或狀態(tài)發(fā)生變化時(shí),與之相關(guān)聯(lián)的DocExplorer結(jié)構(gòu)的值都需要發(fā)生改變。一個(gè)OfficeDoc結(jié)構(gòu)能夠關(guān)聯(lián)一組DocExplorer結(jié)構(gòu)。當(dāng)OfficeDoc結(jié)構(gòu)的內(nèi)容或狀態(tài)發(fā)生變化時(shí),所有與之相關(guān)聯(lián)的DocExplorer結(jié)構(gòu)都將被更新,這種應(yīng)用被稱(chēng)為觀察者模式。以下代碼采用C語(yǔ)言實(shí)現(xiàn),能夠正確編譯通過(guò)。
【代碼13-4】
include<stdio.h>
define OBS_MAXNUM 20 /*一個(gè)OfficeDoc變量最多能夠關(guān)聯(lián)的DocExplorer變量的個(gè)數(shù)*/
typedef void( (1) )(struc OffieeDoc*, struct DoeExplorer*)I;
struct DocExplorer{
func update;/*DocExplorer結(jié)構(gòu)采用的更新函數(shù)*/
/*其它的結(jié)構(gòu)字段省略*/
};
struet OffieeDoc{
(2) myObs[OBS_MAXNUM];
/*存儲(chǔ)所有與OfficeDoc相關(guān)聯(lián)的DocExplorer結(jié)構(gòu)指針*/
int index;/*與OffieeDoc結(jié)構(gòu)變量相關(guān)聯(lián)的DoeExplorer結(jié)構(gòu)變量的個(gè)數(shù)*/
};
void attaeh(struct OfficeDoc*doc, struct DocExplorer*ob){
/*關(guān)聯(lián)Observer結(jié)構(gòu)ob與OffieeDoe結(jié)構(gòu)doe*/
int loop=0;
if(doc->index>=OBS_MAXNUM||ob==NULL)return;
for(loop=0, loop<doc->index; loop++)
if(doc->myObs[loop]==ob)return;
doc->myObs[doe->index]=ob;
doc->index++;
}
void detaeh(struct OfficeDoc*doc, struct DocExplorer*ob){
/*解除doc結(jié)構(gòu)與ob結(jié)構(gòu)間的關(guān)聯(lián)*/
int loop;
if(ob==NULL)return;
for(loop=0;loop<doc->index; loop++){
if(doe->myObs[loop]==ob){
if(loop<=doc->index-2)
doc->myObs[loop]=doc->myObs[(3)];
doc->myObs[doc->index-1]=NULL;
doc->index——;
breack;
}
}
}
void updatel(struct OfficeDoe*doe, struct DoeExplorer *ob){
/*更新ob結(jié)構(gòu)的值,更新代碼省略*/
} void update2(struct OffieeDoc*doc,struet DocExplorer *ob){
/*更新ob結(jié)構(gòu)的值,更新代碼省略*/
}
void notifyObs(struct OfficeDoc* doc){
/*當(dāng)doc結(jié)構(gòu)的值發(fā)生變化時(shí),通知與之關(guān)聯(lián)的所有DocExplorer結(jié)構(gòu)變量*/
int loop;
for(loop=0; loop<doc->index; loop++){
(doc->myObs[loop])->update((4));
}
}
void main(){
struct OfficeDoc doc; /*定義一了OfficeDoe變量*/
struct DocExplorer explorer1, explorer2; /*定義兩個(gè)DocExplorer變量*/
/*初始化與OfficeDoc變量相關(guān)的DocExplorer變量個(gè)數(shù)為0*/
doc.index=0;
explorer1.update=update1; /*設(shè)置explorer1變量的更新函數(shù)*/
explorer2. update=update2; /*設(shè)置explorer2變量的更新函數(shù)*/
attach(&doc, &explorer1); /*關(guān)聯(lián)explorer1與doc對(duì)象*/
attach(&doc, &explorer2); /*關(guān)聯(lián)explorer2與doc對(duì)象*/
/*其它代碼省略*/
(5); /*通知與OfficeDoe相關(guān)的所有DoeExploer變量*/
return;
}
第9題
[說(shuō)明]
在一公文處理系統(tǒng)中,開(kāi)發(fā)者定義了一個(gè)公文結(jié)構(gòu)OfficeDoc,其中定義了公文應(yīng)該具有的屬性(字段)。當(dāng)公文的內(nèi)容或狀態(tài)發(fā)生變化時(shí),與之相關(guān)聯(lián)的DocExplorer結(jié)構(gòu)的值都需要發(fā)生改變。一個(gè)OfficeDoc結(jié)構(gòu)能夠關(guān)聯(lián)一組DocExplorer結(jié)構(gòu)。當(dāng)OfficeDoc結(jié)構(gòu)的內(nèi)容或狀態(tài)發(fā)生變化時(shí),所有與之相關(guān)聯(lián)的DocExplorer結(jié)構(gòu)都將被更新,這種應(yīng)用被稱(chēng)為觀察者模式。以下代碼采用C語(yǔ)言實(shí)現(xiàn),能夠正確編譯通過(guò)。
[C代碼]
include <stdio.h>
define OBS_MAXNUM 20 /*一個(gè)OfficeDoc變量最多能夠關(guān)聯(lián)的*/
/*DoeExplorer變量的個(gè)數(shù)*/
typedef void((1))(struct OfficeDoc*,street DocExplorer*);
struct DocExplorer{
func update;/* DocExplorer結(jié)構(gòu)采用的更新函數(shù)*/
/*其他的結(jié)構(gòu)字段省略*/
};
struct OfficeDoc{
(2) myObs[OBS_MAXNUM];
/*存儲(chǔ)所有與OfficeDoc相關(guān)聯(lián)的DoeExplorer結(jié)構(gòu)指針*/
int index;/*與OfficeDoc結(jié)構(gòu)變量相關(guān)聯(lián)的DocExplorer結(jié)構(gòu)變量的個(gè)數(shù)*/
};
void attach(struet OfficeDoc *doc, struet DocExplorer *ob){
/*關(guān)聯(lián)Obersver結(jié)構(gòu)ob與OfficeDoe結(jié)構(gòu)doc*/
int loop=0;
if(doc->index >=OBS_MAXNUM || b==NULL) return;
for(loop=0; loop <doc->index; loop++)
if(doc->myObs[loop]==ob)return;
doc->myObs[doe->index]=ob;
doc->index++;
)
void detach(struct OfficeDoc *doc, struct DocExplorer *ob){
/*解除doc結(jié)構(gòu)與ob結(jié)構(gòu)間的關(guān)系*/
int loop;
if(ob==NULL)return;
for(loop=0; loop <doc->index; loop6++){
if(doc->myObs[loop]==ob){
if(loop<=doc->index-2)
doe->myObs[loop]=doc->myObs[ (3) ];
doc->myObs[doe->indox-1]=NULL;
doe->index--;
break;
}
}
}
void updatel(struct OfficeDoc *doc,struct DocExplorer *ob){
/*更新ob結(jié)構(gòu)的值,更新代碼省略*/
}
void update2(stmct OfficeDoc *doc, struct DocExplorer *ob){
/*更新ob結(jié)構(gòu)的值,更新代碼省略*/
}
void notifyObs(struet OfficeDoc *doc){
/*當(dāng)doc結(jié)構(gòu)的值發(fā)生變化時(shí),通知與之關(guān)聯(lián)的所有DocExplorer結(jié)構(gòu)變量*/
int loop;
for(loop=0; loop <doc->index; loop++){
(doc->myObs[loop])->update((4));
}
}
void main(){
stmct OfficeDoc doc;/*定義一OfficeDoc變量*/
struct DocExplorer explorer1, explorer2;/*定義兩個(gè)DocExplorer變量*/
/*初始化與OfficeDoc變量相關(guān)的DocExplorer變量個(gè)數(shù)為0*/
doc.index=0;
explorer1.update=update1;/*設(shè)置explorer1變量的更新函數(shù)*/
explorer2.update=update2;/*設(shè)置explorer2變量的更新函數(shù)*/
attaeh(&doc,&explorer1);/*關(guān)聯(lián)explorer1與doc對(duì)象*/
attach(&doc,&explorer2);/*關(guān)聯(lián)explorer2與doc對(duì)象*/
/*其他代碼省略*/
(5);/*通知與OfficeDoc相關(guān)的所有DocExplorer變量*/
return;
}
第10題
[說(shuō)明]
很多時(shí)候,希望某些類(lèi)只有一個(gè)或有限的幾個(gè)實(shí)例,典型解決方案是所謂單身(Singleton)模式。但在多線程情況下,Singleton模式有可能出現(xiàn)問(wèn)題,需要進(jìn)行同步檢查。如果對(duì)“檢查singleton對(duì)象是否已經(jīng)創(chuàng)建”進(jìn)行同步,則存在嚴(yán)重的瓶頸,所有的線程都必須等待檢查對(duì)象是否存在。解決方式是一種稱(chēng)為Double-Checked-Locking模式,其意圖是將非必須的鎖定優(yōu)化掉,同步檢查最多只發(fā)生一次,因此不會(huì)成為瓶頸。以下是Java語(yǔ)言實(shí)現(xiàn),能夠正確編譯通過(guò)。
[Java代碼]
public class USTax {
private static USTax instance=null;
(1) USTax(){}
private (2) static void doSync(){
if(instance==null){
System.out.println("實(shí)例不存在,創(chuàng)建實(shí)例..");
instance=(3);
System.out.println("實(shí)例創(chuàng)建成功");
}else{
System.out.println("實(shí)例已被創(chuàng)建了");
}
}
public static USTax getInstance(){
if(instance==null){
System.out.println("實(shí)例暫時(shí)不存在");
(4);//同步控制
}else{
System.out.println("實(shí)例已經(jīng)存在");
}
return (5);
}
}
(1)
為了保護(hù)您的賬號(hào)安全,請(qǐng)?jiān)凇?span>上學(xué)吧”公眾號(hào)進(jìn)行驗(yàn)證,點(diǎn)擊“官網(wǎng)服務(wù)”-“賬號(hào)驗(yàn)證”后輸入驗(yàn)證碼“”完成驗(yàn)證,驗(yàn)證成功后方可繼續(xù)查看答案!