2008年7月12日 星期六

JAVA 雜

系統變數
使用指令java -Dxxxx.xxxx = yyyyy
可把xxxx.xxxx這個系統變數加進去,其值為yyyyy
可用System.getProperty("xxxx.xxxx")
或System.getProperties().getProperty("xxxx.xxxx")
來取值

println一個object其實是call它的toString()

DateFormate:
Date date = new Date()用來產生Date物件
Date(int a)則可以產生自1970年過了a微秒後的Date物件
DateFormat shortFormat =
DateFormat.getDateTimeInstance(
DateFormat.SHORT, DateFormat.SHORT);
System.out.println(shortFormat.format(date));
DateFormat則用來將date轉為文字
也可用DateFormat的parse()將String轉為Date
DateFormat.getDateInstance(DateFormat.LONG, Locale.TAIWAN).parse("2005年7月22日");

String、StringBuffer、 StringBuilder
String是immutable的
沒有用new來allocate的話,兩個相同內容的字串會因為有維護string pool而指到同一個object
不過"a"+"b"則不會等於"ab"
*有+ 和 concat來合併字串,不過要記得assign給新的ref
String長度用length()來查 容積是capacity()
P.S. array長度則是用length來查
collection的大小是size() 容積是capacity()
StringBuilder用append來合併字串
還提供String substring()來傳回子字串
*因為是return String,所以也一定要有ref接
StringBuffer是thread-safe版的StringBuilder

Garbege collection
建議VM進行GC的方法
System.gc()
Runtime.getRuntime().gc()

邏輯運算有分short circuit(|| &&) 與一般的版本(| & )
short circuit先做前面,若已能確定,就不會再做後面
一般的版本則會依序做前面後面

*Java的Function call是call by value
傳進去後的改變並不會影響Function外
所以傳ref進去再new會有問題

final的變數一定要手動給定初始值,之後就不能再改了

沒有留言: