java無難事筆記(六)

數組拷貝System.copyArrays

 

對於對象拷貝的只是對象的引用,對象數組拷貝的僅僅是引用,因此修改拷貝後的對象的值也會影響原始對象的值!

 

數組從起始地start-start+length-1

 

數組排序Arrays.sort() java.util.Arrays

 

數組查找 Arrays.binarySearch()

 

 

對象的排序Arrays.sort()

對象的排序,

對象必須實現java.lang中的Comparable接口

覆蓋compareTo方法

public int compareTo(Object o)

  {

        Student t = (Student)o;

        if(no<t.no)

          return 1;

        elseif(no==t.no)

          return 0;

        else

          return -1;

  }

//當兩者需要交換位置的時候返回正值,不要交換的時候返回負值,不要任何動作的時候返回0;

 

重寫toString方法可以直接打印對象,這是因爲在打印對象的時候,會調用toString方法

import java.util.Arrays;

 

class Student implements Comparable

{

         intno;

         Stringname;

         Student(intno,String name)

         {

                   this.no= no;

                   this.name= name;

         }

         publicString toString()

         {

                     return"no="+no+","+"name="+name;

         }

         publicint compareTo(Object o)

  {

        Student t = (Student)o;

        if(no<t.no)

          return 1;

        elseif(no==t.no)

          return 0;

        else

          return -1;

  }

}

 

class Test

{

         publicstatic void main(String[] args)

         {

                   Student[]stu = new Student[]{new Student(21321221,"lai"),newStudent(21325221,"chun"),new Student(21524226,"bin")};

                   Arrays.sort(stu);

                   for(inti =0;i<stu.length;i++)

                   {

                             System.out.println(stu[i]);

                   }

         }

}

 

基本數據類型

Integer 和 int轉換,基本數據類型和對應的類

把字符串轉換爲一個基本數據類型parseInt()靜態方法)

把一個字符串轉化爲Integer類,toString(int i)返回一個String

把一個字符串轉換爲Integer類, valueOf

其它封裝類也是如此,Boolean比較不同!

(基本數據類型,封裝類,String類型轉換)

只能建立一個只讀的封裝類,其值是不可改變的

 

 

Class文件

 

Point pt=new Point();

                   Classc1=pt.getClass();

                   System.out.println(c1.getName());

                  

                   try

                   {

                            Classc2=Class.forName("Point");//forName會拋出異常,必須去捕獲異常,否則會出現錯誤。

                            System.out.println(c2.getName());

                   }

                   catch(Exceptione)

                   {

                            e.printStackTrace();

                   }

                  

                   Classc3=Point.class;

                   System.out.println(c3.getName());

                  

                   Classc4=int.class;

                   System.out.println(c4.getName());

                  

                   Classc5=Integer.TYPE;

                   System.out.println(c5.getName());

                  

                   Classc6=Integer.class;

                   System.out.println(c6.getName());

      

      newInstance()調用缺省的構造方法,用來創建實例,

 

     調用反射API調用帶參數的構造函數來創建對象

動態加載一個類,動態調用一個方法!

反射API可以去反省,查看自身的信息!

有時候需要知道比Class類所提供的信息多得多的有關一個類型的信息。出於這種目的,可以使用程序包java.lang.reflect中的類,換句話說就是所說的反射API。這個類集提高了Class類的能力和有效性。
反射API支持一種名爲自省的行爲,這種行爲實際上使一個類描述自身。
反射API使對象具有反射自己和發現自身內容的能力。程序包java.lang.reflect定義了很多類,這些類總體上對一個對象作了完整的描述。

下面給出了這3種類表示類的構建塊:
(1)Constructor
類的每個實例都提供了關於一個類的一個構造函數的信息,並且爲調用程序提供了使用這個構造函數以創建一個對象的方式。
(2)Method
類的每個實例都提供了關於一個類的一種方法的信息,並且爲調用程序提供了調用這種方法的方式。這種方法可能是類的方法或者實例的方法,而且可能是抽象的。
(3)Field
類的每個實例都提供了關於一個類的一個域的信息,並且爲調用程序提供了獲得和設置這個域的值的方法。這個域可以是類變量或者實例變量。

 

每一個運行實例都有一個Runtime對象,是運行環境和程序之間的一個接口,通過getRuntime()可以獲得運行程序的一個Runtime實例,通過這個實例可以知道java虛擬機有多少內存可以用和總的內存有多少!

可以去調用exec來執行外部程序

Exec會返回一個Process類

 

設計模式(典型問題和問題的解決方案)

 

單例(Singleton)模式

   (1)一個類只有一個實例,而且自行實例化並向整個系統提供這個實例,這個類稱爲單例類。

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

 

模式應該就是對於某一類問題抽象出來的解決方法!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章