單項選擇題的第9題,請大神賜教,我認為是只有它的子類才可以直接訪問。
一、單項選擇題
1 、執行的結果是:
System.out.format("Pi is approximately %d.", Math.PI);
請問執行結果:運行時異常
解釋:d% 用來輸出 十進制整數,format的第2個參數必須是十進制整數。
Math.PI 是double類型的數據(3.14159...),可以用%f輸出。
圖1:Math.PI需要用%f來輸出
圖2:%d只能輸出十進制整數
2、輸出的結果是:
public class Certkiller3 implements Runnable { public void run() { System.out.print("running"); } public static void main(String[] args) { Thread t = new Thread(new Certkiller3()); t.run(); t.run(); t.start(); } }
輸出的結果為:runningrunningrunning
解釋: Thread.run()與Thread.start()的區別,Thread.run()相當于只是在主線程中,調用了Thread里的一個普通方法run().未開啟多線程。Thread.start()實現了多線程運行程序,run()方法執行完畢,子線程結束。
3、代碼片段1:
public class ComplexCalc { public int value; public void calc() {value += 5;} }
代碼片段2:
public class MoreComplexCalc extends ComplexCalc { public void calc() {value -= 2;} public void calc(int multi) { //調用這個方法 multi = 3 calc(); //調用自己的方法,value = 1; super.calc(); value *= multi; } public static void main(String[] args) { MoreComplexCalc calc = new MoreComplexCalc(); calc.calc(3); System.out.println("Oh it is:" + calc.value); // 3 } }
輸出的結果是:Oh it is:9
解釋:請看圖解(從main方法開始執行)
4、下列說法正確的是:
public class Person { private Stringname; public Person(String name) { this.name = name; } public boolean equals(Person p) { return p.name.equals(this.name); } }
A:equals方法沒有正確覆蓋Object類中的equals方法。
B:編譯這段代碼會出錯,因為第5行的私有屬性p.name訪問不到。
C:如果要與基于哈希的數據結構一起正常地工作,只需要在這個類中在實現hashCode方法即可。
D:當添加一組Person對象到類型為java.util.Set的集合時,第4行中的equals方法能夠避免重復。
答案:A
解釋:如果正確覆蓋,需要形參為Object。
5、 打印的結果是:
public class JavaContest { public static void main(String[] args) throws Exception { Thread.sleep(3000); System.out.println("alive"); } }
結果:會在3秒后輸出alive。
解釋:延遲的效果需要自己去試。
6、請問有什么較好的方法來過濾value是空值的情況。
public void aSafeMethod(Object value) { //在這里檢查方法的參數 //這里省略其他代碼 System.out.println(value.toString()); }
答案:
if(value == null) { throw new IllegalArgumentException("value can not be null."); }
解釋:IllegalArgumentException指傳入了一個不合法的參數異常。
7、打印的結果:
public static void main(String[] args) { method1(1,2); // 執行 method1(int x1, int x2),hello java System.out.print(" java"); } public static void method1(int x1, int x2) { System.out.print("hello"); } public static void method1(int x1, int x2, int x3) { System.out.print("hi"); }
結果是:hello java
解釋:從main方法開始執行,第5行只有2個形參,調用有2個參數的method1方法,執行完后才接著執行第6行。
8、選出正確說法:
void waitForSignal() { Object obj = new Object(); synchronized (Thread.currentThread()) { obj.wait(); obj.notify(); } }
A: 需要處理InterruptedException
B: 代碼能編譯單可能運行時拋出IllegalStateException.
C: 運行10分鐘后代碼拋出TimeOutException.
D: 需要把obj.wait()替換為((Thread) obj).wait()后代碼才能通過編譯。
E: 把obj.wait()和obj.notify()這兩句調換一下位置,能使代碼執行。
答案:A
9、請問什么類可以直接訪問并且改變name的值?
package certkiller; class Target { public String name = "hello"; }
答案:Target的子類(以下3個類的圖片),但參考答案給的是包certkiller下的類,請大神給解釋。
圖1:Test類
圖2:Person類
圖3:t1類
10、 打印的結果:
int i = 1; while(i != 5) { switch(i++%3) { case 0: System.out.print("A"); break; case 1: System.out.print("B"); break; case 2: System.out.print("C"); break; } }
結果:BCAB
解釋:i++%3 表達式是先計算,后對i自加1。
11、執行的結果:
public class Test { public Test() { System.out.print("test "); } public Test(String val) { this(); System.out.print("test with " + val); } public static void main(String[] args) { Test test = new Test("wow"); } }
結果: test test with wow
解釋:此題考查構造方法的調用
12、編譯運行的結果是:編譯出錯
String text = "Welcome to Java contest"; String[] words = text.split("\s"); System.out.println(words.length);
解釋:鼠標移至錯誤地方:Invalid escape sequence (valid ones are \b \t \n \f \r \" \' \\ )
13、以下選項說法正確的是:
public class Test { private int a; public int b; protected int c; int d; public static void main(String[] args) { Test test = new Test(); int a = test.a++; int b = test.b--; int c = test.c++; int d = test.d--; System.out.println(a + " - " + b + " - " + c + " - " + d); } }
A編譯錯誤,因為變量a、b、c和d沒有被初始化
B編譯錯誤,因為變量a無法被訪問
C編譯成功并輸出0 - 0 - 0 - 0
D編譯成功并輸出1 - -1 - 1 - -1
解釋: j=i++ 與j=++i的區別
j=i++, 先將i賦值給j,再對i自身加1;
j=++i, 先對i自身加1,再賦值給j;
14、Map
A、map = new HashMap<>();
B、map = new HashMap
C、map = new HashMap
D、map = new LinkedHashMap,>
答案:D
解釋:Map的Key指題目中已經確定為String, A 答案,泛型可以只有一邊寫明
15、
contestKiller = new ReallyBigObject(); //這里省略部分代碼 contestKiller = null; /*在這里補充代碼*/
哪個是告訴虛擬機盡最大可能回收contestKiller占用的內存空間:
A、Runtime.getRuntime().freeMemory()
B、Runtime.gc()
C、System.freeMemory()
D、Runtime.getRuntime().growHeap()
E、System.gc()
答案:E
解釋:A和B是正在運行過程中的空閑內存,c是系統中的空閑內存,D是運行中的堆棧釋放,E是程序運行時所有的空閑內存空間。
二、多項選擇題:
1、給出一個尚未使用泛型的方法
11. public static int getSum(List list) { 12. int sum = 0; 13. for(Iterator iter = list.iterator(); iter.hashNext();) { 14. int i = ((Integer) iter.next()).intValue(); 15. sun += i; 16. } 17. return sum; 18. }
為了適應泛型,需要對代碼做以下那三項改動?
A、刪除第14行
B、將第14行替換成int i = iter.next();
C、將第13行替換成for(int i : intList) {
D、將第13行替換成for(Iterator iter : intList)
E、方法的參數聲明改為getSum(List
F、方法的參數聲明改為getSum(List
答案: ACF
2、 哪些類的定義是正確的:
public abstract interface Sudo { public void crazy(String s); }
A、public abstract class MySudo implements Sudo {
public abstract void crazy(String s) {} }
B、public abstract class YourSudo implements Sudo {}
C、public class HerSudo implements Sudo {
public void crazy(String i){}
public void crazy(Integer s){} }
D、public class HisSudo implements Sudo {
public void crazy(Integer i) {} }
E、public class ItsSudo extends Sudo {
public void crazy(Integer i){} }
答案:BC
解釋:接口就是抽象的,因此Sudo是否用abstract修飾都沒有關系。實現接口就必須要實現接口里的方法。
3、 請問會輸出哪些情況:
public class Test { public static void main(String[] args) { int i = 3, j; outer:while(i > 0) { j = 3; inner:while(j > 0) { if(j < 2) break outer; //跳出外部outer循環 System.out.println(j + " and " + i); j--; } i--; } } }
答案: 3 and 3 2 and 3
解釋:本問題考察的是2個while循環,使用inner 和 outer標間。
外層循環, i=3 j = 3,進入內層循環, 執行一次輸出, j自減后成2
再內層循環,執行輸出,j自減后成1,執行那個break outer退出外層循環。
4、 有一個文件夾,它有2個子文件夾,分別是“sora”和“shu”, "sora”里面只有名為“aoi.txt”的文件,“shu”里面只有名為“qi.txt”的文件。
在此文件夾下執行以下命令:
java Directories qi.txt
輸出的結果是:“false true”
請問以下哪些選項的代碼分別插到上面的代碼中能達到此效果?
import java.io.*; class Directories { static String[] films = {"sora", "shu"}; public static void main(String[] args) { for(String fp : films) { //在這里插入第一句代碼 File file = new File(path, args[0]); //在這里插入第二句代碼 } } }
A、String path = fp; System.out.print(file.exists() + " ");
B、 String path = fp; System.out.print(file.isFile() + " ");
C、String path = File.separator + fp; System.out.print(file.exists() + " ");
D、String path = File.separator + fp; System.out.print(file.isFile() + " ");
答案:AB
解釋:file.isFile()指文件存在,且為標準文件。
5、以下哪些選項的代碼存在錯誤
A、long n1 = 12_3_45____789;
B、long n2 = __123_45_678_9;
C、int n3 = 0xFc_aB_C3_353;
D、double n4 = 0b11001_001_0_0_11;
E、float n5 = 1.4_142_13;
F、float n6 = 0_1_2_3;
答案:BCE
解釋: n2不能不以數字開頭
n3 提示超出了int類型的最大值
n5 右側數據為double類型
三、編程題
1、 寫一個名叫Square的類用于求一個數的平方。
類里面提供兩個靜態方法,名字都叫square。
其中一個方法的參數和返回值都是long型,另一個方法的參數和返回值都是double型
答:
public class Square{ public static long square(long l){ return l*l; } public staic double squre(double d){ return d*d; } }
2、給出以下接口HelloWorld,請編寫一個類MyHelloWorld實現該接口,并滿足接口中所要求的功能。
答:
public interface HelloWorld{ public void sayHello(); } Public class MyHelloWorld implements HelloWord{ @overide public void sayHello(){ System.out.println(“中國你好!”); } }
3、給出如下Shape類,請事先一個公有類Rectangle,滿足以下要求:
繼承于Shape,實現Shape的所規定的功能
有int類型的width和height屬性(寬和高)及相應的getter和setter
有一個帶兩個int參數的共有構造方法,第一個參數設置寬,第二個參數設置高
給定如下的代碼:
public abstract class Shape { /**計算形狀的面積 */ abstract public int getArea(); }
請您寫出一個類名為Rectangle的類,要求能滿足題意。[代碼編輯區]
public class Rectangle extends Shape{ private int width; private int height; public void setWidth(int width){ this.width = width; } public int getWidth(){ return width; } public void setHeight(int height){ this.height = height; } public int getHeight(){ return height; } public Rectangle(int width, int height){ this.width = width; this.height = height; } public int getArea(){ return this.width*this.height; } }
4、在某間軟件公司里,小蔡接到上頭的一個任務:某位高職的員工留下了一個接口IList,但是該接口的實現類的源碼卻已丟失,現在需要為該接口重新開發一個實現類MyList.
下面提供了IList接口的代碼。
要實現的MyList是一個公有類,里面需要提供一個公有的無參構造方法MyList(),用于創建一個空的(不含任何元素的)IList。
請你幫小蔡寫出這個實現類的代碼。
(注意。若要使用java.lang包以外的類,請別忘了import。競賽時將不會有此提醒)
給定如下的代碼:
/** 精簡的列表(List),用于儲存一系列的元素(對象)。 IList里面儲存的元素會按插入的順序排放,也能根據下標獲取這些元素。下標從0開*始。 */ public interface IList { /**往列表的尾部增加一個元素 */ void add(Object o); /**獲取下標所指定的元素。當下標越界時拋出異常 java.lang.IndexOutBoundsException */ object get(int i); /**獲取列表里當前元素的個數*/ int size(); /**清空列表,移除列表里所有的元素*/ void clear(); }
請您寫出一個類名為MyList的類,要求能滿足題意。[代碼編輯區]
import java.util.ArrayList; import java.util.List; public class MyList implements IList { List list = null; public MyList() { list = new ArrayList(); } void add(Object o) { list.add(o); } object get(int i) { if(i>list.size()) { throw new IndexOutBoundsException (“超出大小”); } return list.get(i); } int size() { return list.size(); } void clear() { list.clear(); } }
就愛閱讀www.92to.com網友整理上傳,為您提供最全的知識大全,期待您的分享,轉載請注明出處。
歡迎轉載:http://www.kanwencang.com/bangong/20161206/63491.html
文章列表