亚洲第一综合天堂另类专,午夜影视日本亚洲欧洲精品一区,综合亚洲伊人午夜网http://www.tkk7.com/rongxh7/category/39850.html相信自己的人生有無限可能,把握每一個機會,全力以赴……zh-cnMon, 19 Apr 2010 21:26:17 GMTMon, 19 Apr 2010 21:26:17 GMT60Java可變參數方法重載時要注意的幾個問題http://www.tkk7.com/rongxh7/archive/2010/04/18/318698.html心夢帆影心夢帆影Sun, 18 Apr 2010 15:59:00 GMThttp://www.tkk7.com/rongxh7/archive/2010/04/18/318698.htmlhttp://www.tkk7.com/rongxh7/comments/318698.htmlhttp://www.tkk7.com/rongxh7/archive/2010/04/18/318698.html#Feedback0http://www.tkk7.com/rongxh7/comments/commentRss/318698.htmlhttp://www.tkk7.com/rongxh7/services/trackbacks/318698.htmlJDK1.5引進了方法的可變參數,受到許多開發人員的青睞。有了這種機制,我們可以寫出類似于JavaScript的arguments那樣的帶任意多個參數的方法。Java的可變參數,可用于普通方法上,也可以用于構造方法上,大大增大了我們所寫方法的適用范圍。


然而,使用可變參數時,要注意幾個問題:

 

1) 可變參數方法與數組參數方法重載時

 

public class MethodParams{
//帶可變參數的方法
public void hello(String ...params) {
System.out.println("執行帶可變參數的方法,參數個數為:" + params.length);
}
//帶數組參數的方法
public void hello(String[] params) {
System.out.println("執行帶數組參數的方法,數組長度為:" + params.length);
}
}

我們寫個測試代碼運行一下看看結果如何:

	MethodParams mp = new MethodParams();
mp.hello("AAA","BBB","CCC");

  編譯時報錯:

MethodParams.java:7: 無法在 MethodParams 中同時聲明 hello(java.lang.String[]) 和
hello(java.lang.String...)
public void hello(String[] params) {
^
1 錯誤

結論: JDK不允許存在, 帶可變參數的方法和帶數組參數的方法在同一類中重載。

可變參數==數組參數? 在帶可變參數的方法體時,讀取可變參數列表時,就是以數組的方式來讀?。?/font>

帶可變參數的方法可以傳入一個數組參數,但帶數組參數的方法卻不能傳入可變參數。

 

 

2) 可變參數方法與可變參數方法重載時

	//帶可變參數的方法
public void hello(String ...params) {
System.out.println("執行帶可變參數的方法,參數個數為:" + params.length);
}
//帶固定參數和可變參數
public void hello(String param1, String ...params) {
System.out.println("執行帶固定參數和可變參數的方法,參數個數為:" + params.length);
}

  測試代碼跟上例中一樣,編譯時報錯:

MethodParams.java:18: 對 hello 的引用不明確,MethodParams 中的 方法 hello(java.l
ang.String...) 和 MethodParams 中的 方法 hello(java.lang.String,java.lang.String
...) 都匹配
mp.hello("AAA","BBB","CCC");
^
1 錯誤

 結論:JDK不允許存在,帶相同參數類型列表(Type List)的參數列表的方法在同一類中重載。

 

 

3)可變參數方法與無參數方法重載時

	//帶可變參數的方法
public void hello(String ...params) {
System.out.println("執行帶可變參數的方法,參數個數為:" + params.length);
}
//不帶參數的方法
public void hello() {
System.out.println("執行不帶參數的方法");
}

我們都知道,可變參數即可帶0個或者多個參數,如果帶0個參數即不帶參數時,JDK會怎么處理呢?

那我們就以執行"mp.hello()"來測試一下。編譯通過,運行正常,調用的還帶參數的hello()方法。

結論:當可變參數方法與不帶參數的方法重載時,JDK默認調用的是無參數的方法。若類中沒有定義無參數的方法,則會調用可變參數的方法。



心夢帆影 2010-04-18 23:59 發表評論
]]>
Java的代理模式(通過公共接口實現)http://www.tkk7.com/rongxh7/archive/2010/03/31/317070.html心夢帆影心夢帆影Wed, 31 Mar 2010 08:00:00 GMThttp://www.tkk7.com/rongxh7/archive/2010/03/31/317070.htmlhttp://www.tkk7.com/rongxh7/comments/317070.htmlhttp://www.tkk7.com/rongxh7/archive/2010/03/31/317070.html#Feedback1http://www.tkk7.com/rongxh7/comments/commentRss/317070.htmlhttp://www.tkk7.com/rongxh7/services/trackbacks/317070.html
/**
 * 代理子類和目標子類的公共接口
 * 
@author rongxinhua
 *
 
*/
public interface MyInterface {
    
    
public void doOperation();

}

/**
 * 目標子類
 * 
@author rongxinhua
 *
 
*/
public class RealClass implements MyInterface {

    
/**
     * 我們要執行的目標方法
     
*/
    @Override
    
public void doOperation() {
        System.out.println(
"doOperation");
    }

}

而在沒有使用代理模式的情況下,我們是這樣執行目標方法的:
        RealClass realObj = new RealClass();
        realObj.doOperation();    
//調用目標方法
打印時輸出:
doOperation


而我們要加入額外的處理的話,就可以使用代理類了:
/**
 * 代理子類
 * 
@author rongxinhua
 *
 
*/
public class ProxyClass implements MyInterface {

    
private MyInterface realObj;    //目標子類對象
    
    
public ProxyClass(MyInterface realObj) {
        
this.realObj = realObj;
    }
    
    
/**
     * 調用目標子類的方法,并在其中加入了前置處理和后置處理
     
*/
    @Override
    
public void doOperation() {
        doBefore();
        realObj.doOperation();
        doAfter();
    }
    
    
/**
     * 目標方法調用前的相關處理
     
*/
    
private void doBefore() {
        System.out.println(
"doBefore");
    }
    
    
/**
     * 目標方法調用后的相關處理
     
*/
    
private void doAfter() {
        System.out.println(
"doAfter");
    }

}

有了代理類,我們可以這樣執行目標方法:
        ProxyClass proxyObj = new ProxyClass(new RealClass());
        proxyObj.doOperation();    
//通過代理對象調用doOperation方法

打印時輸出:
doBefore
doOperation
doAfter

本文只是代理模式的在Java中的簡單使用,而代理模式與Java反射機制的整合,為Java組件開發增加了強大的生命力,有興趣的朋友可看我另一個博客中的文章:探討代理模式與Java反射機制的應用。



心夢帆影 2010-03-31 16:00 發表評論
]]>
舍友筆試中的一道算法題(我的解法)http://www.tkk7.com/rongxh7/archive/2010/03/23/316228.html心夢帆影心夢帆影Mon, 22 Mar 2010 18:04:00 GMThttp://www.tkk7.com/rongxh7/archive/2010/03/23/316228.htmlhttp://www.tkk7.com/rongxh7/comments/316228.htmlhttp://www.tkk7.com/rongxh7/archive/2010/03/23/316228.html#Feedback8http://www.tkk7.com/rongxh7/comments/commentRss/316228.htmlhttp://www.tkk7.com/rongxh7/services/trackbacks/316228.html
題目大意:輸入一個字符串,顯示出字符串的所有排列。例如:輸入"abc",就得輸出"abc"、"acb"、"bac"、"bca"、"cab"、"cba" 所有可能的序列。

頗有意義的一道題,我決定用Java語言來寫一寫。代碼如下:
import java.util.Arrays;
public class CharList {

    
//遍歷所有可能的排列結果
    public static void traversal(char[] chss, int index){
        
//for循環,從index位置開始向前(向右), index位置的數與i位置的數互換
        for(int i = index; i < chss.length; i ++) {
            
char[] chs = Arrays.copyOf(chss, chss.length);    //Copy出新數組(為了修改其值時互不影響)
            char temp = chs[index];
            chs[index] 
= chs[i];
            chs[i] 
= temp;
            
if(index == chs.length-1) {    //到了字符串末, 輸出結果
                System.out.println(new String(chs));
                
break;    //跟出此次循環, 此traversal方法執行完畢,跳回上一級循環(在上一個方法體中)
            }
            traversal(chs, index
+1);        //遞歸
        }
    }

    
//Test
    public static void main(String[] args) {
        String str 
= "abcd";
        
char[] chs = str.toCharArray();    //轉成字符數組
        traversal(chs, 0);
    }

}

程序執行,輸出結果為:
abcd
abdc
acbd
acdb
adcb
adbc
bacd
badc
bcad
bcda
bdca
bdac
cbad
cbda
cabd
cadb
cdab
cdba
dbca
dbac
dcba
dcab
dacb
dabc


心夢帆影 2010-03-23 02:04 發表評論
]]>
18位身份證驗證小組件idchecker發布http://www.tkk7.com/rongxh7/archive/2010/01/03/308097.html心夢帆影心夢帆影Sun, 03 Jan 2010 10:43:00 GMThttp://www.tkk7.com/rongxh7/archive/2010/01/03/308097.htmlhttp://www.tkk7.com/rongxh7/comments/308097.htmlhttp://www.tkk7.com/rongxh7/archive/2010/01/03/308097.html#Feedback1http://www.tkk7.com/rongxh7/comments/commentRss/308097.htmlhttp://www.tkk7.com/rongxh7/services/trackbacks/308097.html下載地址:http://codeshop.googlecode.com/files/idchecker.zip

