<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 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    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( 實現(xiàn) ) 具體細節(jié)的,怎么可以用 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 中,參數(shù) 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();
    ???}
    }
    答案:錯誤。在編譯時會發(fā)生錯誤 ( 錯誤描述不同的 JVM 有不同的信息,意思就是未明確的 x 調(diào)用,兩個 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());
    ????}
    }
    這個錯誤不容易發(fā)現(xiàn)。
    答案 :? 錯。 "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 。寫出程序。
    以下程序使用內(nèi)部類實現(xiàn)線程,對 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();
    }
    ?}
    ??}
    }

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


    網(wǎng)站導航:
     
    主站蜘蛛池模板: 久久精品亚洲综合| 中文无码亚洲精品字幕| 日韩电影免费在线| 香蕉成人免费看片视频app下载| 女bbbbxxxx另类亚洲| 亚洲人成综合在线播放| 国产V亚洲V天堂A无码| 国产精品亚洲不卡一区二区三区| 性感美女视频免费网站午夜| 99久久国产免费中文无字幕| 成人无码精品1区2区3区免费看| 黄页网址大全免费观看12网站| 免费电影在线观看网站| 久久精品视频免费看| 亚洲伊人久久大香线蕉啊| 亚洲AV人无码综合在线观看| 在线观看亚洲天天一三视| 最近在线2018视频免费观看| 99久久婷婷免费国产综合精品| 一级黄色免费毛片| 国产亚洲男人的天堂在线观看| 亚洲天然素人无码专区| 亚洲欧洲日本在线观看| 亚洲一本之道高清乱码| 亚洲色av性色在线观无码| 亚洲综合精品香蕉久久网97| 日韩a级毛片免费视频| 在线a毛片免费视频观看| 99re热免费精品视频观看| 9久9久女女免费精品视频在线观看| 久久国产免费福利永久| 青青青国产在线观看免费网站| 四虎1515hh永久久免费| 91在线品视觉盛宴免费| 欧美男同gv免费网站观看| 成年人视频在线观看免费| 欧洲精品免费一区二区三区 | 少妇中文字幕乱码亚洲影视| 亚洲AV美女一区二区三区| 久久亚洲春色中文字幕久久久| 久久精品国产亚洲AV香蕉|