程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java 5.0的特性

Java 5.0的特性

編輯:關於JAVA

自動裝箱/拆箱 (Auto-Boxing/Unboxing)

沒有自動裝箱/拆箱:

int int1 = 1;
Integer integer2 = new Integer(int1);
int int3 = integer2.intValue();

有自動裝箱/拆箱:

int int1 = 1;
Integer integer2 = int1;   // 自動裝箱
int int3 = integer2;     // 自動拆箱

泛型 (Generic Types)

泛型就像是C++的模板。原有的Collection API加上泛型支援後,增加對型別的檢查,減 少程式錯誤的機會。

沒有泛型:

HashMap hm = new HashMap();
int i=1;
String tt="test";
hm.put(new Integer(i), tt);

使用Generic:

HashMap <Integer, String>hm = new HashMap<Integer, String> ();
int i=1;
String tt = "test";
hm.put(i, tt);   // 在這裏對int自動裝箱成Integer,也使用了參數的型別檢查

自動裝箱的新功能,可能是從C#語言身上學習來的,Java 已經越來越像C#。然而Java對 自動裝箱/拆箱的支援,僅是利用編譯器實現,在Java Bytecode 中,並無自動裝箱/拆箱的 操作碼 (opcode)。

注釋 (Annotation)

Annotation全名是Program Annotation Facility ,是Java SE 5.0的新功能。Java 的 Annotation 類似於 .NET 的屬性 (Attribute)。Java 的注釋是一種接口 (interface),繼 承自 java.lang.annotation.Annotation。Class File 則貼上 ACC_ANNOTATION 標簽。

// JDK 1.4
/**
  * @todo to be implemented
  **/
void gimmeSomeLoving() {
  throw new Exception("not implemented");
}

// JDK 1.5
@todo void gimmeSomeLoving() {
  throw new Exception("not implemented");
}

枚舉類型 (enum)

枚舉類型也是J2SE 5.0的新功能。過去 Java 認為 enum 的關鍵字是不必要的功能,因為 用 public static int field 就可以取代 enum,因此過去一直不用。J2SE 5.0中的 class 如果是 enum,在 class file 中會被貼上一個 ACC_ENUM 標簽。

// JDK 1.4
class JavaTech {
     public static final int J2ME = 1;
     public static final int J2SE = 2;
     public static final int J2EE = 3;
}

// JDK 1.5
public enum NewJavaTech {
     J2ME, J2SE, J2EE
}

輸入輸出

試試用位於 java.io 包 (package) 內的BufferedReader。請緊記要 import java.io.*; 。尾部"*"是指示要 import 所有位於 java.io 內的類,。

import java.io.*;
public class TestRead{
   public static void main(String[] args) throws IOException{
     BufferedReader bufread = new BufferedReader(System.in);
     String str;
     System.out.print("請輸入一句字串");
     str = bufread.readLine();
     System.out.println(str);
   }
}

程式碼解說: import java.io.* 是把整個包“打開”,那麼你便可以承繼該包的類,用 內裡的類創建一個物件。其實 java.io.* 是默認 import 的,不過 Eclipse 會要求 import java.io 所以功夫不可小!

public class TestRead 是宣告一個“公開”的 class(類別),而名字是TestRead 。

public static void main(String[] args) 是一個主程式。雖然是 Method ,但 main method 對於 Java 執行器來說是第一個執行程式的地方,同樣離開了 main method 就等如 離開了程式。main method 的宣告式是要背的,當然是有解,不過暫且不說。

BufferedReader bufread = new BufferedReader(System.in) 在此創建一個以 BufferedReader 為藍圖的物件 bufread ,bufread名字是任你定的。詳細來說是第一個 BufferedReader 是宣告 bufread 是一個會“存儲”一個BufferedReader類的物件。new BufferedReader(System.in) 是指創建一個 BufferedReader 的物件。由於BufferedReader 需要一個輸入流,因此我們指定了 System.in 給 BufferedReader。

應用程序開發接口

在Java語言中,應用程序接口(API)化身成類,並且分組成為包。每個包中包含有相關 的接口和類。對於不同的平台,Java提供了不同版本的包。

API的設定由升陽公司和其他公司通過JCP(Java社群程序)決定。任何公司和個人都可以 參與這個工程,對API進行設計。

2004年,IBM和BEA公司准備聯合對官方的Java開源軟件工程進行支持,但是2005年初,升 陽公司拒絕了這個支持。

Hello World

下面這個程序顯示“Hello, world!”然後結束運行:

public class HelloWorld {
  public static void main(String[] args) {
   System.out.println("Hello, world!");
  }
}

國際化

Java語言嚴格區分字節和字符。字符的存儲格式為UCS-2,從Java 5開始支持UTF-16字符 。Java的程序遂可以使用Unicode字符進行書寫。

下面就是一個合法的Java程序,裡面包含了中文字符作為類的名稱而不是字符串,這個程 序可以在編譯器中運行通過。

public class 哈囉世界 {
  private string 文本 = "哈囉世界";
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved