??xml version="1.0" encoding="utf-8" standalone="yes"?>国产高清久久,美日韩精品视频,欧美专区一二三http://www.aygfsteel.com/os586/category/13305.html态度军_一切,思想军_?gu)\zh-cnTue, 27 Feb 2007 10:53:25 GMTTue, 27 Feb 2007 10:53:25 GMT60JAVA当中的g?/title><link>http://www.aygfsteel.com/os586/articles/59430.html</link><dc:creator>水煮三国</dc:creator><author>水煮三国</author><pubDate>Fri, 21 Jul 2006 07:54:00 GMT</pubDate><guid>http://www.aygfsteel.com/os586/articles/59430.html</guid><wfw:comment>http://www.aygfsteel.com/os586/comments/59430.html</wfw:comment><comments>http://www.aygfsteel.com/os586/articles/59430.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.aygfsteel.com/os586/comments/commentRss/59430.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/os586/services/trackbacks/59430.html</trackback:ping><description><![CDATA[g递是在一个函CQ调用另外一个函敎ͼ其中含有参数传递的情况。往往g递就是把数据传递到另外一个函Cq行q一步处理,以更清楚地显C函数的表达意思。在函数调用的时候会(x)有数据传递,同样要考虑形参和实参的问题Q如下面的一个程序:(x) <table cellspacing="0" cellpadding="0" width="0" align="right" border="0"><tbody><tr><td align="middle"></td></tr><tr><td><!--start banner ad--><!--ba--><script language="JavaScript1.1" src="http://ad.cn.doubleclick.net/adj/messagingplus.zdnet.com.cn/developer/code;sz=1x1;ord=1364206921?"></script><script src="http://m.cn.2mdn.net/879366/dartRichMedia_1_03.js"></script><!-- Sniffer Code for Flash 5 --><script language="VBScript"><![CDATA[ on error resume next ShockMode = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.5"))) ]]></script><noembed><a target="_blank"><img src="/upimg/2006-05-07/142825_09_534.gif" width="468" height="60" border="0" /></a></noembed><noscript><a target="_blank"><img src="/upimg/2006-05-07/142825_09_534.gif" width="468" height="60" border="0" /></a></noscript><noscript><a ><img src="/upimg/2006-05-07/142827_010_923.cn/developer/code;sz=1x1;ord=1364206921?" border="0" /></a></noscript><!--end banner ad--></td></tr></tbody></table><p><font color="#0066ff">public class PassTest</font></p><p><font color="#0066ff">{</font></p><p><font color="#0066ff"> (tng) (tng) (tng) float ptValue; </font></p><p><font color="#0066ff"> (tng) (tng) (tng)  (tng)public void changeInt (int value) </font></p><p><font color="#0066ff"> (tng) (tng) (tng) { </font></p><p><font color="#0066ff"> (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) value = 55; </font></p><p><font color="#0066ff"> (tng) (tng) (tng) } </font></p><p><font color="#0066ff"> (tng) (tng) (tng)  (tng)public void changeStr (String value) </font></p><p><font color="#0066ff"> (tng) (tng) (tng) { </font></p><p><font color="#0066ff"> (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) value = new String ("different"); </font></p><p><font color="#0066ff"> (tng) (tng) (tng) } </font></p><p><font color="#0066ff"> (tng) (tng) (tng) public void changeObjValue (PassTest ref) </font></p><p><font color="#0066ff"> (tng) (tng) (tng) { </font></p><p><font color="#0066ff"> (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) ref.ptValue = 99f; </font></p><p><font color="#0066ff"> (tng) (tng) (tng) } </font></p><p><font color="#0066ff"> (tng) (tng) (tng) public static void main (String args[]) </font></p><p><font color="#0066ff"> (tng) (tng) (tng) { </font></p><p><font color="#0066ff"> (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) String str; </font></p><p><font color="#0066ff"> (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) intval; </font></p><p><font color="#0066ff"> (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) PassTest pt = new PassTest (); </font></p><p><font color="#0066ff"> (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) val = 11; </font></p><p><font color="#0066ff"> (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) pt.changeInt (val); </font></p><p><font color="#0066ff"> (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) System.out.println ("Int value is: " + val); </font></p><p><font color="#0066ff"> (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) str = new String ("Hello"); </font></p><p><font color="#0066ff"> (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) pt.changeStr (str); </font></p><p><font color="#0066ff"> (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) System.out.println ("Str value is: " + str); </font></p><p><font color="#0066ff"> (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) pt.ptValue = 101f; </font></p><p><font color="#0066ff"> (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) pt.changeObjValue (pt); </font></p><p><font color="#0066ff"> (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) System.out.println ("Current ptValue is: " + pt.ptValue); </font></p><p><font color="#0066ff"> (tng) (tng) (tng)  (tng)} </font></p><p><font color="#0066ff">}</font></p><p>  q个E序最后输出的l果是Q?/p><p>  11</p><p>  Hello</p><p>  99f</p><p>  开始的11和Hello是遵@参数传递的原则Q虽然改变(sh)(jin)形参的|但是实参却不改变Q这同C语言中是一L(fng)。那么如果想改变函数中的实参的|那么应该怎么做呢Q我们知道,在C语言中,我们可以采用指针变量Q用指针变量作ؓ(f)函数的参敎ͼ那么q样Q传递的是参数存放的地址Q那么在函数中改变同一地址的参数值的时候,׃?x)发生错误,可是Q在java中没有指针的说法Q那么,要实CqC语言的做法,应该怎么处理呢?我们知道Qjava中处处都是考虑对象的,句柄是用来操作对象的zd的,那么我们如果对象的句柄传递到函数中去Q就可以使两者指向同一个句柄(也就是地址Q,q样可以完成数据的修改?jin)。见上面的程序,我们可以知道Qpt是主函数中创建的PassTest的对象,通过传递它Q就可以完成地址的传递,子函CQref与主函数的pt指向的其实是一个内存单元,那么修改ref中的ptValue的|也就是修改pt中的ptValue的|即没有最后的数据q回Q这个数据也是会(x)改变的?/p><img src ="http://www.aygfsteel.com/os586/aggbug/59430.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/os586/" target="_blank">水煮三国</a> 2006-07-21 15:54 <a href="http://www.aygfsteel.com/os586/articles/59430.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于g递与引用传递的知识http://www.aygfsteel.com/os586/articles/59427.html水煮三国水煮三国Fri, 21 Jul 2006 07:46:00 GMThttp://www.aygfsteel.com/os586/articles/59427.htmlhttp://www.aygfsteel.com/os586/comments/59427.htmlhttp://www.aygfsteel.com/os586/articles/59427.html#Feedback0http://www.aygfsteel.com/os586/comments/commentRss/59427.htmlhttp://www.aygfsteel.com/os586/services/trackbacks/59427.html
今天有个朋友问v我这个问题的时候我q是很困惑?br />
对g递我q是用一个例子来说明一下吧Q?br />
/* ?1 */
/**
* @(#) Test.java
* @author fancy
*/
public class Test {
public static void test(boolean test) {
test = ! test;
System.out.println("In test(boolean) : test = " + test);
}
public static void main(String[] args) {
boolean test = true;
System.out.println("Before test(boolean) : test = " + test);
test(test);
System.out.println("After test(boolean) : test = " + test);
}
}
  q行l果Q?br />Before test(boolean) : test = true
In test(boolean) : test = false
After test(boolean) : test = true
  不难看出Q虽然在 test(boolean) Ҏ(gu)中改变(sh)(jin)传进来的参数的|但对q个参数源变量本wƈ没有影响Q即?main(String[]) Ҏ(gu)里的 test 变量没有影响。那说明Q参数类型是单类型的时候,是按g递的。以参数形式传递简单类型的变量Ӟ实际上是参数的g?jin)一个拷贝传q方法函数的Q那么在Ҏ(gu)函数里再怎么改变其|其结果都是只改变?sh)(jin)拷贝的|而不是源倹{?br />
Java 是传D是传引用Q问题(sh)要出在对象的传递上Q因?Java 中简单类型没有引用。既然争Z提到?jin)引用这个东西,Z(jin)搞清楚这个问题,我们必须要知道引用是什么?br />  单的_(d)引用其实像是一个对象的名字或者别?(alias)Q一个对象在内存?sh)?x)h一块空间来保存数据Q根据对象的大小Q它可能需要占用的I间大小也不{。访问对象的时候,我们不会(x)直接是访问对象在内存?sh)的数据Q而是通过引用去访问。引用也是一U数据类型,我们可以把它惌为类?C 语言中指针的东西Q它指示?jin)对象在内存(sh)的地址——只不过我们不能够观察到q个地址I竟是什么?br />  如果我们定义?jin)不止一个引用指向同一个对象,那么q些引用是不相同的,因ؓ(f)引用也是一U数据类型,需要一定的内存I间来保存。但是它们的值是相同的,都指C同一个对象在内存的中位置。比?br />String a = "Hello";
String b = a;
  q里Qa ?b 是不同的两个引用Q我们用了(jin)两个定义语句来定义它们。但它们的值是一L(fng)Q都指向同一个对?"Hello"。也怽q觉得不够直观,因ؓ(f) String 对象的值本w是不可更改?(?b = "World"; b = a; q种情况不是改变?sh)?"World" q一对象的|而是改变?sh)(jin)它的引?b 的g之指向了(jin)另一?String 对象 a)。那么我们用 StringBuffer 来D一个例子:(x)
/* ?2 */
/**
* @(#) Test.java
* @author fancy
*/
public class Test {
public static void main(String[] args) {
StringBuffer a = new StringBuffer("Hello");
StringBuffer b = a;
b.append(", World");
System.out.println("a is " + a);
}
}
  q行l果Q?br />a is Hello, World
  q个例子?a ?b 都是引用Q当改变?sh)?b 指示的对象的值的时候,从输出结果来看,a 所指示的对象的g改变?sh)(jin)。所以,a ?b 都指向同一个对象即包含 "Hello" 的一?StringBuffer 对象?br />  q里我描qC(jin)两个要点Q?br />1. 引用是一U数据类型,保存?sh)(jin)对象在内存(sh)的地址Q这U类型即不是我们qx(chng)所说的单数据类型也不是cd?对象)Q?
