亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? java常見問題.txt

?? java面試題-外企軟件工程師面試題大全,歡迎想到外企工作的人作為參考
?? TXT
?? 第 1 頁 / 共 2 頁
字號:

myFORM = processActionFORM(myFORM); 

其中myFORM是一個對象, 它在傳遞到processActionFORM中去做處理的時候, 先用另外一個otherFORM去接了一下, 這個時候otherFORM也就指向myFORM的句柄, 而在外面再用myFORM去接返回值, myFORM這個時候其實還是指向原來的句柄。 雖然結果沒錯, 但這個時候有個問題就是同時有兩個別名指向同一個句柄。 執行其中任何一個別名的方法, 另一個別名的對象也隨著改變了。 所以上面的這個例子要盡量改寫為: 

private void processActionFORM(SomeActionFORM myFORM) { 



myFORM….. 

…; 



return otherFORM; 

} 

調用如下: 

processActionFORM(myFORM); 

特別在畫面之間傳遞參數的時候, 除非你能保證你的數據不被別人篡改, 否則你就得小心, 或者你需要重新clone一個對象傳過去, 然后取返回值。 

注: 如果在EJB的client與server之間傳遞參數, 則不存在句柄的傳遞, 數據在server端修改之后client端并不改變。 因為它們是通過網絡進行Object字節流傳輸的, 不存在句柄地址相同的條件。 你盡可放心的使用, 最后如果client端需要再使用這個新的Object, 則需要再回傳過去。 (EJB2.0 支持local interface, 這種情況下有可能就跟前面所說的句柄傳遞一樣了, 沒試過)。 



4.2 String的特殊性 
String在Java中被設計成安全的String, 對于String的任一個操作都是先重新生成一個String的拷貝, 然后對這個拷貝進行操作。 所以String在參數傳遞的時候可以看作是值傳遞。 即如果你需要修改一個String并返回修改后的String, 你得要再去接一下返回值。 如: 

String str = “This is a sample”; 

str = editStr(str); 

System.out.println(str); // “Here is a sample” 



private String editStr(String str) { 

String newStr = str. substring(4); 

newStr = “Here” + newStr; 



return newStr; 

} 

如果想用句柄傳遞, 可以使用String的內部操作使用的一個類StringBuffer, 對它的操作都是同一個對象上進行的, 所以效率也自然高一些。 上面的例子用StringBuffer改寫如下: 

StringBuffer str = new StringBuffer(“This is a sample”); 

editStr(str); 

System.out.println(str); // “Here is a sample” 



private void editStr(StringBuffer str) { 

str.replace(0, 4, “Here”); 

} 



5. 例外處理 
有些新手總是習慣于使用返回值來進行錯誤處理, 如果使用異常處理這種方法將會使程序結構更合理, 效率更高。 比如在Client端需要通過EJB來進行DB操作, Client端需要知道DB處理有沒有出錯就可以通過層層的向上拋Exception的方法, 一直到Client端需要處理的地方截住, 然后進行例外處理。 如: 

后臺DB處理: 

public static java.sql.Timestamp getDBSysdate() throws CSCWebException { 

Connection conn = null; 

Timestamp sysTime = null; 



try { 

conn = PJEJBSvrUtil.getWLPoolConnection(); 

sysTime = CommonDAO.getDBSysdate(conn); 

} catch (SQLException ce) { 

throw new CSCWebException(ce.getMessage()); 

} finally { 

try { 

if (conn != null) { 

conn.close(); 

} 

} catch (Exception e) { 

throw new CSCWebException(e.getMessage()); 

} 

} 



return sysTime; 

} 

在前臺: 

try { 

commonIntf.getDBSysdate(); 

} catch (CSCWebException cex) { 

cat.debug(“”, cex); 

return getExceptionForward(cex); 

} 

要防止違例被漏處理, 除非是你肯定不需要處理的, 提倡在遇到Exception的時候就要往上拋, 由最終調用處來進行處理, 當然也不能一概而論, 視情況而定。 比如我想例外在方法體內就要解決掉, 給出一個CSC中出現的bug。 