提供給外部調用的cn.idchecker.check.Checker類的相關方法如下表:

方法 方法作用 參數及返回值
Checker(String num) 構造方法 參數num為18位身份證號碼的字符串
boolean checkLength() 驗證身份證長度是否正確 長度為18,則返回true,否則返回false
boolean checkBirth() 驗證出生生日碼是否合法 合法則返回true,否則返回false
boolean checkAddr() 驗證地址碼是否存在 存在則返回true,否則返回false
boolean checkCheckCode() 計算校驗碼是否正確 正確則返回true,否則返回false
boolean check() 總的身份證驗證,驗證順序:長度 -> 生日 -> 最后一位校驗碼 -> 地址 若遇到有一項目不合法即返回false,所有驗證通過才返回true。驗證后,可通過調用getErrorMsg()方法獲取錯誤信息
boolean checkAll() 總的身份證驗證,驗證項目包括長度、地址、生日、最后一位校驗碼 身份證合法則返回true,否則false。驗證后,可調用getErrorMsgs()方法獲取錯誤信息集合
String getBirth() 獲取出生年月日 返回“2010年01月12日”格式的生日字符串通串
String getAddr() 獲取公民籍貫 返回籍貫字符串("xx省xx市xx縣”)
String getSex() 獲取性別 返回“男”或“女”
String getErrorMsg() 獲取錯誤信息 返回錯誤信息字符串
public Set<String> getErrorMsgs() 獲取錯誤信息集合 返回錯誤信息集合

用法舉例 1 :解壓縮“idchecker.zip”,將其目錄下的“idchecker.jar” 包引進Java Project中,以下是測試程序:

public class TestChecker { 

    
public static void main(String[] args) {
        Checker checker 
= new Checker("44010619860710145X");
        System.out.println(
"出生年月日  : " + checker.getBirth());
        System.out.println(
"性別  :" + checker.getSex());
        System.out.println(
"居民地址  : " + checker.getAddr());
        System.out.println(
"身份證號碼是否合法 : " + checker.check() + "  " + checker.getErrorMsg());
        checker.checkAll();    
        
for(String msg : checker.getErrorMsgs()) {
            System.out.print(msg 
+ " | ");
        }
    } 

}


運行結果:

出生年月日  : 1986年07月10日
性別  :男
居民地址  : 廣東省廣州市天河區 
身份證號碼是否合法 : true  


用法舉例 2 :將“idchecker.jar” 包引進到Web Project的lib目錄下,以下是測試程序:

<?xml version="1.0" encoding="UTF-8" ?>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding
="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>測試idchecker組件</title>
</head>
<body>
<h1>身份證驗證</h1>
<%
    
String id = request.getParameter("ID");
    
if(id != null && !"".equals(id.trim())){
        cn.idchecker.check.Checker checker 
= new cn.idchecker.check.Checker(id);
        
if(checker.check()) {
            out.print(checker.getSex() 
+ "<br/>");
            out.print(checker.getBirth() 
+ "<br/>");
            out.print(checker.getAddr());
        } 
else {
            out.print(
"身份證不合法!" + "<br/>");
            out.print(checker.getErrorMsg());
        }
    } 

%>
<form action="input.jsp" method="post">
    身份證號碼 :
<input name="ID" type="text" value="<%=id %>"/>&nbsp;&nbsp;
    
<input type="submit" value="驗證"/>
</form>
</body>
</html>
 


運行結果:

 image image



心夢帆影 2010-01-03 18:43 發表評論
]]>
原創一道Java筆試面試題考考大家http://www.tkk7.com/rongxh7/archive/2009/11/28/303990.html心夢帆影心夢帆影Fri, 27 Nov 2009 19:21:00 GMThttp://www.tkk7.com/rongxh7/archive/2009/11/28/303990.htmlhttp://www.tkk7.com/rongxh7/comments/303990.htmlhttp://www.tkk7.com/rongxh7/archive/2009/11/28/303990.html#Feedback21http://www.tkk7.com/rongxh7/comments/commentRss/303990.htmlhttp://www.tkk7.com/rongxh7/services/trackbacks/303990.html 以下代碼有些朋友可能會似曾熟識,可能也算不上“原創”,請見諒!
不過,我出的這題,確定有點意思,考考大家。
/**
 * 父類
 * 
@author rongxinhua
 *
 
*/
public class Father{
    
private String name="FATHER";
    
public Father(){
        whoAmI();
        tellName(name);
    }
    
public void whoAmI(){
        System.out.println(
"Father says, I am " + name);
    }
    
public void tellName(String name){
        System.out.println(
"Father's name is " + name);
    }
}

