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

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

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

    qileilove

    blog已經轉移至github,大家請訪問 http://qaseven.github.io/

    一些關于Java的瑣碎知識點

    1、對于類中的final類型屬性,一般在聲明的時候直接寫final int a =1;

      但也可以在構造函數中進行賦值,如:

    final int a;
    A{}( a =1;)

      但要注意:需要每一個構造函數都賦值,且不能嵌套。

      而如果想寫static final int a;則必須在聲明時進行初始化,static final int a = 1;因為靜態的也是不屬于類。

      2、繼承中要注意的問題:子類對父類中構造方法的問題。

      父類的中構造方法不能被繼承,故

    class A{}
    class B extends A{ A();} //是錯的,只能用super關鍵字

      如果子類中沒有顯示的調用super,則系統會加上,super();注意即是找父類中無參數的構造方法,所以,如果父類自己寫了構造方法而導致無參數的已經不存在了,則會出錯.

      3、靜態方法:只屬于類本身,而不是某個對象。它是在類加載的時候,就已經為之分配好內存了。這時,并沒有產生這個的對象。而對象只有在new時候才會出現。所以只能把這個變量加個static.這也叫做類變量,與之對應的叫做實例變量。

      4、main是靜態的,因為它不是屬于某個類的,而是全局的。因此在執行時直接找到main,而不是針對某個類的對象。如果不是static,則會先產生類的對象。

      public:由于其是虛擬機調用,因此必須是public的。

      static:由于其不必產生對象,因此是static的。

      5、對于主類的修飾符是default時:表示在同一個包中可以被訪問。

      6、final類不能被繼承。

      7、private的方法,只要出了類就不能被訪問,不管是在同一個包中,還是繼承關系。默認的訪問權限都是在這個包中,被繼承也不能被訪問。

      protected方法對以上均適用,但和public方法也有區別

      在于:對于不同包中,沒有繼承關系的兩個類而言,在一個類中使用了另一個類的對象,則只有public方法可以被訪問,而protected方法不能被訪問。

      8、抽象方法的聲明:abstract void proMethod(); //不要加大括號

      看一個類是否被實現,不是看{}里面有沒有代碼,而是看有沒有{}

      9、JNI(Java Native Interface),它允許Java虛擬機(JVM)內部運行的Java代碼能夠與用其它編程語言(如c、c++、匯編語言)編寫的應用程序和庫進行互操作。

      JNI可以理解為Java和本地應用程序之間的中介。

      它最大的好處是沒有對底層Java虛擬機的實現施加任何限制。

      寫一個native的方法:

      1)寫java代碼段,如HelloWorld.java。

      2)用javac來編譯之,得到.class文件。

      3)用javah -jni 來生成HelloWorld頭文件,得到HelloWorld.h

      4)用HelloWorld.h來生成本地方法,得到HelloWorldImp.c

      5)編譯本地代碼,加載共享庫,生成Hello.so(so文件是linux,或unix下動態連接庫的文件,相當于windows下的.dll)

      10、對于接口中的方法,默認情況下就是public abstract的,因此不用再寫,也因此,實現接口時必須用public來修飾。

      接口中的數據成員默認都是public static final.

     11、

    以下是代碼片段:
     class Z extends A implements B,C
      {
      }
      //注意這個順序先派生類,再實現接口。

      12、有關內部類:當我們產生一個派生類的對象的時候,它會調用基類的構造函數,產生一個基類的對象。因此

    以下是代碼片段:
     class Car
      {
      class Wheel
      {
      }
      }
      class PlaneWheel extends Car.Wheel
      {
      public static void main(String[] args)
      {
      PlaneWheel pw = new PlaneWheel();
      }
      }

      這是不能通過編譯的,因為我們要產生pw,就必須先產生Car.Wheel的對象,而它是內部類,所以要產生它的對象,就必須先產生外部類的對象,才能建立起內部與外部的引用關系。

      因此作出改變:

    以下是代碼片段:
      class PlaneWheel extends Car.Wheel
      {
      PlaneWheel(Car car)
      {
      car.super();
      }
      public static void main(String[] args)
      {
      Car car = new Car();
      PlaneWheel pw = new PlaneWheel(car);
      }
      }

      21、javac A.java可以生成B.class,前提是classB在A.java中被聲明為一個類,且不是Public的。

      22、finally的問題:不是在try,catch之后的語句就相當于finally,因為如果在try中有return語句,則其后的是不會被執行的。而如果放在finally中,則一定會執行。

      如果在代碼中會有一個嚴重錯誤,而不想讓finally中的語句執行,則寫

      System.exit(-1);來避免其執行。//不是0就可以。

      23、c++中允許程序員重載操作符,但java中不允許。針對String的"+"和"+=",是java中唯一被重載的操作符。

      24、StringBuffer的應用:

      StringBuffer sb = new StringBuffer().append("a").append("bc").append("123");

      可用toString()方法,將其轉化為toString();

      由于在打印時會自動調用toString方法,因此,打印時不必顯示加上。

      25、java中的索引是從0開始,而且,對于一個區間的數值,是大于等于,小于的關系。即前面的數字是包含的,而后面的是不包含的。

     26、java中,傳參時:對于基本數據類型,傳遞的是數據的拷貝;對于引用類型,傳遞的引用的拷貝。但是對于引用的拷貝,是淺拷貝,即指向了堆中同一處內存。

      因此在改變值的時結果不一樣,對于基本類型,其回到傳參者時沒有改變其值,而對于引用,其值則改變了。

      27、有的接口中沒有任何抽象方法,如cloneable,叫作標識接口。它僅僅是告訴編譯器自己可以被克隆。

      如果類中的成員有引用,則涉及到淺拷貝還是深拷貝的問題。

      淺拷貝就是把除了引用成員的全都拷貝一份,而對于引用部分則指向同一處。而深拷貝就是把所有的都拷貝一份。

      調用super.clone()方法,它可以在運行時刻,object中的clone()識別出你要復制的哪一個對象,然后為此對象分配空間,并進行對象復制,將原始對象的內容一一復制到新對象的存儲空間中。

      28、Integer的

      valueOf(String s) //把s轉化成一個包裝類對象返回

      parseInt(String s) //把s轉化成一個int型數據返回

      封裝類的對象的值是不能被修改的,只能是讀。

      29、java中,每個class都有一個相應的Class對象。也就是說,當我們編寫一個類,編譯完成后,在生成的.class文件中,就會產生一個Class對象,用于表示這個類的類型信息。

      獲取class實例的三種方式:

      a)利用對象調用getClass()方法獲取該對象的class實例;

      b)使用class類的靜態方法forName(),用類的名字獲取一個class實例

      c)運用.class的方式來獲取class實例,對于基本數據類型的封裝類,還可以用.type來獲取相對應的基本數據類型的class類型。如:

    以下是代碼片段:
    Point pt = new Point();
      Class c1 = pt.getClass();
      System.out.println(c1.getName());
      try{
      Class c2 = Class.forName("Point");
      System.out.println(c2.getName());
      }
      catch{……}
      Class c3 = Point.class;
      System.out.println(c3.getName());
      Class c4 = int.class;
      System.out.println(c4.getName());
      Class c5 = Integer.TYPE;
      System.out.println(c5.getName());

      30、java中的反射api:主要用于:對于某個不知道名字的類,通過反射機制調用他們的構造函數,為構造函數及其他函數進行傳參,調用。

      31、runtime這個類提供了應用程序與環境之間的接口??梢垣@取jvm的總共內存,已占有的內存。用getRuntime()方法獲取其實例。

    Runtime rt = Runtime.getRuntime();
    System.out.println(rt.freeMemory());
    System.out.println(rt.totalMemory());

      另可以有執行命令,返回一個process. 為應用程序做準備。

    try{rt.exec("notepad");}
    try{rt.exec(javac ArrayTest.java);};

      要獲得其具體輸出的信息,可以用process類。

    try{
    Process p = rt.exec("java ArrayTest");
    InputStream is = p.getInputStream();//此時,其輸出全在了 InputStream中
    int data;
    while((data=is.read())!=-1)
    {
    System.out.print((char)data);
    }
    }

      Runtime類是使用單例模式的一個例子。

      32、單例模式:

      a)一個類只有一個實例,而且自行實例化并向整個系統提供這個實例,這個類稱為單例類。

      b)單例類的一個最重要特點:它是類的構造方法是私有的,從而避免了外部利用構造方法直接創建多個實例。

    以下是代碼片段:
    class Singleton
      {
      private static final Singleton st = new Singleton();
      private Singleton(){}
      public static Singleton getInstance()
      {
      return st;
      }
      }


    posted on 2011-10-28 10:25 順其自然EVO 閱讀(238) 評論(0)  編輯  收藏

    <2011年10月>
    2526272829301
    2345678
    9101112131415
    16171819202122
    23242526272829
    303112345

    導航

    統計

    常用鏈接

    留言簿(55)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲第一区精品观看| 免费国产成人高清在线观看网站| 国产亚洲一区二区精品| 久章草在线精品视频免费观看| 亚洲精品中文字幕麻豆| 精品久久洲久久久久护士免费 | 亚洲国产精品无码第一区二区三区 | 中文字幕免费不卡二区| 亚洲激情校园春色| 无码不卡亚洲成?人片| 日本免费一区二区三区| 美女视频黄频a免费| 久久精品国产亚洲AV电影| 亚洲AV无码专区亚洲AV桃| xxxx日本免费| 一区二区视频在线免费观看| 亚洲高清中文字幕| 亚洲精品国精品久久99热| 99久久国产热无码精品免费| 国产免费AV片在线观看播放| 亚洲最大无码中文字幕| 亚洲AV无码国产精品麻豆天美| 国产嫩草影院精品免费网址| 久久国产色AV免费观看| 国产区在线免费观看| 亚洲欧美日韩久久精品| 亚洲日本中文字幕区| 中文字幕亚洲无线码| 日本高清色本免费现在观看| 四虎成年永久免费网站| 三级黄色免费观看| 黄色一级视频免费观看| 亚洲 暴爽 AV人人爽日日碰| 久久青青草原亚洲av无码app| 久久精品亚洲男人的天堂| 国产男女猛烈无遮挡免费视频网站| 亚洲国产成a人v在线观看| 久久久久亚洲AV成人无码| 国产精品亚洲产品一区二区三区 | 久久久久亚洲av无码专区| 国产成人亚洲综合|