[JAVA]JAVA物件導向引言:類別與物件的基本概念(轉載)
[Java]1-物件導向大補丸 Class 類別與巢狀類別(內部類別)
[Java]2-物件導向大補丸 static/instance/final、this/super、繼承(Overload/Override)/多型
[Java]3-物件導向大補丸 Interface、Abstract、建構子
JAVA進階
排序 &資料儲存 &處理
HashMap
Survey1:符碼記憶 - HashMap的應用及資料排序
Survey2:技术天地 -HashMap 使用小结
ArrayList
CharArray
Java基本輸出與檔案管理
Java加密應用
Socket / RMI
JDBC:
佛祖球球-[Java]JDBC access MySQL
Java Gossip: 連接資料庫
Lesson: JDBC Introduction(英文)
UI(Swing 使用Netbean建構):
IDE:
Android應用
神的領域Design Patterns (設計模式)
史帝芬心得筆記 -- Design Patterns (設計模式)
程式開發前注意事項:
1.反省寫法並改變。
2.不要養成在函式開頭宣告並初始化所有變數。這就是會導致bug的元兇。
因為變數在開頭就被初始化,這樣在真正要用到它的時候就能直接拿來用,但是如果這個變數需要被歸零(也就是重新初始化)並在迴圈中重複利用,就很容易會忘記要再多做這一步。(在多層迴圈中更容易發生),所以養成好的coding style,改變宣告變數的習慣。一開始就在迴圈內宣告並給定變數的初始值,而不是在函式開頭宣告,就不會有這種bug跑出來了。
因為變數在開頭就被初始化,這樣在真正要用到它的時候就能直接拿來用,但是如果這個變數需要被歸零(也就是重新初始化)並在迴圈中重複利用,就很容易會忘記要再多做這一步。(在多層迴圈中更容易發生),所以養成好的coding style,改變宣告變數的習慣。一開始就在迴圈內宣告並給定變數的初始值,而不是在函式開頭宣告,就不會有這種bug跑出來了。
3.永遠在變數需要被用到的最內層區塊才宣告並初始化該變數。
4.好的變數命名規則,不要將整個程式塞在main裡。
-----------------------------------------------------------------------
初階演算法
- HashMap:
map.put("justin", "justin's message!!");
map.put("momor", "momor's message!!");
map.put("caterpillar", "caterpillar's message!!");
Collection collection = map.values();
Iterator iterator = collection.iterator();
while(iterator.hasNext()) {
System.out.println(iterator.next());
}
在這邊由於HaskMap有自己的排序方法,所以導出的資料順序會和存進的先後順序不同,若想保留原本的順序可使用
Map map = new LinkedHashMap ();
------------------------------------------------------------------ 檔案讀寫類
XML
讀取root的值(沒有子節點,只有root帶值):root.getElementsByTagName("root的tag值").item(0).getFirstChild().getNodeValue();
System.arraycopy:Bytecode 合併
System.arraycopy(Object src,int srcPos,Object dest,int destPos,int length)
src:源数组; srcPos:源数组要复制的起始位置;
dest:目的数组; destPos:目的数组放置的起始位置; length:複製的長度。
注意:src and dest都必须是同类型或者可以进行转换类型的数组.
此函数可實現自我複製如:
int[] fun ={0,1,2,3,4,5,6};
System.arraycopy(fun,0,fun,3,3);
結果為:{0,1,2,0,1,2,6};
实现过程是这样的,先生成一个长度为length的临时数组,将fun数组中srcPos
到srcPos+length-1之间的数据拷贝到临时数组中,再执行System.arraycopy(临时数组,0,fun,3,3).
------------------------------------------------------------------ 資料型態轉換
如何將字串 String 轉換成整數 int?
A. 有兩個方法:
1). int i = Integer.parseInt([String]); 或
i = Integer.parseInt([String],[int radix]);
2). int i = Integer.valueOf(my_str).intValue();
注: 字串轉成 Double, Float, Long 的方法大同小異.
如何將整數 int 轉換成字串 String ?
A. 有三種方法:
1.) String s = String.valueOf(i);
2.) String s = Integer.toString(i);
3.) String s = "" + i;
注: Double, Float, Long 轉成字串的方法大同小異.
[Java&Android]程式語言中2,8,10,16,32進制轉換
字串過濾與處理編排
Java 產生不重覆亂數 轉載
//比對值 忽略大小寫
a.equalsIgnoreCase(b);//比對字串內容 忽略大小寫
a.equals(b); //比對字串內容
.endWith("ed");//篩選字串字尾為ed的字串
======================
replace、replaceAll、replaceFirst字串取代
Survey:Java replaceAll的用法
replaceAll (要被取代的字串,要取代的字串) 取代全部找到的”要被取代字串”
replaceFirst (要被取代的字串,要取代的字串) 取代第一個找到的”要被取代字串”
其中replaceAll函數可以使用正規表示式來做整批有規則性的取代
replace();
===========================
.trim();//去掉字串左右兩邊的空白
length()可以取回字串的長度
split字串切割
.split(";");//split(指定符號) ,可依指定符號把字串分開成陣列
sort();
================================
IndexOf應用
str.IndexOf("abc");
還有另外一種
if(str.indexOf(":=")!= -1) //-1表示找不到,換句話說就是不為-1就是代表有找到這個字串
判斷str字串中是否包含:= 的字串 再進去做.
另一用法:
OK = Long.parseLong(str.substring(str.indexOf("c=")+2, str.length()));
//將c=後的字串 存到OK變數裡
字串比對
常用的比對以 intern() 取代 equals()String物件呼叫intern()時,會從JVM的string Pool(或是Hashtable)裡尋找是否有與此字串物件相等的字串,有則回傳,無則先加入至string pool再回傳reference詳細的情節可參考Java API (intern()回傳的是 "a canonical representation for the string object",關於canonical object,可參Oreilly的Java Performance Tuning 2nd,第4章)重點是兩個字串作比對時,可以直接從String pool裡作比對(canonicalized mapping),不需像equals()是一一比對char,且保證結果與equals()相同。上述的例子可改成:a.intern() == b.intern()
以 intern()來比對字串,可以節省使用equals()時重覆產生新String物件的成本與一一作char比對的成本,但要考慮JVM記憶體大小的問題。
JVM將記憶體使用分為三大類(generation): (1)young:存放短暫存在的物件,像是loc al variable (2)tenured:需要存在更長一點時間的物件 (3) permanent generation:永續存在的,像是ClassLoader載入的classes,intern的String,string pool即在這區塊中維持。若是載入的Class過多,或是intern的字串過多,可能會造成Error,系統會抛出此Exception:java.lang.OutOfMemoryError: PermGen space failure,這時可能就要下參數調整JVM的記憶體大小了,例:-XX:MaxPermSize=100m’http://www.thesorensens.org/?p=14
因此使用intern()或是equals(),要看情形而定,像是大量重覆出現、固定的字串比對,就可以用intern()。像是SAX的實作中,也有用到intern()。預設值中,parser對於XML中的元素名稱、屬性名稱、namespace URI等,都使用intern()。string-interning 是standard SAX2 features 之一http://www.saxproject.org/apidoc/org/xml/sax/package-summary.html#package_description
====================================================
CharAt取得指定字元(轉載)
CharAt(位置)可取出指定位置的字元,中文算法與英文相同
String.format字串格式化
String.format是一個靜態函數,可以直接使用,將字串依設定的位置或格式回傳出來。
如需顯示三位數的字串數字,前方補零,則可利用以下方法:
基本型態物件.parse基本型態 字串轉換成基本型態
利用基本型態物件的函數parse,可以把字轉換成基本型態,如果無法轉換時會有Exception產生
Android/Java_將字串去掉科學記號
語法疑難置放區
msg.what = Clear HighLight;
.what http://answers.yahoo.com/question/index?qid=20110715193231AA0JcWu
Log.d(tag, "command:" + command);
instanceof
mType = (str[pos].trim().equalsIgnoreCase("STOP")) ? _CallType.Stop
: _CallType.Lady;
if(m_completed_num.indexOf(":=")!= -1)
.what http://answers.yahoo.com/question/index?qid=20110715193231AA0JcWu
Log.d(tag, "command:" + command);
instanceof
mType = (str[pos].trim().equalsIgnoreCase("STOP")) ? _CallType.Stop
: _CallType.Lady;
if(m_completed_num.indexOf(":=")!= -1)
沒有留言:
張貼留言