public boolean checkTelFORMat(String telNo) { 

boolean error = false; 



if ( telNo == null || telNo.equals("") ) { 

error = true; 

} else { 

if ( ejb.util.StringUtil.chkPhone(telNo) ) { 

error = false; 

} else { 

error = true; 

} 

} 



if (telNo.startsWith("184") || telNo.startsWith("186")) { 

if (telNo.length() == 3) { 

error = true; 

} 

} 



if ( error ) { 

ObjMngr.showError("MCSTC001E"); 

cmbTelNo.requestFocus(); 

return false; 

} else { 

return true; 

} 

} 

用了一個Flag來記住每次Check的結果, 然后在最后再出Error Dialog, 這是比較典型的C的寫法, 改寫如下: 

public boolean checkTelFORMat(String telNo) { 

try { 

if (telNo == null || telNo.equals("")) { 

throw new Exception(); 

} else { 

if (!ejb.util.StringUtil.chkPhone(telNo)) { 

throw new Exception(); 

} 

} 

if (telNo.startsWith("184") || telNo.startsWith("186")) { 

if (telNo.length() == 3) { 

throw new Exception(); 

} 

} 

} catch (Exception e) { 

ObjMngr.showError("MCSTC001E"); 

cmbTelNo.requestFocus(); 

return false; 

} 



return true; 

} 

使用了拋Exception的方法, 在方法的最后截住, 這樣一遇到Error就能馬上處理掉, 從效率上講也是最高的。 

6.數據庫操作的問題 
根據現有的開發經驗, 一般我們在SessionBean(或不用EJB的時候的Module Bean)中取到Connection然后調用專門操作數據庫(DAO)中的方法, 也就是在Bean中進行Connection的打開與關閉操作, 而在DAO中進行Statement和ResultSet操作, 一般在最后都需要進行關閉它們。 接上節的例子, 在CommonDAO里面有這樣的一個方法: 

public static java.sql.Timestamp getDBSysdate(Connection conn) 

throws CSCWebException { 

Statement stmt = null; 

ResultSet rs = null; 

Timestamp sysTime = null; 



try { 

stmt = conn.createStatement(); 

rs = stmt.executeQuery("SELECT SYSDATE FROM DUAL"); 

if (rs.next()) { 

sysTime = rs.getTimestamp("SYSDATE"); 

} 

} catch (SQLException ce) { 

throw new CSCWebException(ce.getMessage()); 

} catch (Exception e) { 

throw new CSCWebException(e.getMessage()); 

} finally { 

try { 

if (rs != null) { 

rs.close(); 

} 

if (stmt != null) { 

stmt.close(); 

} 

} catch (Exception e) { 

throw new CSCWebException(e.getMessage()); 

} 

} 



return sysTime; 

} 

在finally里面的語句總是會被執行到的, 所以即使上面拋出了SQLException也會去執行stmt與rs的close操作的。 



7. index越界 
index越界包括很多: 

Ø String的index 

String的index從0開始, 最大為它的字符長度。常用的為substring這個方法: 

String str = “This is a sample”; 

str.substring(5, 7); 返回 is; 



str.substring(15, 16) 或 str.substring(15); 都返回最后一個字符 e; 



str.substring(16, 17); 這個會拋java.lang.StringIndexOutOfBoundsException錯誤; 



Ø 數組下標 

數組下標也由0開始, 最大為長度-1, 例: 

int[] columnLen = new int[]{20, 30, 40, 30, 25, 50, 65, 100}; 

columnLen[0]為20; 

columnLen[7]為100; 

columnLen[8]會拋java.lang.ArrayIndexOutOfBoundsException錯誤。 



Ø Vector, ArrayList等Collection的size 

Vector與ArrayList同屬于List, 它們都是有序的集合體, 下標也都是從0開始, 最大也是長度-1, 跟數組不同的是, 它們的元素必須都是Object, 但可以為不同類型的對象, 不過在取出之后得要進行類型轉換。 而數組得要所有元素的類型相同。 ArrayList在構造之后, 并不存在元素的情況下, 如果調用set(index, Object)就會出錯。得要先進行add(Object)才行。 例: 

ArrayList list = new ArrayList(10); // 這個地方的10只是list的初始容量, 并不代表它具有了10個元素, 這個跟數組不同, 數組在這種情況下具有了10個初始值, 初始值跟具體的元素類型有關, 一般的對象為null; 

list.set(0, “First”); // 會拋java.lang.IndexOutOfBoundsException 

list.add(“First”); 

list.set(0, “new First”); // 正確, 因為位置0已經存在元素 



