国产精品乱战久久久,国产另类在线,精品国产一区二区三区久久久蜜臀 http://www.aygfsteel.com/rongxh7/category/39850.html相信自己的人生有無限可能,把握每一個(gè)機(jī)會,全力以赴……zh-cnMon, 19 Apr 2010 21:26:17 GMTMon, 19 Apr 2010 21:26:17 GMT60Java可變參數(shù)方法重載時(shí)要注意的幾個(gè)問題http://www.aygfsteel.com/rongxh7/archive/2010/04/18/318698.html心夢帆影心夢帆影Sun, 18 Apr 2010 15:59:00 GMThttp://www.aygfsteel.com/rongxh7/archive/2010/04/18/318698.htmlhttp://www.aygfsteel.com/rongxh7/comments/318698.htmlhttp://www.aygfsteel.com/rongxh7/archive/2010/04/18/318698.html#Feedback0http://www.aygfsteel.com/rongxh7/comments/commentRss/318698.htmlhttp://www.aygfsteel.com/rongxh7/services/trackbacks/318698.htmlJDK1.5引進(jìn)了方法的可變參數(shù),受到許多開發(fā)人員的青睞。有了這種機(jī)制,我們可以寫出類似于JavaScript的arguments那樣的帶任意多個(gè)參數(shù)的方法。Java的可變參數(shù),可用于普通方法上,也可以用于構(gòu)造方法上,大大增大了我們所寫方法的適用范圍。


然而,使用可變參數(shù)時(shí),要注意幾個(gè)問題:

 

1) 可變參數(shù)方法與數(shù)組參數(shù)方法重載時(shí)

 

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

我們寫個(gè)測試代碼運(yùn)行一下看看結(jié)果如何:

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

  編譯時(shí)報(bào)錯:

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

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

可變參數(shù)==數(shù)組參數(shù)? 在帶可變參數(shù)的方法體時(shí),讀取可變參數(shù)列表時(shí),就是以數(shù)組的方式來讀取;

帶可變參數(shù)的方法可以傳入一個(gè)數(shù)組參數(shù),但帶數(shù)組參數(shù)的方法卻不能傳入可變參數(shù)。

 

 

2) 可變參數(shù)方法與可變參數(shù)方法重載時(shí)

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

  測試代碼跟上例中一樣,編譯時(shí)報(bào)錯:

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

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

 

 

3)可變參數(shù)方法與無參數(shù)方法重載時(shí)

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

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

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

結(jié)論:當(dāng)可變參數(shù)方法與不帶參數(shù)的方法重載時(shí),JDK默認(rèn)調(diào)用的是無參數(shù)的方法。若類中沒有定義無參數(shù)的方法,則會調(diào)用可變參數(shù)的方法。



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

}

/**
 * 目標(biāo)子類
 * 
@author rongxinhua
 *
 
*/
public class RealClass implements MyInterface {

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

}

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


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

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

}

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

打印時(shí)輸出:
doBefore
doOperation
doAfter

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



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

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

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

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

}

程序執(zhí)行,輸出結(jié)果為:
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 發(fā)表評論
]]>
18位身份證驗(yàn)證小組件idchecker發(fā)布http://www.aygfsteel.com/rongxh7/archive/2010/01/03/308097.html心夢帆影心夢帆影Sun, 03 Jan 2010 10:43:00 GMThttp://www.aygfsteel.com/rongxh7/archive/2010/01/03/308097.htmlhttp://www.aygfsteel.com/rongxh7/comments/308097.htmlhttp://www.aygfsteel.com/rongxh7/archive/2010/01/03/308097.html#Feedback1http://www.aygfsteel.com/rongxh7/comments/commentRss/308097.htmlhttp://www.aygfsteel.com/rongxh7/services/trackbacks/308097.html下載地址:http://codeshop.googlecode.com/files/idchecker.zip

提供給外部調(diào)用的cn.idchecker.check.Checker類的相關(guān)方法如下表:

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

用法舉例 1 :解壓縮“idchecker.zip”,將其目錄下的“idchecker.jar” 包引進(jìn)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 
+ " | ");
        }
    } 

}


運(yùn)行結(jié)果:

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


用法舉例 2 :將“idchecker.jar” 包引進(jìn)到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>身份證驗(yàn)證</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="驗(yàn)證"/>
</form>
</body>
</html>
 


運(yùn)行結(jié)果:

 image image



心夢帆影 2010-01-03 18:43 發(fā)表評論
]]>
原創(chuàng)一道Java筆試面試題考考大家http://www.aygfsteel.com/rongxh7/archive/2009/11/28/303990.html心夢帆影心夢帆影Fri, 27 Nov 2009 19:21:00 GMThttp://www.aygfsteel.com/rongxh7/archive/2009/11/28/303990.htmlhttp://www.aygfsteel.com/rongxh7/comments/303990.htmlhttp://www.aygfsteel.com/rongxh7/archive/2009/11/28/303990.html#Feedback21http://www.aygfsteel.com/rongxh7/comments/commentRss/303990.htmlhttp://www.aygfsteel.com/rongxh7/services/trackbacks/303990.html 以下代碼有些朋友可能會似曾熟識,可能也算不上“原創(chuàng)”,請見諒!
不過,我出的這題,確定有點(diǎn)意思,考考大家。
/**
 * 父類
 * 
@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);
    }
}

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



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

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

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

]]>
主站蜘蛛池模板: 颍上县| 潢川县| 容城县| 泸定县| 天等县| 西丰县| 鄂州市| 太保市| 仙桃市| 麟游县| 家居| 扶余县| 永新县| 谷城县| 衡东县| 鱼台县| 垦利县| 新泰市| 珲春市| 道真| 临潭县| 福泉市| 德清县| 旅游| 永平县| 临清市| 甘谷县| 商水县| 格尔木市| 大渡口区| 哈尔滨市| 赞皇县| 淄博市| 梓潼县| 镇坪县| 唐山市| 元氏县| 肥西县| 义马市| 天门市| 开平市|