2. 不同的引用可能指向同一个对象,换句话说Q一个对象可以有多个引用Q即该类cd的变量?br />3. 对象是如何传递的?br />  关于对象的传递,有两U说法,即“它是按g递的”和“它是按引用传递的”。这两种说法各有各的道理Q但是它们都没有从本质上d析,卌于生了(jin)争论?  既然现在我们已经知道?jin)引用是什么东西,那么现在不妨来分析一下对象作是参数是如何传递的。还是先以一个程序ؓ(f)例:(x)
/* ?3 */
/**
* @(#) Test.java
* @author fancy
*/
public class Test {
public static void test(StringBuffer str) {
str.append(", World!");
}
public static void main(String[] args) {
StringBuffer string = new StringBuffer("Hello");
test(string);
System.out.println(string);
}
}
  q行l果Q?br />Hello, World!
  test(string) 调用?test(StringBuffer) Ҏ(gu)Qƈ?string 作ؓ(f)参数传递了(jin)q去。这?string 是一个引用,q一Ҏ(gu)勿庸|疑的。前面提刎ͼ引用是一U数据类型,而且不是对象Q所以它不可能按引用传递,所以它是按g递的Q它么它的值究竟是什么呢Q是对象的地址?br />  由此可见Q对象作为参数的时候是按g递的Q对吗?错!Z么错Q让我们看另一个例子:(x)
/* ?4 */
/**
* @(#) Test.java
* @author fancy
*/
public class Test {
public static void test(String str) {
str = "World";
}
public static void main(String[] args) {
String string = "Hello";
test(string);
System.out.println(string);
}
}
  q行l果Q?br />Hello
  Z么会(x)q样呢?因ؓ(f)参数 str 是一个引用,而且它与 string 是不同的引用Q虽然它们都是同一个对象的引用。str = "World" 则改变(sh)(jin) str 的|使之指向?jin)另一个对象,然?str 指向的对象改变(sh)(jin)Q但它ƈ没有?"Hello" 造成M影响Q而且׃ string ?str 是不同的引用Qstr 的改变(sh)没有?string 造成M影响Q结果就如例中所C?br />  其结果是推翻?jin)参数按g递的说法。那么,对象作ؓ(f)参数的时候是按引用传递的?jin)?也错Q因Z一个例子的能够说明它是按g递的?br />  l果Q就像光到底是Lq是_子的问题(sh)PJava Ҏ(gu)的参数是按什么传递的问题Q其{案只能是Q即是按g递也是按引用传递,只是参照物不同,l果也就不同?br />

水煮三国 2006-07-21 15:46 发表评论
]]>
关于tomcat中文昄的问题的Filter解决Ҏ(gu)http://www.aygfsteel.com/os586/articles/59343.html水煮三国水煮三国Fri, 21 Jul 2006 01:22:00 GMThttp://www.aygfsteel.com/os586/articles/59343.htmlhttp://www.aygfsteel.com/os586/comments/59343.htmlhttp://www.aygfsteel.com/os586/articles/59343.html#Feedback0http://www.aygfsteel.com/os586/comments/commentRss/59343.htmlhttp://www.aygfsteel.com/os586/services/trackbacks/59343.html大多Ch对tomcat的中文都是对字符的{换来完成的?br />
现在我们使用Filter来完成?br />
使用tomcat自带的Servlet下的Filter文g夹下的setCharacterEncodingFilter.java,RequestDumpFilter.javaq两个类来完?我们的中文显C功能是非常有用的?br />
在自q应用E序下的web.xml当中q样讄Q?br />


 (tng)<filter>

 (tng) (tng) (tng)<filter-name>Set Character Encoding</filter-name>

 (tng) (tng) (tng)<filter-class>com.wrox.filter.setCharacterEncodingFilter.java</filter-class>

 (tng) (tng) (tng) (tng) (tng) <init-param>

 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)<param-name>encoding</param-name>

 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)<param-value>GBK</param-value>

 (tng) (tng) (tng) (tng) (tng) (tng)</init-param>



</filter>

<filter-mapping>

 (tng) (tng) (tng)<filter-name>Set Character Encoding</filter-name>

 (tng) (tng) (tng)<url-pattern>/*</url-pattern>

</filter-mapping>




同时 在JSP文g当中加入

%@page contentType="text/html;charset=GBK"%>

<META http-equiv="Content-Type content="text/html;charset=GBK">





水煮三国 2006-07-21 09:22 发表评论
]]>
վ֩ģ壺 ϴ| | | | | | ͺ| ϰ| Ͻ| Դ| | | ɽ| | | Ȫ| | ͬ| ʯ| | ƾ| | | | | | ͩ| | | | | º| | | | | ɽ| | ʶ| | |