/**
 * 子類
 * 
@author rongxinhua
 *
 
*/
public class Son extends Father{
    
private String name="SON";
    
public Son(){
        whoAmI();
        tellName(name);
    }
    
public void whoAmI(){
        System.out.println(
"Son says, I am " + name);
    }
    
public void tellName(String name){
        System.out.println(
"Son's name is " + name);
    }
}

問題:當執行 Father who = new Son(); 時,會輸出什么?
如果你去參加一個公司的筆試或面試時問了這么一道題,在沒有環境測試的情況下,你會猜測什么答案?



心夢帆影 2009-11-28 03:21 發表評論
]]>
介紹一個好用的工具類庫commons-beanutilshttp://www.tkk7.com/rongxh7/archive/2009/06/22/283566.html心夢帆影心夢帆影Mon, 22 Jun 2009 06:39:00 GMThttp://www.tkk7.com/rongxh7/archive/2009/06/22/283566.htmlhttp://www.tkk7.com/rongxh7/comments/283566.htmlhttp://www.tkk7.com/rongxh7/archive/2009/06/22/283566.html#Feedback2http://www.tkk7.com/rongxh7/comments/commentRss/283566.htmlhttp://www.tkk7.com/rongxh7/services/trackbacks/283566.html閱讀全文

心夢帆影 2009-06-22 14:39 發表評論
]]>
一些淡忘了的Java日期時間函數http://www.tkk7.com/rongxh7/archive/2009/06/11/281519.html心夢帆影心夢帆影Thu, 11 Jun 2009 09:25:00 GMThttp://www.tkk7.com/rongxh7/archive/2009/06/11/281519.htmlhttp://www.tkk7.com/rongxh7/comments/281519.htmlhttp://www.tkk7.com/rongxh7/archive/2009/06/11/281519.html#Feedback7http://www.tkk7.com/rongxh7/comments/commentRss/281519.htmlhttp://www.tkk7.com/rongxh7/services/trackbacks/281519.html閱讀全文

心夢帆影 2009-06-11 17:25 發表評論
]]>
Java范型的兩種寫法http://www.tkk7.com/rongxh7/archive/2009/05/27/278122.html心夢帆影心夢帆影Tue, 26 May 2009 18:47:00 GMThttp://www.tkk7.com/rongxh7/archive/2009/05/27/278122.htmlhttp://www.tkk7.com/rongxh7/comments/278122.htmlhttp://www.tkk7.com/rongxh7/archive/2009/05/27/278122.html#Feedback5http://www.tkk7.com/rongxh7/comments/commentRss/278122.htmlhttp://www.tkk7.com/rongxh7/services/trackbacks/278122.html,強制轉換成范型的形式,這樣就不會報錯了。而T get(ID id),由于它的參數和返回類型都用了范型,故要在返回類型T前強制轉換,即。  閱讀全文

心夢帆影 2009-05-27 02:47 發表評論
]]>
主站蜘蛛池模板: 亚洲人妖女同在线播放| 亚洲一区影音先锋色资源| 亚洲精品无码久久久久牙蜜区| 蜜桃AV无码免费看永久| 亚洲欧洲日产国码www| 在线成人爽a毛片免费软件| 亚洲第一成年男人的天堂| 无码av免费一区二区三区试看| 久久精品国产99精品国产亚洲性色| 国产精品网站在线观看免费传媒| 亚洲大成色www永久网站| 免费人成视频在线观看网站| 亚洲精品美女在线观看播放| 精品国产无限资源免费观看| 亚洲综合激情五月色一区| 国产成人精品免费视频大全五级| 怡红院亚洲红怡院在线观看| 在线亚洲97se亚洲综合在线| 美女被cao网站免费看在线看| 久久亚洲AV成人无码电影| 欧美日韩国产免费一区二区三区| 日韩欧美亚洲中文乱码| 亚洲精品无码永久在线观看| a级毛片免费全部播放| 亚洲午夜电影在线观看高清| 日本视频免费在线| 中文字幕免费在线看线人动作大片| 国产亚洲精品观看91在线| 成人免费在线看片| 黄色大片免费网站| 无码专区—VA亚洲V天堂| 毛片免费视频观看| 一级成人a做片免费| 亚洲视频中文字幕| 国产猛烈高潮尖叫视频免费| 国产一区二区三区免费观看在线| 亚洲国产成人精品久久| 亚洲AV无码乱码在线观看| 1000部羞羞禁止免费观看视频| 亚洲av无码专区亚洲av不卡| 亚洲第一福利视频|