﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-雨晨－rainTime-文章分类-JavaSE</title><link>http://www.blogjava.net/ycfdonews/category/28213.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 06 May 2008 08:46:08 GMT</lastBuildDate><pubDate>Tue, 06 May 2008 08:46:08 GMT</pubDate><ttl>60</ttl><item><title>getMethods 与 getDeclaredMethods 的区别</title><link>http://www.blogjava.net/ycfdonews/articles/198622.html</link><dc:creator>Ryan</dc:creator><author>Ryan</author><pubDate>Tue, 06 May 2008 00:26:00 GMT</pubDate><guid>http://www.blogjava.net/ycfdonews/articles/198622.html</guid><wfw:comment>http://www.blogjava.net/ycfdonews/comments/198622.html</wfw:comment><comments>http://www.blogjava.net/ycfdonews/articles/198622.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ycfdonews/comments/commentRss/198622.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ycfdonews/services/trackbacks/198622.html</trackback:ping><description><![CDATA[<p><strong><font color="#0000ff">转自http://developingnizi.54bk.com <br />
getMethods</font></strong><br />
public Method[] getMethods()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throws SecurityException返回一个包含某些 Method 对象的数组，这些对象反映此 Class 对象所表示的类或接口（包括那些由该类或接口声明的以及从超类和超接口继承的那些的类或接口）的公共 member 方法。数组类返回从 Object 类继承的所有（公共）member 方法。返回数组中的元素没有排序，也没有任何特定的顺序。如果此 Class 对象表示没有公共成员方法的类或接口，或者表示一个基本类型或 void，则此方法返回长度为 0 的数组。 <br />
<br />
<strong><font color="#3809f7">getDeclaredMethods</font></strong><br />
public Method[] getDeclaredMethods()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throws SecurityException返回 Method 对象的一个数组，这些对象反映此 Class 对象表示的类或接口声明的所有方法，包括公共、保护、默认（包）访问和私有方法，但不包括继承的方法。返回数组中的元素没有排序，也没有任何特定的顺序。如果该类或接口不声明任何方法，或者此 Class 对象表示一个基本类型、一个数组类或 void，则此方法返回一个长度为 0 的数组。类初始化方法 &lt;clinit&gt; 不包含在返回数组中。如果该类声明带有相同参数类型的多个公共成员方法，则它们都包含在返回的数组中。</p>
<img src ="http://www.blogjava.net/ycfdonews/aggbug/198622.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ycfdonews/" target="_blank">Ryan</a> 2008-05-06 08:26 <a href="http://www.blogjava.net/ycfdonews/articles/198622.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于java的hashCode方法</title><link>http://www.blogjava.net/ycfdonews/articles/168476.html</link><dc:creator>Ryan</dc:creator><author>Ryan</author><pubDate>Tue, 18 Dec 2007 06:06:00 GMT</pubDate><guid>http://www.blogjava.net/ycfdonews/articles/168476.html</guid><wfw:comment>http://www.blogjava.net/ycfdonews/comments/168476.html</wfw:comment><comments>http://www.blogjava.net/ycfdonews/articles/168476.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ycfdonews/comments/commentRss/168476.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ycfdonews/services/trackbacks/168476.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;－－<strong>来源：</strong><a href="http://school.chengcai.net/school/songdi" target="_blank"><strong>松迪科技(北京)有限公司</strong></a><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;有许多人学了很长时间的Java，但一直不明白hashCode方法的作用，我来解释一下吧。首先，想要明白hashCode的作用，你必须要先知道Java中的集合。<br />
　　总的来说，Java中的集合（Collection）有两类，一类是List，再有一类是Set。你知道它们的区别吗？前者集合内的元素是有序的，元素可以重复；后者元素无序，但元素不可重复。那么这里就有一个比较严重的问题了：要想保证元素不重复，可两个元素是否重复应该依据什么来判断呢？这就是Object.equals方法了。但是，如果每增加一个元素就检查一次，那么当元素很多时，后添加到集合中的元素比较的次数就非常多了。也就是说，如果集合中现在已经有1000个元素，那么第1001个元素加入集合时，它就要调用1000次equals方法。这显然会大大降低效率。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 于是，Java采用了哈希表的原理。哈希（Hash）实际上是个人名，由于他提出一哈希算法的概念，所以就以他的名字命名了。哈希算法也称为散列算法，是将数据依特定算法直接指定到一个地址上。如果详细讲解哈希算法，那需要更多的文章篇幅，我在这里就不介绍了。初学者可以这样理解，hashCode方法实际上返回的就是对象存储的物理地址（实际可能并不是）。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这样一来，当集合要添加新的元素时，先调用这个元素的hashCode方法，就一下子能定位到它应该放置的物理位置上。如果这个位置上没有元素，它就可以直接存储在这个位置上，不用再进行任何比较了；如果这个位置上已经有元素了，就调用它的equals方法与新元素进行比较，相同的话就不存了，不相同就散列其它的地址。所以这里存在一个冲突解决的问题。这样一来实际调用equals方法的次数就大大降低了，几乎只需要一两次。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 所以，Java对于eqauls方法和hashCode方法是这样规定的：<br />
1、如果两个对象相同，那么它们的hashCode值一定要相同；<br />
2、如果两个对象的hashCode相同，它们并不一定相同<br />
&nbsp;&nbsp;&nbsp; 上面说的对象相同指的是用eqauls方法比较。<br />
&nbsp;&nbsp;&nbsp;&nbsp; 你当然可以不按要求去做了，但你会发现，相同的对象可以出现在Set集合中。同时，增加新元素的效率会大大下降。</p>
  <img src ="http://www.blogjava.net/ycfdonews/aggbug/168476.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ycfdonews/" target="_blank">Ryan</a> 2007-12-18 14:06 <a href="http://www.blogjava.net/ycfdonews/articles/168476.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>