<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet href='http://feed.feedsky.com/styles/feedsky8.xsl' type='text/xsl' ?><!--这是一个由Feedsy提供技术支持的Feed，为了提高读者阅读的体验，以及满足用户美化自己Feed的需要，我们设计了多种精美的Feed模板，提供给大家选择，所有最终呈现出来的样式，皆由用户自愿选择使用，未经许可，任何团体和个人，请不要擅自修改样式或者盗用，这是对于用户选择权的尊重。--><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:fs="http://www.feedsky.com/namespace/feed" version="2.0"><channel><atom:link href="http://feed.feedsky.com/xiaotustudy" type="application/rss+xml" rel="self"></atom:link><fs:self_link href="http://feed.feedsky.com/xiaotustudy" type="application/rss+xml"></fs:self_link><lastBuildDate>Tue, 08 Sep 2009 21:15:39 GMT</lastBuildDate><title>小兔学习网 RSS feed</title><description>IT技术，羽毛球</description><link>http://www.xiaotustudy.com</link><language>zh-cn</language><copyright>An RSS feed for 小兔学习网(www.xiaotustudy.com)</copyright><item><title>javascript中数组的操作</title><link>http://www.xiaotustudy.com/new.asp?id=189</link><description>&lt;P&gt;今天做项目时，碰到一个问题，对于js高手来说，很简单，但是俺不是，哈哈，所以只好google。&lt;BR&gt;什么问题呢？就是对数组做删除其中一个元素的操作，写java代码写习惯了，当时认为这样写就可以了如下：&lt;BR&gt;&amp;nbsp; for(var i=0;i&amp;lt;testArray.length；i++){&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var&amp;nbsp;element = testArray[i];&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; testArray.remove(testArray[i]);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;原以为js中存在这样的方法，谁知道根本没有，简直无语，只好查找js中数组的api了，一查才发现可以用splice这个方法&lt;BR&gt;splice(start,deleteCount,val1,val2,...)：从start位置开始删除deleteCount项，并从该位置起插入val1,val2,... &lt;BR&gt;只需要testArray.splice(0,i)就可以实现remove的功能了。&lt;BR&gt;以下是js数组操作的全api&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;shift：删除原数组第一项，并返回删除元素的值；如果数组为空则返回undefined &lt;BR&gt;var a = [1,2,3,4,5]; &lt;BR&gt;var b = a.shift(); //a：[2,3,4,5] b：1&lt;/P&gt;
&lt;P&gt;unshift：将参数添加到原数组开头，并返回数组的长度 &lt;BR&gt;var a = [1,2,3,4,5]; &lt;BR&gt;var b = a.unshift(-2,-1); //a：[-2,-1,1,2,3,4,5] b：7 &lt;BR&gt;注：在IE6.0下测试返回值总为undefined，FF2.0下测试返回值为7，所以这个方法的返回值不可靠，需要用返回值时可用splice代替本方法来使用。&lt;/P&gt;
&lt;P&gt;pop：删除原数组最后一项，并返回删除元素的值；如果数组为空则返回undefined &lt;BR&gt;var a = [1,2,3,4,5]; &lt;BR&gt;var b = a.pop(); //a：[1,2,3,4] b：5&lt;/P&gt;
&lt;P&gt;push：将参数添加到原数组末尾，并返回数组的长度 &lt;BR&gt;var a = [1,2,3,4,5]; &lt;BR&gt;var b = a.push(6,7); //a：[1,2,3,4,5,6,7] b：7&lt;/P&gt;
&lt;P&gt;concat：返回一个新数组，是将参数添加到原数组中构成的 &lt;BR&gt;var a = [1,2,3,4,5]; &lt;BR&gt;var b = a.concat(6,7); //a：[1,2,3,4,5] b：[1,2,3,4,5,6,7]&lt;/P&gt;
&lt;P&gt;splice(start,deleteCount,val1,val2,...)：从start位置开始删除deleteCount项，并从该位置起插入val1,val2,... &lt;BR&gt;var a = [1,2,3,4,5]; &lt;BR&gt;var b = a.splice(2,2,7,8,9); //a：[1,2,7,8,9,5] b：[3,4] &lt;BR&gt;var b = a.splice(0,1); //同shift &lt;BR&gt;a.splice(0,0,-2,-1); var b = a.length; //同unshift &lt;BR&gt;var b = a.splice(a.length-1,1); //同pop &lt;BR&gt;a.splice(a.length,0,6,7); var b = a.length; //同push&lt;/P&gt;
&lt;P&gt;reverse：将数组反序 &lt;BR&gt;var a = [1,2,3,4,5]; &lt;BR&gt;var b = a.reverse(); //a：[5,4,3,2,1] b：[5,4,3,2,1]&lt;/P&gt;
&lt;P&gt;sort(orderfunction)：按指定的参数对数组进行排序 &lt;BR&gt;var a = [1,2,3,4,5]; &lt;BR&gt;var b = a.sort(); //a：[1,2,3,4,5] b：[1,2,3,4,5]&lt;/P&gt;
&lt;P&gt;slice(start,end)：返回从原数组中指定开始下标到结束下标之间的项组成的新数组 &lt;BR&gt;var a = [1,2,3,4,5]; &lt;BR&gt;var b = a.slice(2,5); //a：[1,2,3,4,5] b：[3,4,5]&lt;/P&gt;
&lt;P&gt;join(separator)：将数组的元素组起一个字符串，以separator为分隔符，省略的话则用默认用逗号为分隔符 &lt;BR&gt;var a = [1,2,3,4,5]; &lt;BR&gt;var b = a.join(&quot;|&quot;); //a：[1,2,3,4,5] b：&quot;1|2|3|4|5&quot;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;数组是JavaScript提供的一个内部对象，它是一个标准的集合，我们可以添加(push)、删除(shift)里面元素，我们还可以通过for循环遍历里面的元素，那么除了数组我们在JavaScript里还可以有别的集合吗?&lt;/P&gt;
&lt;P&gt;　　由于JavaScript的语言特性，我们可以向通用对象动态添加和删除属性。所以Object也可以看成是JS的一种特殊的集合。下面比较一下Array和Object的特性:&lt;/P&gt;
&lt;P&gt;　　Array:&lt;/P&gt;
&lt;P&gt;新建:var ary = new Array(); 或 var ary = []; &lt;BR&gt;增加:ary.push(value); &lt;BR&gt;删除:delete ary[n]; &lt;BR&gt;遍历:for ( var i=0 ; i &amp;lt; ary.length ; ++i ) ary[i];&lt;/P&gt;
&lt;P&gt;　　Object:&lt;/P&gt;
&lt;P&gt;新建:var obj = new Object(); 或 var obj = {}; &lt;BR&gt;增加:obj[key] = value; (key为string) &lt;BR&gt;删除:delete obj[key]; &lt;BR&gt;遍历:for ( var key in obj ) obj[key];&lt;/P&gt;
&lt;P&gt;　　从上面的比较可以看出Object完全可以作为一个集合来使用，在使用Popup窗口创建无限级Web页菜单(3)中我介绍过Eric实现的那个__MenuCache__，它也就是一个模拟的集合对象。&lt;/P&gt;
&lt;P&gt;　　如果我们要在Array中检索出一个指定的值，我们需要遍历整个数组:&lt;/P&gt;
&lt;P&gt;　　&lt;BR&gt;代码： &lt;BR&gt;var keyword = ; &lt;BR&gt;　　for ( var i=0 ; i &amp;lt; ary.length ; ++i ) &lt;BR&gt;　　{ &lt;BR&gt;　　if ( ary[i] == keyword ) &lt;BR&gt;　　{ &lt;BR&gt;　　// todo &lt;BR&gt;　　} &lt;BR&gt;　　}&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;　　而我们在Object中检索一个指定的key的条目，只需要是要使用:&lt;/P&gt;
&lt;P&gt;　　&lt;BR&gt;代码： &lt;BR&gt;var key = ''; &lt;BR&gt;　　var value = obj[key]; &lt;BR&gt;　　// todo&lt;/P&gt;
&lt;P&gt;　Object的这个特性可以用来高效的检索Unique的字符串集合，遍历Array的时间复杂度是O(n)，而遍历Object的时间复杂度是O(1)。虽然对于10000次集合的for检索代价也就几十ms，可是如果是1000*1000次检索或更多，使用Object的优势一下就体现出来了。在此之前我做了一个mapping，把100个Unique的字符mapping到1000个字符串数组上，耗时25-30s!后来把for遍历改成了Object模拟的集合的成员引用，同样的数据量mapping，耗时仅1.7-2s!!!&lt;/P&gt;
&lt;P&gt;　　对于集合的遍历效率(从高到低):var value = obj[key]; &amp;gt; for ( ; ; ) &amp;gt; for ( in )。效率最差的就是for( in )了，如果集合过大，尽量不要使用for ( in )遍历。&lt;BR&gt;&amp;nbsp;这段api转载自JSpBoy的个人空间，网址是：&lt;FONT face=Verdana&gt;&lt;A href=&quot;http://hi.baidu.com/jspboy/blog/item/7d6472cf55ab3938f8dc61af.html&quot;&gt;http://hi.baidu.com/jspboy/blog/item/7d6472cf55ab3938f8dc61af.html&lt;/A&gt;&lt;BR&gt;（希望该博主不会生气 哈哈）&lt;/FONT&gt;&lt;/P&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/268629778/xiaotustudy/feedsky/s.gif?r=http://www.xiaotustudy.com/new.asp?id=189&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/xiaotustudy/268629778/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/xiaotustudy/268629778/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Wed, 09 Sep 2009 05:15:39 +0800</pubDate><guid isPermaLink="false">http://www.xiaotustudy.com/new.asp?id=189</guid><fs:srclink>http://www.xiaotustudy.com/new.asp?id=189</fs:srclink><fs:srcfeed>http://www.xiaotustudy.com/rss.asp</fs:srcfeed><fs:itemid>feedsky/xiaotustudy/~7504326/268629778/5613264</fs:itemid></item><item><title>新概念第三册-第31课</title><link>http://www.xiaotustudy.com/new.asp?id=188</link><description>&lt;P align=left&gt;&lt;FONT size=4&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A lovable eccentric &lt;BR&gt;&lt;/FONT&gt;True eccentrics never deliberately set out to draw attention to themselves. They disregard social conventions without being conscious that they are doing anything extraordinary. This invariably wins them the love and respect of others, for they add colour to the dull routine of everyday life.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Up to the time of his death, Richard Colson was one of the most notable figures in our town. He was a shrewd and wealthy businessman, but most people in the town hardly knew anything about this side of his life. He was known to us all as Dickie and his eccentricity had become legendary long before he died.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dickie disliked snobs intensely. Though he owned a large car, he hardly ever used it, preferring always to go on foot. Even when it was raining heavily, he refused to carry an umbrella. One day, he walked into an expensive shop after having been caught in a particularly heavy shower. He wanted to buy a $300 watch for his wife, but he was in such a bedraggled condition than an assistant refused to serve him. Dickie left the shop without a word and returned carrying a large cloth bag. As it was extremely heavy, he dumped it on the counter. The assistant asked him to leave, but Dickie paid no attention to him and requested to see the manager. Recognizing who the customer was, the manager was most apologetic and reprimanded the assistant severely. When Dickie was given the watch, the presented the assistant with the cloth bag. It contained $300 in pennies. He insisted on the assistant's counting the money before he left -- 30,000 pennies in all! On another occasion, he invited a number of important critics to see his private collection of modern paintings. This exhibition received a great deal of attention in the press, for though the pictures were supposed to be the work of famous artists, they had in fact been painted by Dickie. It took him four years to stage this elaborate joke simply to prove that critics do not always know what they are talking about. &lt;/P&gt;
&lt;P align=left&gt;New words and expressions 生词和短语&lt;/P&gt;
&lt;P align=left&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lovable&lt;BR&gt;adj. 可爱的&lt;/P&gt;
&lt;P align=left&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; eccentric&lt;BR&gt;n.&amp;nbsp;&amp;nbsp; （行为）古怪人&lt;/P&gt;
&lt;P align=left&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; disregard&lt;BR&gt;v.&amp;nbsp;&amp;nbsp; 不顾，漠视&lt;BR&gt;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; convention&lt;BR&gt;n.&amp;nbsp;&amp;nbsp; 习俗，风俗&lt;/P&gt;
&lt;P align=left&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; conscious&lt;BR&gt;adj. 感觉到的，意识到的&lt;/P&gt;
&lt;P align=left&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; invariably&lt;BR&gt;adv. 总是，经常地&lt;/P&gt;
&lt;P align=left&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; routine&lt;BR&gt;n.&amp;nbsp;&amp;nbsp; 常规；惯例&lt;/P&gt;
&lt;P align=left&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; shrewd&lt;BR&gt;adj. 精明的&lt;/P&gt;
&lt;P align=left&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; eccentricity&lt;BR&gt;n.&amp;nbsp;&amp;nbsp; 怪僻&lt;/P&gt;
&lt;P align=left&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; legendary&lt;BR&gt;adj. 传奇般的&lt;/P&gt;
&lt;P align=left&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; snob&lt;BR&gt;n.&amp;nbsp;&amp;nbsp; 势利小人，谄上欺下的人&lt;/P&gt;
&lt;P align=left&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; intensely&lt;BR&gt;adv. 强烈地&lt;/P&gt;
&lt;P align=left&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bedraggled&lt;BR&gt;adj. 拖泥带水的&lt;/P&gt;
&lt;P align=left&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dump&lt;BR&gt;v.&amp;nbsp;&amp;nbsp; 把……砰的一声抛下&lt;/P&gt;
&lt;P align=left&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; apologetic&lt;BR&gt;adj. 道歉的&lt;/P&gt;
&lt;P align=left&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; reprimand&lt;BR&gt;v.&amp;nbsp;&amp;nbsp; 训斥&lt;/P&gt;
&lt;P align=left&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stage&lt;BR&gt;v.&amp;nbsp;&amp;nbsp; 暗中策划&lt;/P&gt;
&lt;P align=left&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; elaborate&lt;BR&gt;adj. 精心构思的&lt;/P&gt;
&lt;P align=left&gt;参考译文&lt;/P&gt;
&lt;P align=left&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 真正古怪的人从不有意引人注意。他们不顾社会习俗，意识不到自己所作所为有什么特殊之处。他们总能赢得别人的喜爱与尊敬，因为他们给平淡单一的日常生活增添了色彩。&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 理查德.科尔森生前是我们镇上最有名望的人之一。他是个精明能干、有钱的商人，但镇上大部分人对他生活中的这一个方面几乎一无所知。大家都管他叫迪基。早在他去世前很久，他的古怪行为就成了传奇故事了。&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 迪基痛恨势利小人。尽管他有一辆豪华小轿车，但却很少使用，常常喜欢以步代车。即使大雨倾盆，他也总是拒绝带伞。一天，他遇上一场瓢泼大雨，淋得透湿。他走进一家高级商店，要为妻子买一块价值300英镑的手表。但店员见他浑身泥水的样子，竟不肯接待他。迪基二话没说就走了。一会儿，他带着一个大布口袋回到店里。布袋很沉，他重重地把布袋扔在柜台上。店员让迪基走开，他置之不理，并要求见经理。经理认出了这位顾客，表示了深深的歉意，还严厉地训斥了店员。店员为迪基拿出了那块手表，迪基把布口袋递给他，口袋里面装着300镑的便士。他坚持要店员点清那些硬币后他才离去。这些硬币加在一起共有30,000枚！ 还有一次，他邀请一些著名评论家来参观他私人收藏的现代画。这次展览引起报界广泛注意，因为这些画名义上是名家的作品，事实上是迪基自己画的。他花了4年时间策划这出精心设计的闹剧，只是想证明评论家们有时并不解他们所谈论的事情。&lt;BR&gt;&lt;EMBED src=http://listen.putclub.com/resource/lessons/ncc3/lesson31.mp3 width=400 height=30 type=audio/mpeg autostart=&quot;true&quot; controls=&quot;IMAGEWINDOW,ControlPanel,StatusBar&quot; console=&quot;Clip1&quot;&gt;&lt;/EMBED&gt;&lt;BR&gt;&lt;/P&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/268629807/xiaotustudy/feedsky/s.gif?r=http://www.xiaotustudy.com/new.asp?id=188&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/xiaotustudy/268629807/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/xiaotustudy/268629807/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Thu, 03 Sep 2009 06:15:36 +0800</pubDate><guid isPermaLink="false">http://www.xiaotustudy.com/new.asp?id=188</guid><fs:srclink>http://www.xiaotustudy.com/new.asp?id=188</fs:srclink><fs:srcfeed>http://www.xiaotustudy.com/rss.asp</fs:srcfeed><fs:itemid>feedsky/xiaotustudy/~7504326/268629807/5613264</fs:itemid></item><item><title>新概念第三册-第30课</title><link>http://www.xiaotustudy.com/new.asp?id=187</link><description>&lt;P align=center&gt;&lt;FONT size=4&gt;The death of a ghost&lt;/FONT&gt; &lt;BR&gt;For years, villagers believed that Endley Farm was hunted. The farm was owned by two brothers, Joe and Bob Cox. They employed a few farmhands, but no one was willing to work there long. Every time a worker gave up his job, he told the same story. Farm labourers said that they always woke up to find that work had been done overnight. Hay had been cut and cowsheds had been cleaned. A farm worker, who stayed up all night claimed to have seen a figure cutting corn in the moonlight. In time, it became an accepted fact the Cox brothers employed a conscientious ghost that did most of their work for them.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; No one suspected that there might be someone else on the farm who had never been seen. This was indeed the case. A short time ago, villagers were astonished to learn that the ghost of Endley had died. Everyone went to the funeral, for the 'ghost' was none other than Eric Cox, a third brother who was supposed to have died as a young man. After the funeral, Joe and Bob revealed a secret which they had kept for over fifty years.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Eric had been the eldest son of the family, very much older than his two brothers. He had been obliged to join the army during the Second World War. As he hated army life, he decided to desert his regiment. When he learnt that he would be sent abroad, he returned to the farm and his father hid him until the end of the war. Fearing the authorities, Eric remained in hiding after the war as well. His father told everybody that Eric had been killed in action. The only other people who knew the secret were Joe and Bob. They did not even tell their wives. When their father died, they thought it their duty to keep Eric in hiding. All these years, Eric had lived as a recluse. He used to sleep during the day and work at night, quite unaware of the fact that he had become the ghost of Endley. When he died, however, his brothers found it impossible to keep the secret any longer. &lt;/P&gt;
&lt;P&gt;New words and expressions 生词和短语&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; labourer&lt;BR&gt;n.&amp;nbsp;&amp;nbsp; 劳动者&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; overnight&lt;BR&gt;adv. 一夜期间&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hay&lt;BR&gt;n.&amp;nbsp;&amp;nbsp; 干草&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; corn&lt;BR&gt;n.&amp;nbsp;&amp;nbsp; 谷物&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; moonlight&lt;BR&gt;n.&amp;nbsp;&amp;nbsp; 月光&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; conscientious&lt;BR&gt;adj. 认真的&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; suspect&lt;BR&gt;v.&amp;nbsp;&amp;nbsp; 怀疑&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; desert&lt;BR&gt;v.&amp;nbsp;&amp;nbsp; （军队中）开小差&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; regiment&lt;BR&gt;n.&amp;nbsp;&amp;nbsp; （军队）团&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; action&lt;BR&gt;n.&amp;nbsp;&amp;nbsp; 战斗&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; recluse&lt;BR&gt;n.&amp;nbsp;&amp;nbsp; 隐士&lt;/P&gt;
&lt;P&gt;参考译文&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 多年来，村民们一直认为恩得利农场在闹鬼。恩得利农场属于乔.考科斯和鲍勃.考科斯兄弟俩所有。他们雇了几个农工，但谁也不愿意在那儿长期工作下去。每次雇工辞职后都叙述着同样的故事。雇工们说，常常一早起来发现有人在夜里把活干了，干草已切好，牛棚也打扫干净了。有一个彻夜未眠的雇工还声称他看见一个人影在月光下收割庄稼。随着时间的流逝，考科斯兄弟雇了一个尽心尽责的鬼，他们家的活大部分都让鬼给干了，这件事成了公认的事实。&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 谁也没想到农场竟会有一个从未露面的人。但事实上确有此人。不久之前，村民们惊悉恩得利农场的鬼死了。大家都去参加了葬礼，因为那“鬼”不是别人，正是农场主的兄弟埃里克.考科斯。人们以为埃里克年轻时就死了。葬礼之后，乔和鲍勃透露了他们保守了长达50多年的秘密。&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 埃里克是这家长子。年龄比他两个弟弟大很多，第二次世界大战期间被迫参军。他讨厌军旅生活，决定逃离所在部队。当他了解自己将被派遣出国时，他逃回农场，父亲把他藏了起来，直到战争结束。由于害怕当局，埃里克战后继续深藏不露。他的父亲告诉大家，埃里克在战争中被打死了。除此之外，只有乔与鲍知道这个秘密。但他俩连自己的妻子都没告诉。父亲死后，他们兄弟俩认为有责任继续把埃里克藏起来。这些年来，埃里克过着隐士生活，白天睡觉，夜里出来干活，一点不知道自己已成了恩得利家场的活鬼。他死后，他的弟弟们才觉得无法再保守这个秘密了。&lt;BR&gt;&lt;/P&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/268629809/xiaotustudy/feedsky/s.gif?r=http://www.xiaotustudy.com/new.asp?id=187&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/xiaotustudy/268629809/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/xiaotustudy/268629809/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Tue, 01 Sep 2009 04:51:32 +0800</pubDate><guid isPermaLink="false">http://www.xiaotustudy.com/new.asp?id=187</guid><fs:srclink>http://www.xiaotustudy.com/new.asp?id=187</fs:srclink><fs:srcfeed>http://www.xiaotustudy.com/rss.asp</fs:srcfeed><fs:itemid>feedsky/xiaotustudy/~7504326/268629809/5613264</fs:itemid></item><item><title>新概念第三册-第29课</title><link>http://www.xiaotustudy.com/new.asp?id=186</link><description>&lt;P align=center&gt;&lt;FONT size=4&gt;Funny Or Not&lt;/FONT&gt;&lt;BR&gt;Whether we find a joke funny or not largely depends on were we have been brought up. The sense of humour is mysteriously bound up with national characteristics. A Frenchman, for instance, might find it hard to laugh at a Russian joke. In the same way, a Russian might fail to see anything amusing in a joke witch would make an Englishman laugh to tears.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Most funny stories are based on comic situations. In spite of national differences, certain funny situations have a universal appeal. No matter where you live, you would find it difficult not to laugh at, say, Charlie Chaplin's early films. However, a new type of humour, which stems largely from the U.S., has recently come into fashion. It is called 'sick humour'. Comedians base their jokes on tragic situation like violent death or serious accidents. Many people find this sort of joke distasteful The following example of 'sick humour' will enable you to judge for yourself.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; A man who had broken his right leg was taken to hospital a few weeks before Christmas. From the moment he arrived there, he kept on pestering his doctor to tell him when he would be able to go home. He dreaded having to spend Christmas in hospital. Though the doctors did his best, the patient's recovery was slow. On Christmas Day, the man still had his right leg in plaster. He spent a miserable day in bed thinking of all the fun he was missing. The following day, however, the doctor consoled him by telling him that his chances of being able to leave hospital in time for New Year celebrations were good. The good. The man took heart and, sure enough, on New Years' Eve he was able to hobble along to a party. To compensate for his unpleasant experiences in hospital, the man drank a little more than was good for him. In the process, he enjoyed himself thoroughly and kept telling everybody how much he hated hospitals. He was still mumbling something about hospitals at the end of the party when he slipped on a piece of ice and broke his left leg.&lt;BR&gt;&amp;nbsp;&lt;BR&gt;New words and expressions 生词和短语 &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; largely&lt;BR&gt;adv. 在很大程度上&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; comic&lt;BR&gt;adj. 喜剧的，可笑的&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; universal&lt;BR&gt;adj. 普通的&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; comedian&lt;BR&gt;n.&amp;nbsp;&amp;nbsp; 滑稽演员，喜剧演员&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; distasteful&lt;BR&gt;adj. 讨厌的&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pester&lt;BR&gt;v.&amp;nbsp;&amp;nbsp; 一再要求，纠缠&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dread&lt;BR&gt;v.&amp;nbsp;&amp;nbsp; 惧怕&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; recovery&lt;BR&gt;n.&amp;nbsp;&amp;nbsp; 康复&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; plaster&lt;BR&gt;n.&amp;nbsp;&amp;nbsp; 熟石膏&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; console&lt;BR&gt;v.&amp;nbsp;&amp;nbsp; 安慰，慰问&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hobble&lt;BR&gt;v.&amp;nbsp;&amp;nbsp; 瘸着腿走&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; compensate&lt;BR&gt;v.&amp;nbsp;&amp;nbsp; 补偿&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mumble&lt;BR&gt;v.&amp;nbsp;&amp;nbsp; 喃喃而语&lt;/P&gt;
&lt;P&gt;参考译文&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 我们觉得一则笑话是否好笑，很大程度取决于我们是在哪儿长大的。幽默感与民族有着神秘莫测的联系。譬如，法国人听完一则俄国笑话可能很难发笑。同样的道理，一则可以令英国人笑出泪来的笑话，俄国人听了可能觉得没有什么可笑之处。&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 大部分令人发笑的故事都是根据喜剧情节编写的。尽管民族不同，有些滑稽的情节却能产生普遍的效果。比如说，不管你生活在哪里，你看查理.卓别林的早期电影很难不发笑。然而，近来一种新式幽默流行了起来，这种幽默主要来自美国。它被叫作“病态幽默”。喜剧演员根据悲剧情节诸如暴死，重大事故等来编造笑话。许多人认为这种笑话是低级庸俗的。下面是个“病态幽默”的实例，你可据此自己作出判断。&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 圣诞节前几周，某人摔断了右腿被送进医院。从他进医院那一刻时，他就缠住医生，让医生告诉他什么时候能回家。他十分害怕在医院过圣诞。尽管医生竭力医治，但病人恢复缓慢。圣诞节那天，他的右腿还上着石膏，他在床上郁郁不乐地躺了一天，想着他错过的种种欢乐。然而，第二天，医生安慰他说，出院欢度新年的可能性还是很大的，那人听后振作了精神。果然，除夕时他可以一瘸一拐地去参加晚会了。为了补偿住院这一段不愉快的经历，那人喝得稍许多了一点。在晚会上他尽情娱乐，一再告诉大家他是多么讨厌医院。晚会结束时，他嘴里还在嘟哝着医院的事，突然踩到一块冰上滑倒了，摔断了左腿。&lt;/P&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/268629832/xiaotustudy/feedsky/s.gif?r=http://www.xiaotustudy.com/new.asp?id=186&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/xiaotustudy/268629832/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/xiaotustudy/268629832/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Tue, 01 Sep 2009 04:50:30 +0800</pubDate><guid isPermaLink="false">http://www.xiaotustudy.com/new.asp?id=186</guid><fs:srclink>http://www.xiaotustudy.com/new.asp?id=186</fs:srclink><fs:srcfeed>http://www.xiaotustudy.com/rss.asp</fs:srcfeed><fs:itemid>feedsky/xiaotustudy/~7504326/268629832/5613264</fs:itemid></item><item><title>新概念第三册-第28课</title><link>http://www.xiaotustudy.com/new.asp?id=185</link><description>&lt;P align=center&gt;&lt;FONT size=4&gt;&lt;FONT face=Verdana&gt;Five pound too dear &lt;/FONT&gt;&lt;BR&gt;&lt;/FONT&gt;Small boats loaded with wares sped to the great liner as she was entering the harbour. Before she had anchored, the men from the boats had climbed on board and the decks were son covered with colourful rugs from Persia, silks from India, copper coffee pots, and beautiful handmade silverware. It was difficult not to be tempted. Many of the tourists on board had begun bargaining with the tradesmen, but I decide not to buy anything until I had disembarked.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I had no sooner got off the ship than I was assailed by a man who wanted to sell me a diamond ring. I had no intention of buying one, but I could not conceal the fact that I was impressed by the size of the diamonds. Some of them were as big as marbles. The man went to great lengths to prove that the diamonds were real. As we were walking past a shop, he held a diamond firmly against the window and made a deep impression in the glass. It took me over half an hour to get rid of him.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; The next man to approach me was selling expensive pens and watches. I examined one of the pens closely. It certainly looked genuine. At the base of the gold cap, the words 'made in the U.S.A' had been nearly inscribed. The man said that the pen was worth $50, but as a special favour, he would let me have it for $30. I shook my head and held up five fingers indicating that I was willing to pay $5. Gesticulating wildly, the man acted as if he found my offer outrageous, but he eventually reduced the price to $10. Shrugging my shoulders, I began to walk away when, a moment later, he ran after me and thrust the pen into my hands. Though he kept throwing up his arms in despair, he readily accepted the $5 I have him. I felt especially pleased with my wonderful bargain -- until I got back to the ship. No matter how hard I tried, it was impossible to fill this beautiful pen with ink and to this day it has never written a single world! &lt;/P&gt;
&lt;P&gt;New words and expressions 生词和短语&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wares&lt;BR&gt;n.&amp;nbsp;&amp;nbsp; 货物，商品&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; anchor&lt;BR&gt;v.&amp;nbsp;&amp;nbsp; 停航下锚&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; deck&lt;BR&gt;n.&amp;nbsp;&amp;nbsp; 甲板&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; silverware&lt;BR&gt;n.&amp;nbsp;&amp;nbsp; 银器&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tempt&lt;BR&gt;v.&amp;nbsp;&amp;nbsp; 吸引；引诱&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bargain&lt;BR&gt;v.&amp;nbsp;&amp;nbsp; 讨价还价&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; disembark&lt;BR&gt;v.&amp;nbsp;&amp;nbsp; 下船上岸&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; assail&lt;BR&gt;v.&amp;nbsp;&amp;nbsp; 纠缠&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; marble&lt;BR&gt;n.&amp;nbsp;&amp;nbsp; 小玻璃球&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inscribe&lt;BR&gt;v.&amp;nbsp;&amp;nbsp; 刻写，雕&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; favour&lt;BR&gt;n.&amp;nbsp;&amp;nbsp; 好处，优惠&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gesticulate&lt;BR&gt;v.&amp;nbsp;&amp;nbsp; （讲话时）打手势&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; outrageous&lt;BR&gt;adj. 出人预料的；令人不悦的&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; thrust&lt;BR&gt;v.&amp;nbsp;&amp;nbsp; 硬塞给&lt;/P&gt;
&lt;P&gt;参考译文&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 当一艘大型班船进港的时候，许多小船载着各种杂货快速向客轮驶来。大船还未下锚。小船上的人就纷纷爬上客轮。一会儿工夫，甲板上就摆满了色彩斑斓的波斯地毯。印度丝绸。铜咖啡壶以及手工制作的漂亮的银器。要想不为这些东西所动心是很困难的。船上许多游客开始同商贩讨价还价起来，但我打定主意上岸之前什么也不买。&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 我刚下船，就被一个人截住，他向我兜售一枚钻石戒指。我根本不想买，但我不能掩饰这样一个事实：其钻石之大给我留下了深刻的印象。有的钻石像玻璃球那么大。那人竭力想证明那钻石是真货。我们路过一家商店时，他将一颗钻石使劲地往橱窗上一按，在玻璃上留下一道深痕。我花了半个多小时才摆脱了他的纠缠。&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 向我兜售的第二个人是卖名贵钢笔和手表的。我仔细察看了一枝钢笔，那看上去确实不假，金笔帽下方整齐地刻有“美国制造”字样。那人说那支笔值50英镑，作为特别优惠，他愿意让我出30英镑成交。我摇摇头，伸出5根手指表示我只愿出5镑钱。那人激动地打着手势，仿佛我的出价使他不能容忍。但他终于把价钱降到了10英镑。我耸耸肩膀掉头走开了。一会儿，他突然从后追了上来，把笔塞到我手里。虽然他绝望地举起双手，但他毫不迟疑地收下了我付给他的5镑钱。在回到船上之前，我一直为我的绝妙的讨价还价而洋洋得意。然而不管我如何摆弄，那枝漂亮的钢笔就是吸不进墨水来。直到今天，那枝笔连一个字也没写过！&lt;BR&gt;&lt;/P&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/268629851/xiaotustudy/feedsky/s.gif?r=http://www.xiaotustudy.com/new.asp?id=185&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/xiaotustudy/268629851/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/xiaotustudy/268629851/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Tue, 01 Sep 2009 04:49:24 +0800</pubDate><guid isPermaLink="false">http://www.xiaotustudy.com/new.asp?id=185</guid><fs:srclink>http://www.xiaotustudy.com/new.asp?id=185</fs:srclink><fs:srcfeed>http://www.xiaotustudy.com/rss.asp</fs:srcfeed><fs:itemid>feedsky/xiaotustudy/~7504326/268629851/5613264</fs:itemid></item><item><title>新概念第三册-第27课</title><link>http://www.xiaotustudy.com/new.asp?id=184</link><description>&lt;P align=center&gt;&lt;FONT size=4&gt;Nothing to sell and nothing to buy&lt;/FONT&gt; &lt;BR&gt;It has been said that everyone lives by selling something. In the light of this statement, teachers live by selling knowledge, philosophers by selling wisdom and priests by selling spiritual comfort. Though it may be possible to measure the value of material good in terms of money, it is extremely difficult to estimate the true value of the services which people perform for us. There are times when we would willingly give everything we possess to save our lives, yet we might grudge paying a surgeon a high fee for offering us precisely this service. The conditions of society are such that skills have to be paid for in the same way that goods are paid for at a shop. Everyone has something to sell.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Tramps seem to be the only exception to this general rule. Beggars almost sell themselves as human being to arouse the pity of passers-by. But real tramps are not beggars. They have nothing to sell and require nothing from others. In seeking independence, they do not sacrifice their human dignity. A tramp may ask you for money, but he will never ask you to feel sorry for him. He has deliberately chosen to lead the life he leads and is fully aware of the consequences. He may never be sure where the next meal is coming from, but his is free from the thousands of anxieties which afflict other people. His few material possessions make it possible for him to move from place to place with ease. By having to sleep in the open, he gets far closer to the world of nature than most of us ever do. He may hunt, beg, or stead occasionally to keep himself alive; he may even, in times of real need, do a little work; but he will never sacrifice his freedom. We often speak of my even, in times of real need, do a little work; but he will never sacrifice his freedom. We often speak of tramps with contempt and put them in the same class as beggars, but how many of us can honestly say that we have not felt a little envious of their simple way of life and their freedom from care? &lt;/P&gt;
&lt;P&gt;New words and expressions 生词和短语&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; philosopher&lt;BR&gt;n.&amp;nbsp;&amp;nbsp; 哲学家&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wisdom&lt;BR&gt;n.&amp;nbsp;&amp;nbsp; 智慧&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; priest&lt;BR&gt;n.&amp;nbsp;&amp;nbsp; 牧师&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; spiritual&lt;BR&gt;adj. 精神上的&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; grudge&lt;BR&gt;v.&amp;nbsp;&amp;nbsp; 不愿给，舍不得给&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; surgeon&lt;BR&gt;n.&amp;nbsp;&amp;nbsp; 外科大夫&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; passer-by&lt;BR&gt;n.&amp;nbsp;&amp;nbsp; 过路人（复数 passers-by)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dignity&lt;BR&gt;n.&amp;nbsp;&amp;nbsp; 尊严&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; deliberately&lt;BR&gt;adv. 故意地&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; consequence&lt;BR&gt;n.&amp;nbsp;&amp;nbsp; 后果，结果&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; afflict&lt;BR&gt;v.&amp;nbsp;&amp;nbsp; 使苦恼，折磨&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ease&lt;BR&gt;n.&amp;nbsp;&amp;nbsp; 容易&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nature&lt;BR&gt;n.&amp;nbsp;&amp;nbsp; 大自然&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; contempt&lt;BR&gt;n.&amp;nbsp;&amp;nbsp; 蔑视的&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; envious&lt;BR&gt;adj. 嫉妒的&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;参考译文&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 据说每个人都靠出售某种东西来维持生活。根据这种说法，教师靠卖知识为生，哲学家靠卖智慧为生，牧师靠卖精神安慰为生。虽然物质产品的价值可以用金钱来衡量，但要估算别人为我们为所提供的服务的价值却是极其困难的。有时，我们为了挽救生命，愿意付出我们所占有的一切。但就在外科大夫给我们提供了这种服务后，我们却可能为所支付的昂贵的费用而抱怨。社会上的情况就是如此，技术是必须付钱去买的，就像在商店里要花钱买商品一样。人人都有东西可以出售。&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 在这条普遍的规律前面，好像只有流浪汉是个例外，乞丐出售的几乎是他本人，以引起过路人的怜悯。但真正的流浪并不是乞丐。他们既不出售任何东西，也不需要从别人那儿得到任何东西，在追求独立自由的同时，他们并不牺牲为人的尊严。游浪汉可能会向你讨钱，但他从来不要你可怜他。他是故意在选择过那种生活的，并完全清楚以这种方式生活的后果。他可能从不知道下顿饭有无着落，但他不像有人那样被千万桩愁事所折磨。他几乎没有什么财产，这使他能够轻松自如地在各地奔波。由于被迫在露天睡觉，他比我们中许多人都离大自然近得多。为了生存，他可能会去打猎、乞讨，偶尔偷上一两回；确实需要的时候，他甚至可能干一点儿活，但他决不会牺牲自由。说起流浪汉，我们常常带有轻蔑并把他们与乞丐归为一类。但是，我们中有多少人能够坦率地说我们对流浪汉的简朴生活与无忧无虑的境况不感到有些羡慕呢？&lt;/P&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/268629894/xiaotustudy/feedsky/s.gif?r=http://www.xiaotustudy.com/new.asp?id=184&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/xiaotustudy/268629894/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/xiaotustudy/268629894/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Tue, 01 Sep 2009 04:48:15 +0800</pubDate><guid isPermaLink="false">http://www.xiaotustudy.com/new.asp?id=184</guid><fs:srclink>http://www.xiaotustudy.com/new.asp?id=184</fs:srclink><fs:srcfeed>http://www.xiaotustudy.com/rss.asp</fs:srcfeed><fs:itemid>feedsky/xiaotustudy/~7504326/268629894/5613264</fs:itemid></item><item><title>新概念第三册-第26课</title><link>http://www.xiaotustudy.com/new.asp?id=183</link><description>&lt;P align=center&gt;&lt;FONT size=4&gt;a large biscuit tin&lt;/FONT&gt; &lt;BR&gt;&lt;FONT size=2&gt;No one can avoid being influenced by advertisements. Much as we may pride ourselves on our good taste, we are no longer free to choose the things we want, for advertising exerts a subtle influence on us. In their efforts to persuade us to buy this or that product, advertisers have made a close study of human nature and have classified all our little weaknesses.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Advertisers discovered years ago that all of us love to get something for nothing. An advertisement which begins with the magic word FREE can rarely go wrong. These days, advertisers not only offer free samples, but free cars, free houses, and free trips round the world as well. They devise hundreds of competitions which will enable us to win huge sums of money. Radio and television have made it possible for advertisers to capture the attention of millions of people in this way.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; During a radio programme, a company of biscuit manufacturers once asked listeners to bake biscuits and send them to their factory. They offered to pay $10 a pound for the biggest biscuit baked by a listener. The response to this competition was tremendous. Before long, biscuits of all shapes and sizes began arriving at the factory. One lady brought in a biscuit on a wheelbarrow. It weighed nearly 500 pounds. A little later, a man came along with a biscuit which occupied the whole boot of his car. All the biscuits that were sent were carefully weighed. The largest was 713 pounds. It seemed certain that this would win the prize. But just before the competition closed, a lorry arrived at the factory with a truly colossal biscuit which weighed 2,400 pounds. It had been baked by a college student who had used over 1,000 pounds of flour, 800 pounds of sugar, 200 pounds of fat, and 400 pounds of various other ingredients. It was so heavy that a crane had to be used to remove it from the lorry. The manufacturers had to pay more money than they had anticipated, or they bought the biscuit from the student for $24,000. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;New words and expressions 生词和短语&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; influence&lt;BR&gt;v.&amp;nbsp;&amp;nbsp; 影响 &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pride&lt;BR&gt;v.&amp;nbsp;&amp;nbsp; 骄傲&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; taste&lt;BR&gt;n.&amp;nbsp;&amp;nbsp; 鉴赏力&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exert&lt;BR&gt;v.&amp;nbsp;&amp;nbsp; 施加&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; subtle&lt;BR&gt;aj.&amp;nbsp; 微妙的，难以捉摸的&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; advertiser&lt;BR&gt;n.&amp;nbsp;&amp;nbsp; 做广告的人&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; classify&lt;BR&gt;v.&amp;nbsp;&amp;nbsp; 分类&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; magic&lt;BR&gt;adj. 有奇妙作用&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sample&lt;BR&gt;n.&amp;nbsp;&amp;nbsp; 样品&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; devise&lt;BR&gt;v.&amp;nbsp;&amp;nbsp; 设计，想出&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; capture&lt;BR&gt;v.&amp;nbsp;&amp;nbsp; 吸引，赢得&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; manufacturer&lt;BR&gt;n.&amp;nbsp;&amp;nbsp; 生产厂家，制造商&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wheelbarrow&lt;BR&gt;n.&amp;nbsp;&amp;nbsp; 独轮手推车&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; boot&lt;BR&gt;n.&amp;nbsp; （汽车尾部的）行李箱&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ingredient&lt;BR&gt;n.&amp;nbsp;&amp;nbsp; 配料&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; crane&lt;BR&gt;n.&amp;nbsp;&amp;nbsp; 起重机&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; anticipate&lt;BR&gt;v.&amp;nbsp;&amp;nbsp; 预期，预料&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;参考译文&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 没有人能避免受广告的影响。尽管我们可以自夸自己的鉴赏力如何敏锐，但我们已经无法独立自主地选购自己所需的东西了。这是因为广告在我们身上施加着一种潜移默化的影响。做广告的人在力图劝说我们买下这种产品或那种产品之前，已经仔细地研究了人的本性，并把人的弱点进行了分类。&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 做广告的人们多年前就发现我们大家都喜欢免费得到东西。凡是用“免费”这个神奇的词开头的广告很少会失败的。目前，做广告的人不仅提供免费样品，而且还提供免费汽车，免费住房，免费周游世界。他们设计数以百计的竞赛，竞赛中有人可赢得巨额奖金。电台、电视使做广告的人可以用这种手段吸引成百万人的注意力。&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 有一次，在电台播放的节目里，一个生产饼干的公司请听众烘制饼干送到他们的工厂去。他们愿意以每磅10美元的价钱买下由听众烘制的最大的饼干。这次竞赛在听众中引起极其热烈的反响。不久，形状各异，大小不一的饼干陆续送到工厂。一位女士用手推车运来一个饼干，重达500磅左右。相隔不一会儿，一个男子也带来一个大饼干，那个饼干把汽车的行李箱挤得满满的。凡送来的饼干都仔细地称量。最重的一个达713磅，看来这个饼干获奖无疑了。但就在竞赛截止时间将到之际，一辆卡车驶进了工厂，运来了一个特大无比、重达2,400磅的饼干。它是由一个大学生烘制的，用去1,000多磅的面粉、800磅食糖、200磅动物脂肪及400磅其他各种原料。饼干份量太重了，用了一台起重机才把它从卡车上卸下。饼干公司不得不付出比他们预计多得多的钱，因为为买下那学生烘制的饼干他们支付了24,000美元。&lt;/FONT&gt;&lt;BR&gt;&lt;/P&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/268629914/xiaotustudy/feedsky/s.gif?r=http://www.xiaotustudy.com/new.asp?id=183&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/xiaotustudy/268629914/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/xiaotustudy/268629914/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Tue, 01 Sep 2009 04:46:46 +0800</pubDate><guid isPermaLink="false">http://www.xiaotustudy.com/new.asp?id=183</guid><fs:srclink>http://www.xiaotustudy.com/new.asp?id=183</fs:srclink><fs:srcfeed>http://www.xiaotustudy.com/rss.asp</fs:srcfeed><fs:itemid>feedsky/xiaotustudy/~7504326/268629914/5613264</fs:itemid></item><item><title>java的泛型</title><link>http://www.xiaotustudy.com/new.asp?id=182</link><description>&lt;P&gt;在JAVA1.5即5.0以后，java添加一个重要的内容，就是泛型，为什么要用泛型呢，下面给出泛型的应用：&lt;BR&gt;&lt;FONT face=Verdana&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;一.什么是Generics?&lt;/P&gt;
&lt;P&gt;Generics可以称之为参数类型(parameterized types),由编译器来验证从客户端将一种类型传送给某一对象的机制。如Java.util.ArrayList,&lt;/P&gt;
&lt;P&gt;编译器可以用Generics来保证类型安全。&lt;BR&gt;在我们深入了解Generics之前,我们先来看一看当前的java 集合框架（Collection)。在j2SE1.4中所有集合的Root Interface是Collection&lt;BR&gt;Collections example without genericity: Example 1&lt;/P&gt;
&lt;P&gt;1 protected void collectionsExample() {&lt;BR&gt;2&amp;nbsp; ArrayList list = new ArrayList();&lt;BR&gt;3&amp;nbsp; list.add(new String(&quot;test string&quot;));&lt;BR&gt;4&amp;nbsp; list.add(new Integer(9)); // purposely placed here to create a runtime ClassCastException&lt;BR&gt;5&amp;nbsp; inspectCollection(list);&lt;BR&gt;6 }&lt;BR&gt;7&lt;BR&gt;8&lt;BR&gt;9 protected void inspectCollection(Collection aCollection) {&lt;BR&gt;10&amp;nbsp; Iterator i = aCollection.iterator();&lt;BR&gt;11&amp;nbsp; while (i.hasNext()) {&lt;BR&gt;12&amp;nbsp;&amp;nbsp; String element = (String) i.next();&lt;BR&gt;13&amp;nbsp; }&lt;BR&gt;14 }&lt;BR&gt;&amp;lt;/pre&amp;gt;&lt;/P&gt;
&lt;P&gt;以上的样例程序包含的两个方法，collectionExample方法建立了一个简单的集合类型ArrayList，并在ArrayList中增加了一个String和一个Integer对象.而在inspecCollection方法中，我们迭代这个ArrayList用String进行Cast。我们看第二个方法，就出现了一个问题,Collection在内部用的是Object，而我们要取出Collection中的对象时,需要进行Cast，那么开发者必需用实际的类型进行Cast,像这种向下造型，编译器无&lt;/P&gt;
&lt;P&gt;法进行检查,如此一来我们就要冒在代码在运行抛出ClassCastException的危险。我们看inspecCollection方法，编译时没有问题，但在运行时就会抛出ClassCastException异常。所以我们一定要远离这个重大的运行时错误&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;二.使用Generics&lt;BR&gt;从上一章节中的CassCastException这种异常，我们期望在代码编译时就能够捕捉到,下面我们使用范型修改上一章的样例程序。&lt;BR&gt;//Example 2&lt;BR&gt;&amp;lt;PRE class=java name=&quot;code&quot;&amp;gt; &lt;BR&gt;1 protected void collectionsExample() {&lt;BR&gt;2&amp;nbsp; ArrayList&amp;lt;String&amp;gt; list = new ArrayList&amp;lt;String&amp;gt;();&lt;BR&gt;3&amp;nbsp; list.add(new String(&quot;test string&quot;));&lt;BR&gt;4&amp;nbsp; // list.add(new Integer(9)); this no longer compiles&lt;BR&gt;5&amp;nbsp; inspectCollection(list);&lt;BR&gt;6 }&lt;BR&gt;7 &lt;BR&gt;8 &lt;BR&gt;9 protected void inspectCollection(Collection&amp;lt;String&amp;gt; aCollection) {&lt;BR&gt;10&amp;nbsp; Iterator&amp;lt;String&amp;gt; i = aCollection.iterator();&lt;BR&gt;11&amp;nbsp; while(i.hasNext()) {&lt;BR&gt;12&amp;nbsp;&amp;nbsp; String element = i.next();&lt;BR&gt;13&amp;nbsp; }&lt;BR&gt;14 }&lt;BR&gt;&amp;lt;/pre&amp;gt;&lt;/P&gt;
&lt;P&gt;从上面第2行我们在创建ArrayList时使用了新语法，在JDK1.5中所有的Collection都加入了Generics的声明。例:&lt;BR&gt;//Example 3&lt;BR&gt;&amp;lt;PRE class=java name=&quot;code&quot;&amp;gt; &lt;BR&gt;1 public class ArrayList&amp;lt;E&amp;gt; extends AbstractList&amp;lt;E&amp;gt; {&lt;BR&gt;2&amp;nbsp; // details omitted...&lt;BR&gt;3&amp;nbsp; public void add(E element) {&lt;BR&gt;4&amp;nbsp;&amp;nbsp; // details omitted&lt;BR&gt;5&amp;nbsp; }&lt;BR&gt;6&amp;nbsp; public Iterator&amp;lt;E&amp;gt; iterator() {&lt;BR&gt;7&amp;nbsp;&amp;nbsp; // details omitted&lt;BR&gt;8&amp;nbsp; }&lt;BR&gt;9 }&lt;BR&gt;&amp;lt;/pre&amp;gt;&lt;/P&gt;
&lt;P&gt;这个E是一个类型变量，并没有对它进行具体类型的定义,它只是在定义ArrayList时的类型占位符,在Example 2中的我们在定义ArrayList的实&lt;/P&gt;
&lt;P&gt;例时用String绑定在E上,当我们用add(E element)方法向ArrayList中增加对象时, 那么就像下面的写法一样： public void add(String element)；因为在ArrayList所有方法都会用String来替代E,无论是方法的参数还是返回值。这时我们在看Example 2中的第四行，编译就会反映出编译错误。&lt;BR&gt;所以在java中增加Generics主要的目的是为了增加类型安全。&lt;/P&gt;
&lt;P&gt;通过上面的简单的例子我们看到使用Generics的好处有：&lt;BR&gt;1.在类型没有变化时，Collection是类型安全的。&lt;BR&gt;2.内在的类型转换优于在外部的人工造型。&lt;BR&gt;3.使Java 接口更加强壮,因为它增加了类型。&lt;BR&gt;4.类型的匹配错误在编译阶段就可以捕捉到，而不是在代码运行时。&lt;/P&gt;
&lt;P&gt;受约束类型变量&lt;BR&gt;虽然许多Class被设计成Generics，但类型变量可以是受限的&lt;BR&gt;public class C1&amp;lt;T extends Number&amp;gt; { }&lt;BR&gt;public class C2&amp;lt;T extends Person &amp;amp; Comparable&amp;gt; { } &lt;BR&gt;第一个T变量必须继承Number，第二个T必须继承Person和实现Comparable&lt;/P&gt;
&lt;P&gt;三.Generics 方法&lt;/P&gt;
&lt;P&gt;像Generics类一样，方法和构造函数也可以有类型参数。方法的参数的返回值都可以有类型参数，进行Generics。&lt;BR&gt;//Example 4&lt;BR&gt;1 public &amp;lt;T extends Comparable&amp;gt; T max(T t1, T t2) {&lt;BR&gt;2&amp;nbsp; if (t1.compareTo(t2) &amp;gt; 0)&lt;BR&gt;3&amp;nbsp;&amp;nbsp; return t1;&lt;BR&gt;4&amp;nbsp; else return t2;&lt;BR&gt;5 }&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;这里，max方法的参数类型为单一的T类型，而T类型继承了Comparable，max的参数和返回值都有相同的超类。下面的Example 5显示了max方法的几个约束。&lt;BR&gt;//Example 5　&lt;BR&gt;1 Integer iresult = max(new Integer(100), new Integer(200));&lt;BR&gt;2 String sresult = max(&quot;AA&quot;, &quot;BB&quot;);&lt;BR&gt;3 Number nresult = max(new Integer(100), &quot;AAA&quot;); // does not compile&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;在Example 5第1行参数都为Integer，所以返回值也是Integer，注意返回值没有进行造型。&lt;BR&gt;在Example 5第2行参数都为String，所以返回值也是String，注意返回值没有进行造型。以上都调用了同一个方法。&lt;BR&gt;在Example 5第3行产生以下编译错误：&lt;BR&gt;Example.java:10: incompatible types&lt;BR&gt;found&amp;nbsp; : java.lang.Object&amp;amp;java.io.Serializable&amp;amp;java.lang.Comparable&amp;lt;?&amp;gt;&lt;BR&gt;required: java.lang.Number&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Number nresult = max(new Integer(100), &quot;AAA&quot;);&lt;/P&gt;
&lt;P&gt;这个错误发生是因为编译器无法确定返回值类型，因为String和Integer都有相同的超类Object,注意就算我们修正了第三行，这行代码在运行仍然会报错，因为比较了不同的对象。&lt;/P&gt;
&lt;P&gt;四.向下兼容&lt;BR&gt;任何一个新的特色在新的JDK版本中出来后，我们首先关心的是如何于以前编写的代码兼容。也就是说我们编写的Example 1程序不需要任何的改变就可以运行,但是编译器会给出一个&quot;ROW TYPE&quot;的警告。在JDK1.4中编写的代码如何在JVM1.5中完全兼容运行,我们要人工进行一个:Type erasure处理过程&lt;/P&gt;
&lt;P&gt;五.通配符&lt;/P&gt;
&lt;P&gt;//Example 6&lt;BR&gt;List&amp;lt;String&amp;gt; stringList = new ArrayList&amp;lt;String&amp;gt;(); //1&lt;BR&gt;List&amp;lt;Object&amp;gt; objectList = stringList ;//2&lt;BR&gt;objectList .add(new Object()); // 3&lt;BR&gt;String s = stringList .get(0);//4&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;乍一看，Example &lt;/P&gt;
&lt;P&gt;6是正确的。但stringList本意是存放String类型的ArrayList,而objectList中可以存入任何对象，当在第3行进行处理时，stringList也就无法保证是String类型的ArrayList,此时编译器不允许这样的事出现，所以第3行将无法编译。&lt;/P&gt;
&lt;P&gt;//Example 7&lt;BR&gt;void printCollection(Collection&amp;lt;Object&amp;gt; c) &lt;BR&gt;{ for (Object e : c) { &lt;BR&gt;System.out.println(e);&lt;BR&gt;}}&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;Example 7的本意是打印所有Collection的对象,但是正如Example 6所说的，编译会报错，此时就可以用通配符“？”来修改Example 7&lt;/P&gt;
&lt;P&gt;//Example 8&lt;BR&gt;void printCollection(Collection&amp;lt;?&amp;gt; c) &lt;BR&gt;{ for (Object e : c) { &lt;BR&gt;System.out.println(e);&lt;BR&gt;}}&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;Example 8中所有Collection类型就可以方便的打印了&lt;/P&gt;
&lt;P&gt;有界通配符 &amp;lt;T extends Number&amp;gt;(上界) &amp;lt;T super Number&amp;gt;(下界) &lt;/P&gt;
&lt;P&gt;六.创建自己的范型&lt;BR&gt;以下代码来自http://www.java2s.com/ExampleCode/Language-Basics&lt;BR&gt;1.一个参数的Generics&lt;BR&gt;//Example 9(没有使用范型)&lt;BR&gt;class NonGen {&amp;nbsp; &lt;BR&gt;&amp;nbsp; Object ob; // ob is now of type Object &lt;BR&gt;&amp;nbsp; // Pass the constructor a reference to&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp; // an object of type Object &lt;BR&gt;&amp;nbsp; NonGen(Object o) {&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ob = o;&amp;nbsp; &lt;BR&gt;&amp;nbsp; }&amp;nbsp; &lt;BR&gt;&amp;nbsp; // Return type Object. &lt;BR&gt;&amp;nbsp; Object getob() {&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return ob;&amp;nbsp; &lt;BR&gt;&amp;nbsp; }&amp;nbsp; &lt;BR&gt;&amp;nbsp; // Show type of ob.&amp;nbsp; &lt;BR&gt;&amp;nbsp; void showType() {&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(&quot;Type of ob is &quot; +&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ob.getClass().getName());&amp;nbsp; &lt;BR&gt;&amp;nbsp; }&amp;nbsp; &lt;BR&gt;}&amp;nbsp; &lt;BR&gt;// Demonstrate the non-generic class.&amp;nbsp; &lt;BR&gt;public class NonGenDemo {&amp;nbsp; &lt;BR&gt;&amp;nbsp; public static void main(String args[]) {&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NonGen iOb;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Create NonGen Object and store &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // an Integer in it. Autoboxing still occurs. &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; iOb = new NonGen(88);&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Show the type of data used by iOb. &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; iOb.showType(); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Get the value of iOb. &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // This time, a cast is necessary. &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int v = (Integer) iOb.getob();&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(&quot;value: &quot; + v);&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println();&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Create another NonGen object and&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // store a String in it. &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NonGen strOb = new NonGen(&quot;Non-Generics Test&quot;);&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Show the type of data used by strOb. &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; strOb.showType(); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Get the value of strOb. &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Again, notice that a cast is necessary.&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String str = (String) strOb.getob();&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(&quot;value: &quot; + str);&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // This compiles, but is conceptually wrong! &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; iOb = strOb; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; v = (Integer) iOb.getob(); // runtime error! &lt;BR&gt;&amp;nbsp; }&amp;nbsp; &lt;BR&gt;}&lt;BR&gt;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;//Example 10(使用范型)&lt;BR&gt;class Example1&amp;lt;T&amp;gt;{&lt;BR&gt;&amp;nbsp;private T t;&lt;BR&gt;&amp;nbsp;Example1(T o){&lt;BR&gt;&amp;nbsp; this.t=o;&lt;BR&gt;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;T getOb(){&lt;BR&gt;&amp;nbsp; return t;&lt;BR&gt;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;void ShowObject(){&lt;BR&gt;&amp;nbsp; System.out.println(&quot;对象的类型是：&quot;+t.getClass().getName());&lt;BR&gt;&amp;nbsp;}&lt;BR&gt;}&lt;BR&gt;public class GenericsExample1 {&lt;/P&gt;
&lt;P&gt;&amp;nbsp;/**&lt;BR&gt;&amp;nbsp; * @param args&lt;BR&gt;&amp;nbsp; */&lt;BR&gt;&amp;nbsp;public static void main(String[] args) {&lt;BR&gt;&amp;nbsp; // TODO Auto-generated method stub&lt;BR&gt;&amp;nbsp; Example1&amp;lt;Integer&amp;gt; examplei=new Example1&amp;lt;Integer&amp;gt;(100);&lt;BR&gt;&amp;nbsp; examplei.ShowObject();&lt;BR&gt;&amp;nbsp; System.out.println(&quot;对象是：&quot;+examplei.getOb());&lt;BR&gt;&amp;nbsp; Example1&amp;lt;String&amp;gt; examples=new Example1&amp;lt;String&amp;gt;(&quot;Bill&quot;);&lt;BR&gt;&amp;nbsp; examples.ShowObject();&lt;BR&gt;&amp;nbsp; System.out.println(&quot;对象是：&quot;+examples.getOb());&lt;BR&gt;&amp;nbsp;}&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;我们来看Example 9没有使用范型，所以我们需要进行造型，而Example 10我们不需要任何的造型&lt;/P&gt;
&lt;P&gt;2.二个参数的Generics&lt;/P&gt;
&lt;P&gt;//Example 11&lt;BR&gt;class TwoGen&amp;lt;T, V&amp;gt; { &lt;BR&gt;&amp;nbsp;&amp;nbsp; T ob1; &lt;BR&gt;&amp;nbsp;&amp;nbsp; V ob2; &lt;BR&gt;&amp;nbsp;&amp;nbsp; // Pass the constructor a reference to&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp; // an object of type T. &lt;BR&gt;&amp;nbsp;&amp;nbsp; TwoGen(T o1, V o2) { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ob1 = o1; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ob2 = o2; &lt;BR&gt;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;&amp;nbsp;&amp;nbsp; // Show types of T and V. &lt;BR&gt;&amp;nbsp;&amp;nbsp; void showTypes() { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(&quot;Type of T is &quot; + &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ob1.getClass().getName()); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(&quot;Type of V is &quot; + &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ob2.getClass().getName()); &lt;BR&gt;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;&amp;nbsp;&amp;nbsp; T getob1() { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return ob1; &lt;BR&gt;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;&amp;nbsp;&amp;nbsp; V getob2() { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return ob2; &lt;BR&gt;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;&amp;nbsp;} &lt;/P&gt;
&lt;P&gt;public class GenericsExampleByTwoParam {&lt;/P&gt;
&lt;P&gt;&amp;nbsp;/**&lt;BR&gt;&amp;nbsp; * @param args&lt;BR&gt;&amp;nbsp; */&lt;BR&gt;&amp;nbsp;public static void main(String[] args) {&lt;BR&gt;&amp;nbsp; // TODO Auto-generated method stub&lt;BR&gt;&amp;nbsp; TwoGen&amp;lt;Integer, String&amp;gt; tgObj = &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new TwoGen&amp;lt;Integer, String&amp;gt;(88, &quot;Generics&quot;); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Show the types. &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tgObj.showTypes(); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Obtain and show values. &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int v = tgObj.getob1(); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(&quot;value: &quot; + v); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String str = tgObj.getob2(); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(&quot;value: &quot; + str); &lt;BR&gt;&amp;nbsp;&amp;nbsp; } &lt;/P&gt;
&lt;P&gt;&amp;nbsp;}&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;3.Generics的Hierarchy&lt;/P&gt;
&lt;P&gt;//Example 12&lt;BR&gt;class Stats&amp;lt;T extends Number&amp;gt; {&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp; T[] nums; // array of Number or subclass &lt;BR&gt;&amp;nbsp;&amp;nbsp; // Pass the constructor a reference to&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp; // an array of type Number or subclass. &lt;BR&gt;&amp;nbsp;&amp;nbsp; Stats(T[] o) {&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nums = o;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp; }&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp; // Return type double in all cases. &lt;BR&gt;&amp;nbsp;&amp;nbsp; double average() {&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; double sum = 0.0; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(int i=0; i &amp;lt; nums.length; i++)&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sum += nums[i].doubleValue(); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return sum / nums.length; &lt;BR&gt;&amp;nbsp;&amp;nbsp; }&amp;nbsp; &lt;BR&gt;&amp;nbsp;}&amp;nbsp; &lt;BR&gt;public class GenericsExampleByHierarchy {&lt;BR&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;/**&lt;BR&gt;&amp;nbsp; * @param args&lt;BR&gt;&amp;nbsp; */&lt;BR&gt;&amp;nbsp;public static void main(String[] args) {&lt;BR&gt;&amp;nbsp; // TODO Auto-generated method stub&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; Integer inums[] = { 1, 2, 3, 4, 5 }; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Stats&amp;lt;Integer&amp;gt; iob = new Stats&amp;lt;Integer&amp;gt;(inums);&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; double v = iob.average(); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(&quot;iob average is &quot; + v); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Double dnums[] = { 1.1, 2.2, 3.3, 4.4, 5.5 }; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Stats&amp;lt;Double&amp;gt; dob = new Stats&amp;lt;Double&amp;gt;(dnums);&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; double w = dob.average(); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(&quot;dob average is &quot; + w); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // This won't compile because String is not a &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // subclass of Number. &lt;BR&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String strs[] = { &quot;1&quot;, &quot;2&quot;, &quot;3&quot;, &quot;4&quot;, &quot;5&quot; }; &lt;BR&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Stats&amp;lt;String&amp;gt; strob = new Stats&amp;lt;String&amp;gt;(strs);&amp;nbsp;&amp;nbsp; &lt;BR&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; double x = strob.average(); &lt;BR&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(&quot;strob average is &quot; + v); &lt;BR&gt;&amp;nbsp;&amp;nbsp; }&amp;nbsp; &lt;BR&gt;&amp;nbsp;}&lt;BR&gt;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;4.使用通配符&lt;BR&gt;//Example 14&lt;BR&gt;class StatsWildCard&amp;lt;T extends Number&amp;gt; {&lt;BR&gt;&amp;nbsp;T[] nums; // array of Number or subclass&lt;BR&gt;&amp;nbsp;// Pass the constructor a reference to&lt;BR&gt;&amp;nbsp;// an array of type Number or subclass.&lt;BR&gt;&amp;nbsp;StatsWildCard(T[] o) {&lt;BR&gt;&amp;nbsp; nums = o;&lt;BR&gt;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;// Return type double in all cases.&lt;BR&gt;&amp;nbsp;double average() {&lt;BR&gt;&amp;nbsp; double sum = 0.0;&lt;BR&gt;&amp;nbsp; for (int i = 0; i &amp;lt; nums.length; i++)&lt;BR&gt;&amp;nbsp;&amp;nbsp; sum += nums[i].doubleValue();&lt;BR&gt;&amp;nbsp; return sum / nums.length;&lt;BR&gt;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;// Determine if two averages are the same.&lt;BR&gt;&amp;nbsp;// Notice the use of the wildcard.&lt;BR&gt;&amp;nbsp;boolean sameAvg(StatsWildCard&amp;lt;?&amp;gt; ob) {&lt;BR&gt;&amp;nbsp; if (average() == ob.average())&lt;BR&gt;&amp;nbsp;&amp;nbsp; return true;&lt;BR&gt;&amp;nbsp; return false;&lt;BR&gt;&amp;nbsp;}&lt;BR&gt;}&lt;/P&gt;
&lt;P&gt;public class GenericsExampleByWildcard {&lt;/P&gt;
&lt;P&gt;&amp;nbsp;/**&lt;BR&gt;&amp;nbsp; * @param args&lt;BR&gt;&amp;nbsp; */&lt;BR&gt;&amp;nbsp;public static void main(String[] args) {&lt;BR&gt;&amp;nbsp; // TODO Auto-generated method stub&lt;BR&gt;&amp;nbsp; Integer inums[] = { 1, 2, 3, 4, 5 };&lt;BR&gt;&amp;nbsp; StatsWildCard&amp;lt;Integer&amp;gt; iob = new StatsWildCard&amp;lt;Integer&amp;gt;(inums);&lt;BR&gt;&amp;nbsp; double v = iob.average();&lt;BR&gt;&amp;nbsp; System.out.println(&quot;iob average is &quot; + v);&lt;BR&gt;&amp;nbsp; Double dnums[] = { 1.1, 2.2, 3.3, 4.4, 5.5 };&lt;BR&gt;&amp;nbsp; StatsWildCard&amp;lt;Double&amp;gt; dob = new StatsWildCard&amp;lt;Double&amp;gt;(dnums);&lt;BR&gt;&amp;nbsp; double w = dob.average();&lt;BR&gt;&amp;nbsp; System.out.println(&quot;dob average is &quot; + w);&lt;BR&gt;&amp;nbsp; Float fnums[] = { 1.0F, 2.0F, 3.0F, 4.0F, 5.0F };&lt;BR&gt;&amp;nbsp; StatsWildCard&amp;lt;Float&amp;gt; fob = new StatsWildCard&amp;lt;Float&amp;gt;(fnums);&lt;BR&gt;&amp;nbsp; double x = fob.average();&lt;BR&gt;&amp;nbsp; System.out.println(&quot;fob average is &quot; + x);&lt;BR&gt;&amp;nbsp; // See which arrays have same average.&lt;BR&gt;&amp;nbsp; System.out.print(&quot;Averages of iob and dob &quot;);&lt;BR&gt;&amp;nbsp; if (iob.sameAvg(dob))&lt;BR&gt;&amp;nbsp;&amp;nbsp; System.out.println(&quot;are the same.&quot;);&lt;BR&gt;&amp;nbsp; else&lt;BR&gt;&amp;nbsp;&amp;nbsp; System.out.println(&quot;differ.&quot;);&lt;BR&gt;&amp;nbsp; System.out.print(&quot;Averages of iob and fob &quot;);&lt;BR&gt;&amp;nbsp; if (iob.sameAvg(fob))&lt;BR&gt;&amp;nbsp;&amp;nbsp; System.out.println(&quot;are the same.&quot;);&lt;BR&gt;&amp;nbsp; else&lt;BR&gt;&amp;nbsp;&amp;nbsp; System.out.println(&quot;differ.&quot;);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;}&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;5.使用边界通配符&lt;BR&gt;//Example 15&lt;BR&gt;class TwoD { &lt;BR&gt;&amp;nbsp; int x, y; &lt;BR&gt;&amp;nbsp; TwoD(int a, int b) { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; x = a; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; y = b; &lt;BR&gt;&amp;nbsp; } &lt;BR&gt;} &lt;BR&gt;// Three-dimensional coordinates. &lt;BR&gt;class ThreeD extends TwoD { &lt;BR&gt;&amp;nbsp; int z; &lt;BR&gt;&amp;nbsp; ThreeD(int a, int b, int c) { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; super(a, b); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; z = c; &lt;BR&gt;&amp;nbsp; } &lt;BR&gt;} &lt;BR&gt;// Four-dimensional coordinates. &lt;BR&gt;class FourD extends ThreeD { &lt;BR&gt;&amp;nbsp; int t; &lt;BR&gt;&amp;nbsp; FourD(int a, int b, int c, int d) { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; super(a, b, c); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; t = d;&amp;nbsp; &lt;BR&gt;&amp;nbsp; } &lt;BR&gt;} &lt;BR&gt;// This class holds an array of coordinate objects. &lt;BR&gt;class Coords&amp;lt;T extends TwoD&amp;gt; { &lt;BR&gt;&amp;nbsp; T[] coords; &lt;BR&gt;&amp;nbsp; Coords(T[] o) { coords = o; } &lt;BR&gt;} &lt;BR&gt;// Demonstrate a bounded wildcard. &lt;BR&gt;public class BoundedWildcard { &lt;BR&gt;&amp;nbsp; static void showXY(Coords&amp;lt;?&amp;gt; c) { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(&quot;X Y Coordinates:&quot;); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(int i=0; i &amp;lt; c.coords.length; i++) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(c.coords[i].x + &quot; &quot; + &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c.coords[i].y); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(); &lt;BR&gt;&amp;nbsp; } &lt;BR&gt;&amp;nbsp; static void showXYZ(Coords&amp;lt;? extends ThreeD&amp;gt; c) { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(&quot;X Y Z Coordinates:&quot;); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(int i=0; i &amp;lt; c.coords.length; i++) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(c.coords[i].x + &quot; &quot; + &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c.coords[i].y + &quot; &quot; + &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c.coords[i].z); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(); &lt;BR&gt;&amp;nbsp; } &lt;BR&gt;&amp;nbsp; static void showAll(Coords&amp;lt;? extends FourD&amp;gt; c) { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(&quot;X Y Z T Coordinates:&quot;); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(int i=0; i &amp;lt; c.coords.length; i++) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(c.coords[i].x + &quot; &quot; + &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c.coords[i].y + &quot; &quot; + &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c.coords[i].z + &quot; &quot; + &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c.coords[i].t); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(); &lt;BR&gt;&amp;nbsp; } &lt;BR&gt;&amp;nbsp; public static void main(String args[]) { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TwoD td[] = { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new TwoD(0, 0), &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new TwoD(7, 9), &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new TwoD(18, 4), &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new TwoD(-1, -23) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Coords&amp;lt;TwoD&amp;gt; tdlocs = new Coords&amp;lt;TwoD&amp;gt;(td);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(&quot;Contents of tdlocs.&quot;); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; showXY(tdlocs); // OK, is a TwoD &lt;BR&gt;//&amp;nbsp; showXYZ(tdlocs); // Error, not a ThreeD &lt;BR&gt;//&amp;nbsp; showAll(tdlocs); // Erorr, not a FourD &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Now, create some FourD objects. &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FourD fd[] = { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new FourD(1, 2, 3, 4), &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new FourD(6, 8, 14, 8), &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new FourD(22, 9, 4, 9), &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new FourD(3, -2, -23, 17) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Coords&amp;lt;FourD&amp;gt; fdlocs = new Coords&amp;lt;FourD&amp;gt;(fd);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(&quot;Contents of fdlocs.&quot;); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // These are all OK. &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; showXY(fdlocs);&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; showXYZ(fdlocs); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; showAll(fdlocs); &lt;BR&gt;&amp;nbsp; } &lt;BR&gt;} &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;6.ArrayList的Generics&lt;BR&gt;//Example 16&lt;BR&gt;public class ArrayListGenericDemo {&lt;BR&gt;&amp;nbsp; public static void main(String[] args) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ArrayList&amp;lt;String&amp;gt; data = new ArrayList&amp;lt;String&amp;gt;();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; data.add(&quot;hello&quot;);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; data.add(&quot;goodbye&quot;);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // data.add(new Date()); This won't compile!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Iterator&amp;lt;String&amp;gt; it = data.iterator();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (it.hasNext()) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String s = it.next();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(s);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp; }&lt;BR&gt;} &lt;/P&gt;
&lt;P&gt;&lt;BR&gt;7.HashMap的Generics&lt;BR&gt;//Example 17&lt;BR&gt;public class HashDemoGeneric {&lt;BR&gt;&amp;nbsp; public static void main(String[] args) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; HashMap&amp;lt;Integer,String&amp;gt; map = new HashMap&amp;lt;Integer,String&amp;gt;();&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; map.put(1, &quot;Ian&quot;);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; map.put(42, &quot;Scott&quot;);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; map.put(123, &quot;Somebody else&quot;);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String name = map.get(42);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(name);&lt;BR&gt;&amp;nbsp; }&lt;BR&gt;} &lt;/P&gt;
&lt;P&gt;&lt;BR&gt;8.接口的Generics&lt;BR&gt;//Example 18&lt;BR&gt;interface MinMax&amp;lt;T extends Comparable&amp;lt;T&amp;gt;&amp;gt; { &lt;BR&gt;&amp;nbsp; T min(); &lt;BR&gt;&amp;nbsp; T max(); &lt;BR&gt;} &lt;BR&gt;// Now, implement MinMax &lt;BR&gt;class MyClass&amp;lt;T extends Comparable&amp;lt;T&amp;gt;&amp;gt; implements MinMax&amp;lt;T&amp;gt; { &lt;BR&gt;&amp;nbsp; T[] vals; &lt;BR&gt;&amp;nbsp; MyClass(T[] o) { vals = o; } &lt;BR&gt;&amp;nbsp; // Return the minimum value in vals. &lt;BR&gt;&amp;nbsp; public T min() { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; T v = vals[0]; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(int i=1; i &amp;lt; vals.length; i++) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(vals[i].compareTo(v) &amp;lt; 0) v = vals[i]; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return v; &lt;BR&gt;&amp;nbsp; } &lt;BR&gt;&amp;nbsp; // Return the maximum value in vals. &lt;BR&gt;&amp;nbsp; public T max() { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; T v = vals[0]; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(int i=1; i &amp;lt; vals.length; i++) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(vals[i].compareTo(v) &amp;gt; 0) v = vals[i]; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return v; &lt;BR&gt;&amp;nbsp; } &lt;BR&gt;} &lt;BR&gt;public class GenIFDemo { &lt;BR&gt;&amp;nbsp; public static void main(String args[]) { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Integer inums[] = {3, 6, 2, 8, 6 }; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Character chs[] = {'b', 'r', 'p', 'w' }; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MyClass&amp;lt;Integer&amp;gt; iob = new MyClass&amp;lt;Integer&amp;gt;(inums); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MyClass&amp;lt;Character&amp;gt; cob = new MyClass&amp;lt;Character&amp;gt;(chs); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(&quot;Max value in inums: &quot; + iob.max()); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(&quot;Min value in inums: &quot; + iob.min()); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(&quot;Max value in chs: &quot; + cob.max()); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(&quot;Min value in chs: &quot; + cob.min()); &lt;BR&gt;&amp;nbsp; } &lt;BR&gt;}&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;9.Exception的Generics&lt;BR&gt;//Example 20&lt;BR&gt;interface Executor&amp;lt;E extends Exception&amp;gt; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; void execute() throws E;&lt;BR&gt;}&lt;/P&gt;
&lt;P&gt;public class GenericExceptionTest {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static void main(String args[]) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Executor&amp;lt;IOException&amp;gt; e =&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new Executor&amp;lt;IOException&amp;gt;() {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void execute() throws IOException&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // code here that may throw an&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // IOException or a subtype of&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // IOException&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e.execute();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch(IOException ioe) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(&quot;IOException: &quot; + ioe);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ioe.printStackTrace();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;}&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/268629932/xiaotustudy/feedsky/s.gif?r=http://www.xiaotustudy.com/new.asp?id=182&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/xiaotustudy/268629932/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/xiaotustudy/268629932/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Mon, 10 Aug 2009 07:14:16 +0800</pubDate><guid isPermaLink="false">http://www.xiaotustudy.com/new.asp?id=182</guid><fs:srclink>http://www.xiaotustudy.com/new.asp?id=182</fs:srclink><fs:srcfeed>http://www.xiaotustudy.com/rss.asp</fs:srcfeed><fs:itemid>feedsky/xiaotustudy/~7504326/268629932/5613264</fs:itemid></item><item><title>蔓延法的例子</title><link>http://www.xiaotustudy.com/new.asp?id=181</link><description>这是一个美国IT企业的面试题，原题大意是从一个文件中读取出可连通的城市对，给出两个城市，判断是否可连通，如果可连通就输出yes，不可连通就输出no，否则给出命令行帮助。&lt;BR&gt;&lt;BR&gt;其实判断连接状态不用遍历图，用蔓延法即可，具体做法就是从起始城市开始，依次改变其周边连通城市的连通状态，再从周边开始向周边连通城市蔓延，如果能蔓延到结束城市的周边可连通城市，则说明两个城市是完全可连通的。这种做法和多米诺骨牌效应很像。我姑且称之为蔓延法。&lt;BR&gt;&lt;BR&gt;代码如下：&amp;nbsp;&lt;BR&gt;&lt;PRE class=java name=&quot;code&quot;&gt;  
package com.sitinspring; 

import java.util.ArrayList; 
import java.util.List; 
import java.util.Map; 
import java.util.TreeMap; 

/** *//** 
 * 城市类 
 * @author HEYANG 
 * @since 2008-7-24 下午08:38:19 
 */ 
class City{ 
  // 城市名 
  String name; 
  // 可否连通 
  boolean isConnected; 
   
  public City(String name){ 
    this.name=name; 
    isConnected=false;     
  } 
} 

/** *//** 
 * 用蔓延法探测两个城市的可连通状态 
 * @author HEYANG 
 * @since 2008-7-24 下午09:09:30 
 */ 
public class RoadTestor{ 
  /** *//** 
   * 路线图 
   */ 
  private Map&lt;STRING,LIST&lt;CITY&gt;&amp;gt; map; 
   
  /** *//** 
   * 构造函数 
   * 
   */ 
  public RoadTestor(){ 
    map=new TreeMap&lt;STRING,LIST&lt;CITY&gt;&amp;gt;(); 
  } 
   
  /** *//** 
   * 添加两个城市间的连接 
   * @param startCity 
   * @param endCity 
   */ 
  private void addConnRoad(String startCity,String endCity){ 
    if(map.containsKey(startCity)){ 
      List&lt;CITY&gt; connCities=map.get(startCity); 
      connCities.add(new City(endCity)); 
      map.put(startCity,connCities); 
    } 
    else{ 
      List&lt;CITY&gt; connCities=new ArrayList&lt;CITY&gt;(); 
      connCities.add(new City(endCity)); 
      map.put(startCity,connCities); 
    } 
  } 
   
  /** *//** 
   * 添加双向道路 
   * @param startCity 
   * @param endCity 
   */ 
  public void addRoad(String startCity,String endCity){ 
    addConnRoad(startCity,endCity); 
    addConnRoad(endCity,startCity); 
  } 
   
  /** *//** 
   * 打印一个城市及其可连通的周边城市 
   * 
   */ 
  public void display(){ 
    for(String city:map.keySet()){ 
      // 本城 
      System.out.print(city+&quot;通向:&quot;); 
      // 可连通的周边城 
      for(City connCity:map.get(city)){ 
        System.out.print(connCity.name+&quot;,&quot;); 
      } 
       
      System.out.println(); 
    }    
  } 
   
  /** *//** 
   * 判断两城市是否能连通 
   * @param startCity 
   * @param endCity 
   * @return 
   */ 
  public boolean isConnected(String startCity,String endCity){ 
    // 调用蔓延法前重置所有城市的连通状态 
    resetAllCities(); 
     
    // 蔓延法递归调用 
    drop(startCity); 
     
    // 结束城市周边可通的城市有一个被蔓延到,则表示该城市可连通 
    for(City connCity:map.get(endCity)){ 
      if(connCity.isConnected){ 
        System.out.println(startCity+&quot; 可连通到 &quot;+endCity); 
        return true; 
      } 
    } 
     
    // 都不满足则表示两个城市无法连通 
    System.out.println(startCity+&quot; 不可连通到 &quot;+endCity); 
    return false; 
  } 
   
  /** *//** 
   * 蔓延法,从一个城市起依次改变周边城市的可连通状态 
   * @param cityName 
   */ 
  private void drop(String cityName){ 
    for(City connCity:map.get(cityName)){ 
      if(connCity.isConnected==false){ 
        connCity.isConnected=true; 
        drop(connCity.name); 
      } 
    }    
  } 
   
  /** *//** 
   * 重置每个城市的连通状态为否,在探测两城市连通情况前调用 
   */ 
  private void resetAllCities(){ 
    for(String city:map.keySet()){ 
      for(City connCity:map.get(city)){ 
        connCity.isConnected=false; 
      }      
    }  
  } 
   
  public static void main(String[] args){ 
    RoadTestor roadMap=new RoadTestor(); 
     
    // 我国诸城 
    roadMap.addRoad(&quot;乌鲁木齐&quot;, &quot;呼和浩特&quot;); 
    roadMap.addRoad(&quot;呼和浩特&quot;, &quot;北京&quot;); 
    roadMap.addRoad(&quot;北京&quot;, &quot;大连&quot;); 
    roadMap.addRoad(&quot;北京&quot;, &quot;西安&quot;);     
    roadMap.addRoad(&quot;北京&quot;, &quot;上海&quot;); 
    roadMap.addRoad(&quot;大连&quot;, &quot;上海&quot;); 
    roadMap.addRoad(&quot;西安&quot;, &quot;成都&quot;); 
    roadMap.addRoad(&quot;西安&quot;, &quot;南京&quot;); 
    roadMap.addRoad(&quot;上海&quot;, &quot;南京&quot;); 
    roadMap.addRoad(&quot;南京&quot;, &quot;广州&quot;); 
     
    // 美国诸城 
    roadMap.addRoad(&quot;旧金山&quot;, &quot;西雅图&quot;); 
    roadMap.addRoad(&quot;西雅图&quot;, &quot;纽约&quot;); 
    roadMap.addRoad(&quot;亚特兰大&quot;, &quot;西雅图&quot;); 
    roadMap.addRoad(&quot;纽约&quot;, &quot;北京&quot;);// 北京到纽约的航线 
     
    // 欧洲诸城 
    roadMap.addRoad(&quot;伦敦&quot;, &quot;巴黎&quot;); 
    roadMap.addRoad(&quot;巴黎&quot;, &quot;柏林&quot;); 
    roadMap.addRoad(&quot;柏林&quot;, &quot;伦敦&quot;); 
    // roadMap.addRoad(&quot;伦敦&quot;, &quot;上海&quot;);// 上海到伦敦的航线 

    // 展示每个城市和其周边城市的可连通情况 
    roadMap.display(); 
     
    // 依次探测三对城市的连通情况 
    roadMap.isConnected(&quot;大连&quot;, &quot;北京&quot;); 
    roadMap.isConnected(&quot;大连&quot;, &quot;纽约&quot;); 
    roadMap.isConnected(&quot;大连&quot;, &quot;伦敦&quot;); 
  } 
} 

  

控制台输出： 

上海通向:北京,大连,南京, 
乌鲁木齐通向:呼和浩特, 
亚特兰大通向:西雅图, 
伦敦通向:巴黎,柏林, 
北京通向:呼和浩特,大连,西安,上海,纽约, 
南京通向:西安,上海,广州, 
呼和浩特通向:乌鲁木齐,北京, 
大连通向:北京,上海, 
巴黎通向:伦敦,柏林, 
广州通向:南京, 
成都通向:西安, 
旧金山通向:西雅图, 
柏林通向:巴黎,伦敦, 
纽约通向:西雅图,北京, 
西安通向:北京,成都,南京, 
西雅图通向:旧金山,纽约,亚特兰大, 
大连 可连通到 北京 
大连 可连通到 纽约 
大连 不可连通到 伦敦 

&lt;/PRE&gt;&lt;LINK href=&quot;syntaxHighlighter/Styles/SyntaxHighlighter.css&quot; type=text/css rel=stylesheet&gt;&lt;/LINK&gt;
&lt;SCRIPT language=javascript src=&quot;syntaxHighlighter/js/shCore.js&quot;&gt;&lt;/SCRIPT&gt;

&lt;SCRIPT language=javascript src=&quot;syntaxHighlighter/js/shBrushJava.js&quot;&gt;&lt;/SCRIPT&gt;

&lt;SCRIPT language=javascript&gt;  
    window.onload = function () { 
            dp.SyntaxHighlighter.ClipboardSwf = &quot;syntaxHighlighter/js/clipboard.swf&quot;;  
            dp.SyntaxHighlighter.HighlightAll(&quot;code&quot;); 
} 
&lt;/SCRIPT&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/268629942/xiaotustudy/feedsky/s.gif?r=http://www.xiaotustudy.com/new.asp?id=181&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/xiaotustudy/268629942/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/xiaotustudy/268629942/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Mon, 10 Aug 2009 07:09:32 +0800</pubDate><guid isPermaLink="false">http://www.xiaotustudy.com/new.asp?id=181</guid><fs:srclink>http://www.xiaotustudy.com/new.asp?id=181</fs:srclink><fs:srcfeed>http://www.xiaotustudy.com/rss.asp</fs:srcfeed><fs:itemid>feedsky/xiaotustudy/~7504326/268629942/5613264</fs:itemid></item><item><title>song of ocarina</title><link>http://www.xiaotustudy.com/new.asp?id=180</link><description>&lt;P&gt;今天下班后，有点累，上网想找些好听的歌曲听听，终于皇天不负有心人，找到这首歌曲 “陶笛之声” 排箫加上陶笛再加上大钢琴 三种乐曲配合处一种空灵的浪漫的感觉，很喜欢，这里推荐给大家。&lt;/P&gt;
&lt;P&gt;1991年，法国达芬唱片公司发掘了Diego Modena这位天才笛箫演奏家以及Jean-Philippe Audin这位气质独特的大提琴演奏家，从而诞生了一个全新的音乐品牌——Ocarina（陶笛之歌）。&lt;BR&gt;&lt;BR&gt;Diego Modena &amp;amp; J-P. Audin （Song of ocarina）“[陶笛之歌]是91年法国及欧洲最受欢迎的演奏曲。 其同名专辑在11月推出后，不仅蝉联排行榜数周冠 军，而且高踞榜上达63周之久，成为92年法国最叫好又叫座的畅销专辑，其迷人魅力可见一斑！&lt;BR&gt;&lt;BR&gt;&lt;EMBED align=middle src=http://player.youku.com/player.php/sid/XMzEwNTI4MjQ=/v.swf width=480 height=400 type=application/x-shockwave-flash allowScriptAccess=&quot;sameDomain&quot; quality=&quot;high&quot;&gt;&lt;/EMBED&gt; &lt;/P&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/268629955/xiaotustudy/feedsky/s.gif?r=http://www.xiaotustudy.com/new.asp?id=180&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/xiaotustudy/268629955/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/xiaotustudy/268629955/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Fri, 31 Jul 2009 08:34:10 +0800</pubDate><guid isPermaLink="false">http://www.xiaotustudy.com/new.asp?id=180</guid><fs:srclink>http://www.xiaotustudy.com/new.asp?id=180</fs:srclink><fs:srcfeed>http://www.xiaotustudy.com/rss.asp</fs:srcfeed><fs:itemid>feedsky/xiaotustudy/~7504326/268629955/5613264</fs:itemid></item></channel></rss>
