Pages

顯示具有 Java 標籤的文章。 顯示所有文章
顯示具有 Java 標籤的文章。 顯示所有文章

2011年2月19日 星期六

JaveSE Sample

圖片連續播放範例 - 使用 Applet
import java.awt.Image ;
import java.awt.Graphics ;
import java.awt.event.ActionEvent ;
import java.awt.event.ActionListener ;
import java.applet.Applet ;
import javax.swing.Timer ; // 利用 Timer 觸發事件

public class Animation extends Applet implements ActionListener {

Image[] imgArray ;
Timer timer ;
final int imgPerSecond = 10 ;
final int latency = 10000/imgPerSecond ; // 延遲時間單位為毫秒
int id = 0 ;

public void init() {
imgArray = new Image[imgPerSecond] ;
for( int i = 0 ; i < color="#666666">// 逐一載入影像檔案
imgArray[i] = getImage( getCodeBase(), i+".gif" ) ;
}

public void start() {
timer = new Timer( latency, this ) ; // 計時器時間到時會通知this(動畫測試)物件
timer.start(); // 啟動計時器
}

public void paint( Graphics g ) {
g.drawImage( imgArray[id], 0, 0, this ) ;
}

public void actionPerformed( ActionEvent event ) { // 計時器時間到時被呼叫的方法
id = ( id + 1 ) % imgPerSecond ;
repaint() ; // 此方法會清除繪圖區之後呼叫paint方法
}

}
使用時,在 Html 檔案中加入
其中 *.class 為要載入的 class 檔,寬高可自行設定。

Advantage of StringBuilder

在 J2SE 5.0 後新增的 API,在這之前處理字串是使用 java.lang 中的 String,不過 String 物件是不可修改內容【註一】,因此會造成每修改一下,就有新物件產生,如此在效能上會造成影響,以下是程式碼說明使用 String 和 StringBuilder 上的差異...

public class StringBuilderUsed {
public static void main( String[] args ) {
  String text = "" ;

long beginTime = System.currentTimeMillis() ;
for( int i = 0 ; i < 10000 ; ++i )
text = text + i ; // 使用 String 串接
long endTime = System.currentTimeMillis() ;

System.out.println( "執行時間:" + ( endTime - beginTime ) ) ;

  StringBuilder builder = new StringBuilder("") ;

beginTime = System.currentTimeMillis() ;
for( int i = 0 ; i < 10000 ; ++i )
builder.append( String.valueOf(i) ) ; // 使用 StringBuilder 串接
endTime = System.currentTimeMillis() ;

System.out.println( "執行時間:" + ( endTime - beginTime ) ) ;
}
}

執行後的結果:
使用 String 的執行時間:6187 ms
使用 StringBuilder 的執行時間:16 ms
【註一】乍看之下我們可以任意讀寫 String 物件中的內容,事實上,當你修改裡頭的內容,系統會新增一個 String 物件來擺放你修改後的值,而原先的 String
物件則會放置到 string pool,詳細參考 Java SE 6 技術手冊。
 
Blogger Templates