<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    夢想飛翔

    自強不息
    posts - 111, comments - 30, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    JAVA代碼查錯

    Posted on 2007-05-21 11:55 love1563 閱讀(121) 評論(0)  編輯  收藏
    149 JAVA 代碼查錯
    1.
    abstract?class?Name?{
    ???private?String?name;
    ???public?abstract?boolean?isStupidName(String?name)?{}
    }
    大俠們,這有何錯誤 ?
    答案 :? 錯。 abstract?method 必須以分號結尾,且不帶花括號。
    2.
    public?class?Something?{
    ???void?doSomething?()?{
    ???????private?String?s?=?"";
    ???????int?l?=?s.length();
    ???}
    }
    有錯嗎 ?
    答案 :? 錯。局部變量前不能放置任何訪問修飾符 ?(private public ,和 protected) final 可以用來修飾局部變量
    (final 如同 abstract strictfp ,都是非訪問修飾符, strictfp 只能修飾 class method 而非 variable)
    3.
    abstract?class?Something?{
    ???private?abstract?String?doSomething?();
    }
    這好像沒什么錯吧 ?
    答案 :? 錯。 abstract methods 不能以 private 修飾。 abstract methods 就是讓子類 implement( 實現 ) 具體細節的,怎么可以用 private abstract
    method
    封鎖起來呢 ??( 同理, abstract?method 前不能加 final)
    4.
    public?class?Something?{
    ???public?int?addOne(final?int?x)?{
    ???????return?++x;
    ???}
    }
    這個比較明顯。
    答案 :? 錯。 int?x 被修飾成 final ,意味著 x 不能在 addOne?method 中被修改。
    5.
    public?class?Something?{
    ???public?static?void?main(String[]?args)?{
    ???????Other?o?=?new?Other();
    ???????new?Something().addOne(o);
    ???}
    ???public?void?addOne(final?Other?o)?{
    ???????o.i++;
    ???}
    }
    class?Other?{
    ???public?int?i;
    }
    和上面的很相似,都是關于 final 的問題,這有錯嗎 ?
    答案 :? 正確。在 addOne?method 中,參數 o 被修飾成 final 。如果在 addOne?method 里我們修改了 o reference
    (
    比如 :?o?=?new?Other();) ,那么如同上例這題也是錯的。但這里修改的是 o member?vairable
    (
    成員變量 ) ,而 o reference 并沒有改變。
    6.
    class?Something?{
    ????int?i;
    ????public?void?doSomething()?{
    ????????System.out.println("i?=?"?+?i);
    ????}
    }?
    有什么錯呢 ?? 看不出來啊。
    答案 :? 正確。輸出的是 "i?=?0" int?i 屬於 instant?variable?( 實例變量,或叫成員變量 ) instant?variable default?value int default?value 0
    7.
    class?Something?{
    ????final?int?i;
    ????public?void?doSomething()?{
    ????????System.out.println("i?=?"?+?i);
    ????}
    }
    和上面一題只有一個地方不同,就是多了一個 final 。這難道就錯了嗎 ?
    答案 :? 錯。 final?int?i 是個 final instant?variable?( 實例變量,或叫成員變量 ) final instant?variable 沒有 default?value ,必須在 constructor?( 構造器 ) 結束之前被賦予一個明確的值。可以修改為 "final?int?i?=?0;"
    8.
    public?class?Something?{
    ?????public?static?void?main(String[]?args)?{
    ????????Something?s?=?new?Something();
    ????????System.out.println("s.doSomething()?returns?"?+?doSomething());
    ????}
    ????public?String?doSomething()?{
    ????????return?"Do?something?...";
    ????}
    }
    ?
    看上去很完美。
    答案 :? 錯。看上去在 main call?doSomething 沒有什么問題,畢竟兩個 methods 都在同一個 class 里。但仔細看, main static 的。 static?method 不能直接 call?non-static?methods 。可改成 "System.out.println("s.doSomething()?returns?"?+?s.doSomething());" 。同理, static?method 不能訪問 non-static?instant?variable
    9.
    此處, Something 類的文件名叫 OtherThing.java
    class?Something?{
    ????private?static?void?main(String[]?something_to_do)?{????????
    ????????System.out.println("Do?something?...");
    ????}
    }
    ?
    這個好像很明顯。
    答案 :? 正確。從來沒有人說過 Java Class 名字必須和其文件名相同。但 public?class 的名字必須和文件名相同。
    10
    interface??A{
    ???int?x?=?0;
    }
    class?B{
    ???int?x?=1;
    }
    class?C?extends?B?implements?A?{
    ???public?void?pX(){
    ??????System.out.println(x);
    ???}
    ???public?static?void?main(String[]?args)?{
    ??????new?C().pX();
    ???}
    }
    答案:錯誤。在編譯時會發生錯誤 ( 錯誤描述不同的 JVM 有不同的信息,意思就是未明確的 x 調用,兩個 x 都匹配(就象在同時 import?java.util java.sql 兩個包時直接聲明 Date 一樣)。對于父類的變量 , 可以用 super.x 來明確,而接口的屬性默認隱含為 ?public?static?final. 所以可以通過 A.x 來明確。
    11.
    interface?Playable?{
    ????void?play();
    }
    interface?Bounceable?{
    ????void?play();
    }
    interface?Rollable?extends?Playable,?Bounceable?{
    ????Ball?ball?=?new?Ball("PingPang");
    }
    class?Ball?implements?Rollable?{
    ????private?String?name;
    ????public?String?getName()?{
    ????????return?name;
    ????}
    ????public?Ball(String?name)?{
    ????????this.name?=?name;????????
    ????}
    ???public?void?play()?{
    ????????ball?=?new?Ball("Football");
    ????????System.out.println(ball.getName());
    ????}
    }
    這個錯誤不容易發現。
    答案 :? 錯。 "interface?Rollable?extends?Playable,?Bounceable" 沒有問題。 interface 可繼承多個 interfaces ,所以這里沒錯。問題出在 interface?Rollable 里的 "Ball?ball?=?new?Ball("PingPang");" 。任何在 interface 里聲明的 interface?variable?( 接口變量,也可稱成員變量 ) ,默認為 public?static?final 。也就是說 "Ball?ball?=?new?Ball("PingPang");" 實際上是 "public?static?final?Ball?ball?=?new?Ball("PingPang");" 。在 Ball 類的 Play() 方法中, "ball?=?new?Ball("Football");" 改變了 ball reference ,而這里的 ball 來自 Rollable?interface Rollable?interface 里的 ball public?static?final 的, final object 是不能被改變 reference 的。因此編譯器將在 "ball?=?new?Ball("Football");" 這里顯示有錯。
    28 、設計 4 個線程,其中兩個線程每次對 j 增加 1 ,另外兩個線程對 j 每次減少 1 。寫出程序。
    以下程序使用內部類實現線程,對 j 增減的時候沒有考慮順序問題。
    public?class?ThreadTest1{
    ??private?int?j;
    ??public?static?void?main(String?args[]){
    ThreadTest1?tt=new?ThreadTest1();
    Inc?inc=tt.new?Inc();
    Dec?dec=tt.new?Dec();
    for(int?i=0;i<2;i++){
    Thread?t=new?Thread(inc);
    t.start();
    t=new?Thread(dec);
    t.start();
    }
    }
    ??private?synchronized?void?inc(){
    j++;
    System.out.println(Thread.currentThread().getName()+"-inc:"+j);
    ??}
    ??private?synchronized?void?dec(){
    j--;
    System.out.println(Thread.currentThread().getName()+"-dec:"+j);
    ??}
    ??class?Inc?implements?Runnable{
    public?void?run(){
    for(int?i=0;i<100;i++){
    inc();
    }
    }
    ??}
    ??class?Dec?implements?Runnable{
    public?void?run(){
    for(int?i=0;i<100;i++){
    dec();
    }
    ?}
    ??}
    }

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 中文字幕亚洲一区二区va在线| 中文字幕免费高清视频| 国产无遮挡吃胸膜奶免费看| 99999久久久久久亚洲| 欧洲精品成人免费视频在线观看| 亚洲一级毛片在线观| 久九九精品免费视频| 亚洲最大福利视频| 在线播放免费人成视频在线观看| 亚洲日韩精品国产3区| 免费黄色网址入口| 特级毛片免费播放| 亚洲午夜av影院| 182tv免费视频在线观看| 亚洲免费在线视频| 成人无码区免费A片视频WWW | 亚洲免费无码在线| 亚洲色欲色欲www在线丝| 国产精品网站在线观看免费传媒| 亚洲人成在线观看| 成人性生交大片免费看午夜a| 亚洲永久网址在线观看| 在线免费一区二区| 一级做性色a爰片久久毛片免费| 国产乱辈通伦影片在线播放亚洲 | www一区二区www免费| 亚洲尹人九九大色香蕉网站| 久久久久久久久免费看无码| 香蕉97碰碰视频免费| 亚洲AV无码国产精品色午友在线 | 无码国产精品一区二区免费| 国产精品亚洲专区无码唯爱网| 亚洲日韩人妻第一页| 在线免费观看亚洲| 欧美亚洲精品一区二区| 亚洲国产精品无码久久一线| 成年网站免费视频A在线双飞| 一级日本高清视频免费观看| 久久亚洲sm情趣捆绑调教| 免费人成再在线观看网站| 亚洲高清国产AV拍精品青青草原 |