﻿<?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-adrian-文章分类-javase</title><link>http://www.blogjava.net/adrian/category/36221.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 26 Nov 2008 20:50:52 GMT</lastBuildDate><pubDate>Wed, 26 Nov 2008 20:50:52 GMT</pubDate><ttl>60</ttl><item><title>关于Integer</title><link>http://www.blogjava.net/adrian/articles/242511.html</link><dc:creator>adrian615</dc:creator><author>adrian615</author><pubDate>Tue, 25 Nov 2008 04:57:00 GMT</pubDate><guid>http://www.blogjava.net/adrian/articles/242511.html</guid><wfw:comment>http://www.blogjava.net/adrian/comments/242511.html</wfw:comment><comments>http://www.blogjava.net/adrian/articles/242511.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/adrian/comments/commentRss/242511.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/adrian/services/trackbacks/242511.html</trackback:ping><description><![CDATA[看下面这段代码的执行结果是什么？<br />
&nbsp;&nbsp;Integer a = 127;<br />
&nbsp;&nbsp;Integer a1 = new Integer(127);<br />
&nbsp;&nbsp;<font color="#3366ff"><strong>Integer a2 = Integer.valueOf(127);</strong></font><br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;Integer b = 127;<br />
&nbsp;&nbsp;<strong><font color="#3366ff">Integer b2 = Integer.valueOf(127);</font></strong><br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;Integer c = 128;<br />
&nbsp;&nbsp;<font color="#ff6600"><strong>Integer c1 = Integer.valueOf(128);</strong></font><br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;Integer d = 128;<br />
&nbsp;&nbsp;<strong><font color="#ff6600">Integer d1 = Integer.valueOf(128);</font></strong><br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;System.out.println(a == a1);<br />
&nbsp;&nbsp;System.out.println(<font color="#3366ff"><strong>a2 == b2</strong></font>);<br />
&nbsp;&nbsp;System.out.println(c == c1);<br />
&nbsp;&nbsp;System.out.println(<font color="#ff6600"><strong>c1 == d1</strong></font>);<br />
&nbsp;&nbsp;System.out.println(a == b);<br />
&nbsp;&nbsp;System.out.println(c == d);;<br />
是这样的吗？<br />
false<br />
<font color="#3366ff"><strong>true<br />
</strong></font>false<br />
<font color="#ff6600"><strong>false<br />
</strong></font>true<br />
false 从结果可以看出JDK5的自动装箱实际上是调用了valueOf方法；<br />
而Integer的valueOf方法源代码是这样的：<br />
&nbsp;&nbsp;&nbsp; public static Integer valueOf(int i) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; final int offset = 128;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (i &gt;= -128 &amp;&amp; i &lt;= 127) { // must cache <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return IntegerCache.cache[i + offset];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return new Integer(i);<br />
&nbsp;&nbsp;&nbsp; }<br />
而IntegerCache中的缓存是这样的：<br />
&nbsp;&nbsp;&nbsp; static final Integer cache[] = new Integer[-(-128) + 127 + 1];<br />
&nbsp;&nbsp;&nbsp;&nbsp;static {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i = 0; i &lt; cache.length; i++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cache[i] = new Integer(i - 128);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
所以上面的结果咋看起来会让人不解。<br />
 <img src ="http://www.blogjava.net/adrian/aggbug/242511.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/adrian/" target="_blank">adrian615</a> 2008-11-25 12:57 <a href="http://www.blogjava.net/adrian/articles/242511.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java方法的重载、覆盖和隐藏</title><link>http://www.blogjava.net/adrian/articles/242508.html</link><dc:creator>adrian615</dc:creator><author>adrian615</author><pubDate>Tue, 25 Nov 2008 04:48:00 GMT</pubDate><guid>http://www.blogjava.net/adrian/articles/242508.html</guid><wfw:comment>http://www.blogjava.net/adrian/comments/242508.html</wfw:comment><comments>http://www.blogjava.net/adrian/articles/242508.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/adrian/comments/commentRss/242508.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/adrian/services/trackbacks/242508.html</trackback:ping><description><![CDATA[<div><span><font size="2">重载 <strong>overloading</strong><br />
大家都熟悉java的重载以及实现，在一个类中同一个函数以多种不同的形态出现，即函数的参数个数或者类型不一样。<br />
例子 System.out.println(); 下面简称SOP<br />
SOP(String str)<br />
SOP(int number)<br />
SOP(char ch)<br />
SOP(double num)<br />
.................................<br />
这就是重载的效果<br />
<br />
覆盖（重写） <strong>overwritting<br />
</strong>覆盖也是大家熟悉不过了的，子类继承父类，然后子类中覆盖原父类的方法，从而实例化子类后，调用的是子类的方法。<br />
例子 <br />
public class father{<br />
public <font color="#993300"><strong>overwritting</strong></font>(){<br />
&nbsp; SOP("father method");<br />
}<br />
<br />
public class son extends father{<br />
public <font color="#993300"><strong>overwritting</strong></font>(){<br />
&nbsp; SOP("son method");<br />
}<br />
public static void main(String args[]){<br />
&nbsp; father son=new son();<br />
&nbsp; son.overwritting();<br />
}<br />
}<br />
结果会调用子类的overwritting方法, son method。这就是覆盖。<br />
<br />
隐藏 <strong>hide<br />
</strong>大家知道了覆盖，那么什么情况下，子类实例化后会调用父类的方法而不是子类的方法呢？<br />
（当然子类和父类的方法定义需要是一样的）<br />
大家知道static 类型的方法是不能被覆盖的，所以java利用这一个特性完成了隐藏的效果。<br />
例子<br />
public class father{<br />
public <font color="#800080"><strong>static</strong></font> <font color="#993300"><strong>overwritting</strong></font>(){<br />
&nbsp; SOP("father method");<br />
}<br />
<br />
public class son extends father{<br />
public <font color="#800080"><strong>static</strong></font> <font color="#993300"><strong>overwritting</strong></font>(){<br />
&nbsp; SOP("son method");<br />
}<br />
public static void main(String args[]){<br />
&nbsp; father son=new son();<br />
&nbsp; son.overwritting();<br />
}<br />
}<br />
结果会调用父类的overwritting方法 fathetr method。这就是隐藏。</font></span></div>
<div><span><font size="2">原文摘抄自<strong><font face="Gulim" color="#000066">gzhua99</font></strong></font>的帖子</span></div>
 <img src ="http://www.blogjava.net/adrian/aggbug/242508.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/adrian/" target="_blank">adrian615</a> 2008-11-25 12:48 <a href="http://www.blogjava.net/adrian/articles/242508.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>