8.其它 
具體到每個項目, 不同的API使用都還有可能遇到一些共通的問題。 需要在項目開始的時候進行必要的培訓, 往往給出一個好的sample會事半功倍。 

還用一些問題在此不再詳細描述: 

ü 大小寫問題(String.equals()與String.equalsIgnoreCase(), 變量名等) 

ü 括號匹配問題 

ü 。。。 



9.有待討論的問題 
9.1 方法返回地點 
private int getStatus( String sFlag ){ 

if (CodeBook.STATUS_OK_NAME.equals( sFlag )) { 
return CodeBook.STATUS_OK_value; 
} else if (CodeBook.STATUS_OK1_NAME.equals( sFlag )) { 
return CodeBook.STATUS_OK1_value; 
} else if (CodeBook.STATUS_NG_NAME.equals( sFlag )) { 
return CodeBook.STATUS_NG_value; 
} 


return CodeBook.STATUS_NG_value; 
} 


private int getStatus(String sFlag) { 

int iStatus = CodeBook.STATUS_NG_value; 



if (CodeBook.STATUS_OK_NAME.equals(sFlag)) { 

iStatus = CodeBook.STATUS_OK_value; 

} else if (CodeBook.STATUS_OK1_NAME.equals(sFlag)) { 

iStatus = CodeBook.STATUS_OK1_value; 

} else if (CodeBook.STATUS_NG_NAME.equals(sFlag)) { 

iStatus = CodeBook.STATUS_NG_value; 

} 



return iStatus; 

} 



9.2 變量聲明點 
例: 

for (int i = 0; i < 10; i++) { 

String sTmp = String.valueOf(i); 

... 

} 


String sTmp = null; 

for (int i = 0; i < 10; i++) { 

sTmp = String.valueOf(i); 

... 

} 

  
 

