我的漫漫程序之旅

          專注于JavaWeb開發(fā)
          隨筆 - 39, 文章 - 310, 評論 - 411, 引用 - 0
          數(shù)據(jù)加載中……

          一家公司的幾道筆試題

          public class Jtest{
          int m=1;
          int i=3;
          void Jtest(){
          m
          =2;
          i
          =4;
          }


          public static void main(String[] args){
          Jtest app
          =new Jtest();
          System.out.println(app.m
          +","+app.i);
          }

          }

          寫出輸出.
          結(jié)果是1,3;
          因為在這里void Jtest();并沒有并調(diào)用,它只是一個
          方法,而非構(gòu)造方法,這樣的編寫是有警告的,不過
          可以運行.

          public class Jtest{
          int m=1;
          int i=3;
          Jtest()
          {
          m
          =2;
          i
          =4;
          }

          public static void main(String[] args){
          Jtest app
          =new Jtest();
          System.out.println(app.m
          +","+app.i);
          }

          }

          寫出輸出:
          結(jié)果是2,4;
          調(diào)用了構(gòu)造方法,不加修飾符,默認訪問權(quán)限是
          package access,在Java里沒有關(guān)鍵字表示,就是
          包內(nèi)的能訪問,包外就不行了(即使導入也不行).
          public class Test
          {
              
          static void oper(int b)
              
          {
                  b 
          = b + 100;
              }

              
              
          public static void main(String[] args)
              
          {
                  
          int a = 99;
                  oper(a);
                  System.out.println(a);
              }


          }

          輸出為99.
          我們來分析一下內(nèi)存:
          int a = 99;
          首先在棧里面開辟一塊空間保存a
          比如:a:xxxx
          然后調(diào)用oper(a);
          這時把a 的值99賦給int b;
          b在內(nèi)存里也開辟了自己的空間,此時
          值也是99.
          然后執(zhí)行oper(a);方法體,b = b + 100;
          此時b的值為199,a的值為99.
          public class Test {
            
          public static void main(String[] args) {
                  String a
          =new String("A");
                  String b
          =new String("B");
                  oper(a,b);
                  System.out.print(a
          +","+b);
              }

            
          static void oper(String c,String d){
                c.concat(
          "B");
                d
          =c;
            }

          }


          此程序輸出:A和B.
          原因就是String是final類型的.并不會被改變.
          public class Test
          {
              
          public static void main(String[] args)
              
          {
                  String a 
          = new String("A");
                  String b 
          = new String("B");
                  a.concat(
          "aa");
                  System.out.println(a 
          + "," + b);
              }


          }


          這個還是會輸出A,B
          原因同上.
          package intervie;

          public class Test
          {
              
          public static void main(String[] args)
              
          {
                  String a 
          = new String("A");
                  String b 
          = new String("B");
                  a 
          = a.concat("aa");
                  System.out.println(a 
          + "," + b);
              }


          }


          做了下改動,再來看看.結(jié)果就不同了.
          輸出的是Aaa,B
          因為String 是final類型的.所以執(zhí)行到
          a = c.concat("aa");
          會在heap里新創(chuàng)建一個對象,而a指向它.
          這是一新的地址,同String a 這個已經(jīng)不同了.
          所以輸出的是后一個.即改變后的值.
          public class Test
          {
              
          static void oper(StringBuffer c,StringBuffer d)
              
          {
                  d 
          = c.append("B");
              }

              
              
          public static void main(String[] args)
              
          {
                  StringBuffer a 
          = new StringBuffer("A");
                  StringBuffer b 
          = new StringBuffer("B");
                  oper(a, b);
                  System.out.println(a 
          + "," + b);
              }


          }


          此程序會輸出:AB,B

          StringBuffer是可變的線程安全的.
          原試題下載地址:點此下載



          posted on 2007-12-09 08:15 々上善若水々 閱讀(700) 評論(0)  編輯  收藏


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


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 滦南县| 祁门县| 内黄县| 城步| 宣汉县| 罗源县| 泽库县| 霍山县| 始兴县| 大姚县| 乌什县| 临江市| 宁波市| 竹溪县| 铜鼓县| 含山县| 饶阳县| 建平县| 繁昌县| 邯郸市| 彭山县| 德格县| 都昌县| 澳门| 新密市| 台东市| 渭南市| 大理市| 苍梧县| 苗栗县| 新化县| 台北市| 庆元县| 邛崃市| 高雄县| 富蕴县| 鄂伦春自治旗| 峨边| 澄迈县| 皋兰县| 周至县|