作題總結(一)

1.有關下述Java代碼描述正確的選項是____。 java

public class TestClass { private static void testMethod(){ System.out.println("testMethod"); } public static void main(String[] args) { ((TestClass)null).testMethod(); } }
A.編譯不經過
B.編譯經過,運行異常,報NullPointerException
C.編譯經過,運行異常,報IllegalArgumentException
D.編譯經過,運行異常,報NoSuchMethodException
E.編譯經過,運行異常,報Exception
F.運行正常,輸出testMethod
想法:第一:靜態方法的調用能夠直接使用「類.方法名」,由於靜態方法在對象建立前就存在了,他的使用不依賴對象是否被建立。也就是說這道題目在main中直接「TestClass.testMethod()」也是能夠的。
   第二:null能夠被強制類型轉換成任意類型的對象,也就是說若是testMethod方法是非靜態的,那麼在靜態的main中能夠經過((TestClass)null).testMethod()來調用該方法,編譯經過,運行報錯(NPE)。


2.該段程序輸出結果是多少?
package algorithms.com.guan.javajicu; public class Inc { public static void main(String[] args) { Inc inc = new Inc(); int i = 0; inc.fermin(i); i= i ++; System.out.println(i); } void fermin(int i){ i++; } }
結果:0.
想法:1.在java中使用了中間變量緩存機制,i=i++;的過程以下:
      temp=i;(右邊的i)
      i=i+1;(右邊的i)
      i=temp;(左邊的i)
   因此輸出是0.
  2.若是是i=++i,其過程以下:
      i=i+1;(右邊的i)
      temp=i;(右邊的i)
      i=temp;(左邊的i)
    輸出是 1.
  3.在C/C++中結果是不同的。

3.選項中哪一行代碼能夠添加 題目中而不產生編譯錯誤?
public abstract class MyClass { public int constInt = 5; //add code here
     public void method() { } }

  A.public abstract void method(int a);緩存

  B.constInt = constInt + 5;spa

  C.public int method();設計

  D.public abstract void anotherMethod() {}code

想法:A是抽象方法,抽象類能夠包含抽象方法,也能夠不包含,雖然A 方法名是method,與題目中的方法同名,可是參數不一樣,是重載方法對象

    B 在類中不能constInt = constInt + 5;  方法中能夠
    C 的方法名與題目中的方法名相同,返回值不能做爲重載的依據
    D 抽象方法沒有方法體
4.什麼是方法的重載:
  答:方法的重載是指在同一個類中,方法的名字相同,可是方法的參數,參數的個數,返回值的類型不一樣。
    方法重寫是指子類和父類的關係子類重寫父類的方法,可是方法名,參數類型,參數個數必須相同。

5.
在類設計中,類的成員變量要求僅僅可以被同一package下的類訪問,請問應該使用什麼修飾詞?
  答:
    不須要任何修飾詞!!
6.該段代碼的輸出?
public class Spike
{
    public static void main(String[] args)
    {
        Counter a = new Counter();
        System.out.println(a.increment());
        System.out.println(a.anotherIncrement());
        Counter b = new Counter();
        System.out.println(b.increment());
    }
}
class Counter
{
    private static int count = 0;
    public int increment()
    {
        return count++;
    }
    public int anotherIncrement()
    {
        return ++count;
    }
}

答案:0,2,2blog

想法:1.count是靜態變量,被全部對象共享,所以無論是a仍是b都會對count的值產生改變。ip

    2.a.increment()執行以後,返回0,而後count值爲1.
ci

    3.a.anotherIncrement執行以後,返回2,count值爲2rem

    4.b.increment執行以後,返回2,count值爲3.

選項中哪一行代碼能夠添加 題目中而不產生編譯錯誤?
1
2
3
4
5
6
public abstract class MyClass {
     public int constInt = 5;
     //add code here
     public void method() {
     }
}

正確答案: A   你的答案: D (錯誤)

public abstract void method(int a);
constInt = constInt + 5;
public int method();
public abstract void anotherMethod() {}
相關文章
相關標籤/搜索