--------------------------------------------------------------------------------
 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩国产综合一区二区三区 | 久久99精品久久只有精品| 91精品国产综合久久小美女| 色天天综合色天天久久| 国产精品自在在线| 免费成人av资源网| 麻豆成人久久精品二区三区红| 亚洲嫩草精品久久| 亚洲色图欧美偷拍| 欧美国产丝袜视频| 亚洲欧洲精品成人久久奇米网| 国产亚洲精品免费| 日韩一区二区三区在线| 欧美日韩在线电影| 欧美不卡在线视频| 欧美sm极限捆绑bd| 久久先锋影音av| 中文字幕乱码亚洲精品一区| 亚洲少妇30p| 午夜影院久久久| 蜜臀99久久精品久久久久久软件| 国产在线精品不卡| 成人午夜电影网站| 91亚洲精品乱码久久久久久蜜桃| 欧美又粗又大又爽| 精品福利一区二区三区| 欧美激情一区二区三区不卡| 亚洲人精品午夜| 日本不卡中文字幕| 国产精品1024| 欧美精品色一区二区三区| 欧美一区二区三区男人的天堂| 日韩欧美一级在线播放| 国产日韩欧美综合一区| 亚洲午夜久久久久| 国产伦精品一区二区三区在线观看| 国产成人精品亚洲日本在线桃色| 色欧美片视频在线观看在线视频| 欧美午夜电影网| 日韩一区二区免费在线观看| 国产精品午夜免费| 亚洲二区视频在线| 91视频国产观看| 久久亚洲精华国产精华液| 亚洲精品一二三| 麻豆精品在线观看| 国产电影一区在线| 日韩欧美国产电影| 亚洲国产精品久久久久秋霞影院 | 亚洲成人综合视频| 国产精一区二区三区| 欧美高清性hdvideosex| 国产午夜久久久久| 老司机免费视频一区二区三区| 国产精品456露脸| 在线视频你懂得一区| 中文字幕精品综合| 国产精品一二三在| 欧美mv和日韩mv的网站| 婷婷丁香久久五月婷婷| 99re在线精品| 欧美激情综合五月色丁香小说| 免费成人av资源网| 欧美一区二区黄色| 婷婷综合另类小说色区| 日本伦理一区二区| 国产精品美女视频| 成人国产精品免费网站| 国产日韩欧美一区二区三区乱码| 免费看欧美美女黄的网站| 欧美少妇性性性| 亚洲综合色区另类av| 91精品1区2区| 一区二区国产盗摄色噜噜| 国产精一区二区三区| 91麻豆精品国产自产在线| 亚洲www啪成人一区二区麻豆| 在线亚洲一区二区| 亚洲一区视频在线观看视频| 色狠狠综合天天综合综合| 亚洲男女毛片无遮挡| 91麻豆.com| 亚洲图片欧美色图| 欧美一级久久久| 久久福利资源站| 久久精品一区二区三区不卡| 国产麻豆精品95视频| 国产夜色精品一区二区av| 不卡欧美aaaaa| 一区二区三区四区不卡视频| 欧美三级欧美一级| 七七婷婷婷婷精品国产| 26uuu精品一区二区三区四区在线| 国产毛片精品视频| 国产午夜精品美女毛片视频| 国产成人亚洲综合色影视| 国产精品久久久久久亚洲毛片| 成人黄色软件下载| 亚洲综合999| 欧美一区二区性放荡片| 国产一区亚洲一区| 亚洲区小说区图片区qvod| 欧美精品v国产精品v日韩精品| 黑人巨大精品欧美黑白配亚洲| 日本一二三不卡| 欧美日韩黄视频| 加勒比av一区二区| 一区二区在线电影| 日韩欧美一级二级三级| 国产精品91一区二区| 亚洲麻豆国产自偷在线| 欧美tk—视频vk| 色哦色哦哦色天天综合| 国模一区二区三区白浆| 亚洲丝袜美腿综合| 日韩丝袜美女视频| av影院午夜一区| 精品一区二区免费在线观看| 亚洲三级在线免费| 精品国产乱码久久久久久免费| 91丨九色丨黑人外教| 国模娜娜一区二区三区| 一区二区激情小说| 国产网站一区二区三区| 91精品欧美一区二区三区综合在| 成人精品电影在线观看| 男女视频一区二区| 亚洲黄色在线视频| 亚洲欧洲日韩在线| 精品国产精品网麻豆系列| 欧美日韩在线电影| 91麻豆国产香蕉久久精品| 国产激情一区二区三区| 日韩国产精品久久久久久亚洲| 亚洲猫色日本管| 国产精品视频麻豆| 久久亚洲一区二区三区四区| 欧美视频在线观看一区二区| 波多野结衣亚洲| 精品一区二区三区免费毛片爱| 亚洲国产精品一区二区www| 成人欧美一区二区三区黑人麻豆| 久久久久久久久伊人| 91精品国产91综合久久蜜臀| 91九色02白丝porn| 在线精品视频免费观看| 色综合一区二区三区| av中文字幕不卡| 99精品国产一区二区三区不卡| 国产精品一区二区无线| 国产在线精品不卡| 国产成人av电影在线观看| 国产永久精品大片wwwapp| 国模套图日韩精品一区二区| 精品制服美女丁香| 精品亚洲aⅴ乱码一区二区三区| 奇米精品一区二区三区四区| 日韩激情在线观看| 久久9热精品视频| 激情图片小说一区| 高清不卡一二三区| 成人app软件下载大全免费| 99视频在线精品| 色欧美乱欧美15图片| 欧美色综合久久| 欧美成人女星排行榜| 久久午夜羞羞影院免费观看| 久久久精品综合| 成人欧美一区二区三区视频网页| 亚洲欧美另类图片小说| 亚洲一区二区三区四区五区中文 | 国产精品国产自产拍高清av王其| 精品国产一区二区三区忘忧草| 日韩欧美中文一区| 久久久精品国产99久久精品芒果| 久久久亚洲高清| 椎名由奈av一区二区三区| 中文字幕在线不卡| 亚洲第一久久影院| 国产一区二区三区在线观看免费| 不卡的av电影| 欧美人与禽zozo性伦| 欧美电影免费观看高清完整版| 国产亚洲欧美激情| 一区二区欧美国产| 麻豆91小视频| 91视频在线观看| 精品少妇一区二区三区日产乱码| 亚洲国产精品传媒在线观看| 亚洲一区二区三区四区的| 国产精品12区| 欧美精品乱码久久久久久按摩| 国产欧美精品一区二区色综合| 亚洲激情校园春色| 韩国一区二区三区| 欧美三级日本三级少妇99| 中文字幕av免费专区久久| 五月婷婷另类国产| 成人丝袜18视频在线观看| 欧美一级欧美三级在线观看|