<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>qwxi_1</title>
    <description></description>
    <link>http://qwxi-1.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
          <item>
        <title>SCJP(310-055)学习之旅———格式化输出</title>
        <author>qwxi_1</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://qwxi-1.javaeye.com">qwxi_1</a>&nbsp;
                    链接：<a href="http://qwxi-1.javaeye.com/blog/200210" style="color:red;">http://qwxi-1.javaeye.com/blog/200210</a>&nbsp;
          发表时间: 2008年06月04日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p style="text-align: center;"><span style="font-size: large;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -------------<strong>格式化输出</strong>-------------</span></p>
<p style="text-align: center;">
<p style="text-align: left;"><span style="font-size: large;">
<p style="text-align: center;">&nbsp;</p>
<font size="5">
<p style="text-align: center;">&nbsp;</p>
</font></span>
<p style="text-align: center;">&nbsp;</p>
<span style="font-size: medium;">&nbsp;System.out.format("%b\n",new Date());</span></p>
</p>
<p style="text-align: left;"><span style="font-size: medium;">对于b(布尔类型)来说：</span></p>
<p style="text-align: left;"><span style="font-size: medium;">如果是<span style="color: #ff0000;"><strong>字符，字符串，数字，对象</strong></span>为true；</span></p>
<p style="text-align: left;"><span style="font-size: medium;">如果是<span style="color: #0000ff; background-color: #ffffff;"><strong>NULL</strong></span>，则为FALSE</span></p>
<p><span style="font-size: medium;">
<p style="text-align: left;">&nbsp;</p>
<p style="text-align: left;"><br />&nbsp;&nbsp;System.out.format("%c\n",new Integer(50));</p>
<p style="text-align: left;">对于字符类型来说：</p>
<p style="text-align: left;">只能是：<span style="color: #ff0000;"><strong>byte， int， short，字符,对应的包装类</strong></span> </p>
<p style="text-align: left;">其他的则报告错误</p>
<p style="text-align: left;">&nbsp;</p>
<p style="text-align: left;"><br />&nbsp;&nbsp;System.out.printf("%d\n",new Long("99"));</p>
<p style="text-align: left;">对于整型数据来说：</p>
<p style="text-align: left;">如下：<span style="color: #ff0000;"><strong>byte short int long</strong></span> 及其<strong><span style="color: #ff0000;">包装类</span></strong>都可以 但<span style="color: #0000ff;"><strong>float double</strong></span> 不可以</p>
<p style="text-align: left;">&nbsp;</p>
<p style="text-align: left;"><br />&nbsp;&nbsp;System.out.printf("%f\n",123.00)；</p>
<p style="text-align: left;">对于浮点类型来说：必须是<span style="color: #ff0000;"><strong>float </strong></span>或者是 <span style="color: #ff0000;"><strong>double</strong></span>&nbsp;&nbsp; ，其他都不可以</p>
<p style="text-align: left;">&nbsp;</p>
<p style="text-align: left;"><br />&nbsp;&nbsp;System.out.format("%s",'p');</p>
<font size="4">
<p style="text-align: left;">对于字符来说：<span style="color: #ff0000;"><strong>字符串，数字，对象</strong></span>都可以。其实就是用字符串描述参量</p>
</font></span>
<p style="text-align: left;">&nbsp;</p>
</p>
<p style="text-align: left;">&nbsp;</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://qwxi-1.javaeye.com/blog/200210#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 04 Jun 2008 17:54:37 +0800</pubDate>
        <link>http://qwxi-1.javaeye.com/blog/200210</link>
        <guid>http://qwxi-1.javaeye.com/blog/200210</guid>
      </item>
          <item>
        <title>SCJP(310-055)学习之旅———抽象类也可以实例化</title>
        <author>qwxi_1</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://qwxi-1.javaeye.com">qwxi_1</a>&nbsp;
                    链接：<a href="http://qwxi-1.javaeye.com/blog/194181" style="color:red;">http://qwxi-1.javaeye.com/blog/194181</a>&nbsp;
          发表时间: 2008年05月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p class="MsoNormal" align="center" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center"><strong><span style="font-size: 16pt; color: #ff0000; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">抽象类是否可以实例化？</span></strong><strong></strong></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 199.5pt; mso-char-indent-count: 19.0"><span style="font-size: small;"><span lang="EN-US" style="mso-bidi-font-size: 10.5pt; mso-bidi-font-weight: bold"><span style="font-family: Times New Roman;">---------------</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt; mso-bidi-font-weight: bold;">写到哪里就说到哪里，哈哈哈！</span></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US" style="mso-bidi-font-size: 10.5pt; mso-bidi-font-weight: bold"><span style="font-size: small; font-family: Times New Roman;">&nbsp;</span></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -36pt; tab-stops: list 36.0pt; mso-list: l0 level1 lfo1"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore"><span style="font-family: Times New Roman;"><span style="font-size: small;">1．</span><span style="font-family: 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></span><strong><span style="font-size: 16pt; color: #ff0000; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">抽象类可以实例化。</span></strong><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;"> </span></span></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -36pt; tab-stops: list 36.0pt; mso-list: l0 level1 lfo1"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">///////////////////////</span></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -36pt; tab-stops: list 36.0pt; mso-list: l0 level1 lfo1">&nbsp;</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -36pt; tab-stops: list 36.0pt; mso-list: l0 level1 lfo1"><img src="C:\Documents and Settings\ldjflsdj\桌面\clip_image0029.jpg" alt="" style="vertical-align: middle;" />&nbsp;</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"><span style="font-size: small;">大家看到了吧，抽象类竟然可以实例化，并且还调用了自己的抽象方法。</span></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">&nbsp;</span></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">我做这个实验的想法来自</span><span lang="EN-US"><span style="font-family: Times New Roman;">API</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">文档，大家知道</span><span lang="EN-US"><span style="font-family: Times New Roman;">WindowAdapter</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">就是一个抽象类，但是他的所有成员方法都是空实现，既然已经实现了，为什么还要表示为</span><span lang="EN-US"><span style="font-family: Times New Roman;">abstract</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">类呢？从适配器模式的角度看的话，</span><span lang="EN-US"><span style="font-family: Times New Roman;">API</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">设计者认为适配器类中的成员方法，如下截图</span></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">&nbsp;</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">&nbsp;<img src="C:\Documents and Settings\ldjflsdj\桌面\clip_image002.jpg" alt="" style="vertical-align: middle;" /></p>
<p><span style="font-family: 宋体;"><strong style="mso-bidi-font-weight: normal"><span style="color: #ff0000;"><span style="font-size: small;">根本没有定制业务逻辑的必要！</span></span></strong><span style="FONT-SIZE: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'">原因很简单，每种事件发生的时候，程序员所需要的业务逻辑是不一样的，</span></span><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt;">API</span><span style="FONT-SIZE: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'"><span style="font-family: 宋体;">的编写者何必再画蛇添足呢，增加了代码量，最重要的是自己实现的业务逻辑，程序员却不用，多累呀！！！</span></span></p>
<pre></pre>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">其实说某一个类一旦有</span><span lang="EN-US"><span style="font-family: Times New Roman;">abstract</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">标识符，就会被编译器认为是有没有业务逻辑（方法体）的抽象方法。这仅仅是编译器一厢情愿的观点。但话又说回来了，你不让编译器舒服了，哈哈，编译器也不会让你好过的。</span></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">&nbsp;</span></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">还有一点就是一个类一旦有</span><span lang="EN-US"><span style="font-family: Times New Roman;">abstract</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">标识符的话，在实例化时候就必须有大括号，大括号里面是抽象方法的业务逻辑的填充处。如果没有抽象方法，或者是空实现，可以不用写，但是一旦有抽象方法就必须实现，如果不实现，编译器就会报错。如下</span></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">&nbsp;</span></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">&nbsp;</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">&nbsp;/////////////////</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">&nbsp;<img src="C:\Documents and Settings\ldjflsdj\桌面\clip.jpg" alt="" style="vertical-align: middle;" /></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">&nbsp;</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">这个大括号与类的标识符</span><span lang="EN-US"><span style="font-family: Times New Roman;">abstract</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">是生死相依的。</span><span style="font-family: Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><span style="mso-spacerun: yes"><span style="font-size: small; font-family: Times New Roman;">&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;&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;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">判断一个类是抽象类的标准是：此类有一些方法（一个或多个）这些方法没有方法体。此时这个方法必须显示的标识为</span><span lang="EN-US"><span style="font-family: Times New Roman;">abstract</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">，于此同时这个类也要显示的标识为</span><span lang="EN-US"><span style="font-family: Times New Roman;">abstract</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">。</span></span></p>
<p class="MsoCaption" style="MARGIN: 0cm 0cm 0pt"><span style="font-size: 12pt; font-family: 'Times New Roman'; mso-fareast-font-family: 宋体; mso-bidi-font-family: Arial; mso-bidi-font-weight: bold;">&nbsp;</span></p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://qwxi-1.javaeye.com/blog/194181#comments" style="color:red;">已有 <strong>1</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 18 May 2008 22:39:25 +0800</pubDate>
        <link>http://qwxi-1.javaeye.com/blog/194181</link>
        <guid>http://qwxi-1.javaeye.com/blog/194181</guid>
      </item>
          <item>
        <title>SCJP(310-055)学习之旅———(回复网友)静态代码块到底什么时候执行</title>
        <author>qwxi_1</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://qwxi-1.javaeye.com">qwxi_1</a>&nbsp;
                    链接：<a href="http://qwxi-1.javaeye.com/blog/190342" style="color:red;">http://qwxi-1.javaeye.com/blog/190342</a>&nbsp;
          发表时间: 2008年05月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><span style="font-size: medium;">有网友给我留言了，我非常感谢，这样我可以知道，我的不足。说实话，我真的非常高兴。看到网友的回复后，我重新写了一下程序测试静态代码块到底什么时候执行，下面是我的测试过程</span></p>
<p><span style="font-size: medium;">--------------StaticTest.java----------------</span></p>
<p><span style="font-size: medium;">class A<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp; static{System.out.println("A");}</span></p>
<p><span style="font-size: medium;"><br />&nbsp;&nbsp;&nbsp;&nbsp; public static void display(){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("A method was called!");<br />&nbsp;&nbsp;&nbsp;&nbsp; }<br />}</span></p>
<p><span style="font-size: medium;">class B extends A<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; static int i=9;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; static{System.out.println("B");}<br />}</span></p>
<p><span style="font-size: medium;">public class StaticTest<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static void main(String[] args){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B.display();<br />&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;}<br />}</span></p>
<p>&nbsp;</p>
<p><span style="font-size: medium;">运行结果图：</span></p>
<p><span style="font-size: medium;"><img src="C:\Documents and Settings\ldjflsdj\桌面\a.GIF" height="438" alt="" style="vertical-align: middle;" width="669" /></span></p>
<p><span style="font-size: medium;">看到上面的结果，有人可能会怀疑，类B加载没有，下面是一个类加载截图</span></p>
<p>&nbsp;</p>
<p>&nbsp;<img src="C:\Documents and Settings\ldjflsdj\桌面\b.GIF" height="438" alt="" style="vertical-align: middle;" width="669" /></p>
<p>&nbsp;</p>
<p>&nbsp;<span style="font-size: medium;">看到了吧，类A ，类B都被加载了。由此可以得出初步结论：<span style="color: #ff0000;"><strong>类在加载的时候，不会执行静态代码块。</strong></span></span></p>
<p><strong><span style="font-size: medium; color: #ff0000;">-----------------------------------------------------------</span></strong></p>
<p><span style="font-size: medium; color: #000000;"><strong>下面我把Main函数改一下，</strong>类A ，类B不变，<strong>内容如下</strong></span></p>
<p><span style="font-size: medium;">public class StaticTest<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static void main(String[] args){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(B.i);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />}</span></p>
<p><span style="font-size: medium;">运行结果图：</span></p>
<p><span style="font-size: medium;"><img src="C:\Documents and Settings\ldjflsdj\桌面\c.GIF" height="438" alt="" style="vertical-align: middle;" width="669" /></span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span style="font-size: medium;">&nbsp;通过结果可以知道，当访问类变量的时候，静态代码块被执行了。</span></p>
<p><span style="font-size: medium;">后来我又试了一下，代码分别如下</span></p>
<p><span style="font-size: medium;">public static void main(String[] args){</span></p>
<p><br /><span style="font-size: medium;">&nbsp;&nbsp;new B();</span></p>
<p><br /><span style="font-size: medium;">&nbsp;}</span></p>
<p><span style="font-size: medium;">运行结果是 打印A B 也就是说</span> <span style="font-size: medium; color: #ff0000;"><strong>调用构造子的时候，静态代码块被执行。（仅针对当前程序而言）</strong></span></p>
<p>--------------------------------------------</p>
<p><span style="font-size: medium;">public static void main(String[] args){</span></p>
<p><br /><span style="font-size: medium;">&nbsp;&nbsp;new B();</span></p>
<p><span style="font-size: medium;">&nbsp; new B();<br />&nbsp;}</span></p>
<p><span style="font-size: medium;">运行结果是 打印A B ,也就是说</span> <span style="font-size: medium; color: #ff0000;"><strong>静态代码块执行一次之后，就不再执行了，除非，重新启动JVM。</strong></span></p>
<p>--------------------------------------------</p>
<p><span style="font-size: medium; color: #ff00ff;">请那位朋友看完之后，提建议，最好是把你的代码贴出来，好让我知道，我的不足。谢谢！</span></p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://qwxi-1.javaeye.com/blog/190342#comments" style="color:red;">已有 <strong>5</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 06 May 2008 18:49:50 +0800</pubDate>
        <link>http://qwxi-1.javaeye.com/blog/190342</link>
        <guid>http://qwxi-1.javaeye.com/blog/190342</guid>
      </item>
          <item>
        <title>SCJP(310-055)学习之旅———零散知识点（意想不到）</title>
        <author>qwxi_1</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://qwxi-1.javaeye.com">qwxi_1</a>&nbsp;
                    链接：<a href="http://qwxi-1.javaeye.com/blog/189515" style="color:red;">http://qwxi-1.javaeye.com/blog/189515</a>&nbsp;
          发表时间: 2008年05月04日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>
<p><span style="font-size: large;">
<pre><span style="font-size: large;">1. int a = 0.0 </span></pre>
</span>
<p>&nbsp;</p>
<br /><br /><span style="font-size: large;">这个是错的。任何包含小数的数都默认为double(64),不包含小数的默认为in(32)</span> <br /><br /><br /><span style="font-size: large;">2. byte b = 9 ; </span><br /><br /><span style="font-size: large;">b+=2;</span> <br /><br /><span style="font-size: large;">b=3+4;</span> <br /><br /><span style="font-size: large;">上面这些是正确的。</span> <br /><br /><br /><span style="font-size: large;">byte b=1;</span> <br /><br /><span style="font-size: large;">byte a=2;</span> <br /><br /><span style="font-size: large;">b=a+2;//编译报错</span> <br /><br /><br /><span style="font-size: large;">3. 赋值表达式也有值</span> <br /><br /><span style="font-size: large;">int a=3;</span> <br /><br /><span style="font-size: large;">b=a;//这个表达式值是3</span> <br /><br /><br /><span style="font-size: large;">4. 字符也做整数处理 </span><br /><br /><span style="font-size: large;">System.out.println('a'+1+"");//98</span> <br /><br /><span style="font-size: large;">System.out.println(""+1+'a');//197</span> <br /><br /><br /><span style="font-size: large;">5. 字符也可自动变为整数</span> <br /><br /><span style="font-size: large;">int getNumber(){</span> <br /><br /><span style="font-size: large;">return 'a';</span> <br /><br /><span style="font-size: large;">} //返回值是97</span> <br /><br /><br /><span style="font-size: large;">6. 静态代码块是在访问类的成员的时候执行，而不是在类在加载的时候执行。</span> <br /><br /><span style="font-size: large;">7. 非静态代码块是在产生这个类的对像的时候执行。</span> <br /><br /><br /><span style="font-size: large;">8. 静态代码块，非静态代码块，构造子，是不能被继承的。</span> <br /><br /><br /><span style="font-size: large;">9. 重写的前提是参数类表不能变，实质是更新原有函数，没有增加新函数。</span> <br /><br /><span style="font-size: large;">10. 重载的前提是参数列表必须要改，实质是增加新的成员函数。</span> <br /><br /><br /><span style="font-size: large;">未完待续。。。。。。。</span> <br /><br /></p>
</p>
<p>&nbsp;</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://qwxi-1.javaeye.com/blog/189515#comments" style="color:red;">已有 <strong>1</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 04 May 2008 20:54:01 +0800</pubDate>
        <link>http://qwxi-1.javaeye.com/blog/189515</link>
        <guid>http://qwxi-1.javaeye.com/blog/189515</guid>
      </item>
          <item>
        <title>SCJP(310-055)学习之旅———Java编译器和Jvm的小脾气（续）</title>
        <author>qwxi_1</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://qwxi-1.javaeye.com">qwxi_1</a>&nbsp;
                    链接：<a href="http://qwxi-1.javaeye.com/blog/189480" style="color:red;">http://qwxi-1.javaeye.com/blog/189480</a>&nbsp;
          发表时间: 2008年05月04日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><span style="font-size: small;">上一章主要介绍了编译器，在这里我想再补充一些。</span></p>
<p><span style="font-size: small;">1.程序在编译阶段主要侧重语法语义检测。有穷自动机根据DFA通过识别所输入的字符，从一种状态转换到另外一种状态，只要符合语法规则即可，并不在乎程序实际运行时的细节。举例如下</span></p>
<p><span style="font-size: small;">----------A.java-------</span></p>
<p><span style="font-size: small;">class&nbsp;B extends A{</span><span style="font-size: small;">}</span></p>
<p><span style="font-size: small;">public class A{</span><span style="font-size: small;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; static String[] a=null;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static void main(String[] args){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("main123");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B.main(a);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />}</span></p>
<p><span style="font-size: small;">上面是一个非常糟糕的程序。编译非常正确，运行时开始疯狂打印main123，然后抛出异常，由于栈崩溃，JVM推出。</span></p>
<p><span style="font-size: small;">好了，Java编译器先说道这里。以后我还会继续写的。</span></p>
<p><span style="font-size: small;">2.关于JVM。他就比较细心，喜欢刨根问底。下面来看看在第一章程序的运行情况。</span></p>
<p>&nbsp;&mdash;&mdash;&gt; <span style="font-size: x-small;">public static void main(String[] args)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <img src="C:\Documents and Settings\ldjflsdj\桌面\end\2.gif" height="384" alt="" style="vertical-align: middle;" width="512" /></span></p>
<p><span style="font-size: x-small;">&mdash;&mdash;&gt; Shuiguo sg1 = new Shuiguo()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="C:\Documents and Settings\ldjflsdj\桌面\end\3.gif" height="384" alt="" style="vertical-align: middle;" width="512" />&nbsp;&nbsp;&nbsp;</span></p>
<p><span style="font-size: x-small;">-----&gt; Pingguo pg = new Pingguo()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <img src="C:\Documents and Settings\ldjflsdj\桌面\end\4.gif" height="384" alt="" style="vertical-align: middle;" width="512" /></span></p>
<p><span style="font-size: x-small;">------&gt; Shuiguo sg2 = new Pingguo()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <img src="C:\Documents and Settings\ldjflsdj\桌面\end\5.gif" height="384" alt="" style="VERTICAL-ALIGN: middle" width="512" /></span></p>
<p><span style="font-size: x-small;">-------&gt;sg1.display() 当执行这条语句的时候，JVM会根据sg1所引用的真实对象将所对应成员方法压入栈</span></p>
<p><img src="C:\Documents and Settings\ldjflsdj\桌面\end\6.gif" height="384" alt="" style="vertical-align: middle;" width="512" /></p>
<p>&nbsp;</p>
<p><span style="font-size: x-small;">执行完之后，方法出栈，局部变量字符串失效，但仍旧存留在常量池里面，</span></p>
<p><span style="font-size: x-small;">------&gt; pg.display(); 同上。</span></p>
<p>&nbsp;<img src="C:\Documents and Settings\ldjflsdj\桌面\end\7.gif" height="384" alt="" style="vertical-align: middle;" width="512" /></p>
<p><span style="font-size: x-small;">-----&gt; sg2.display(); 道理和上面的类似。由于调用方法时，JVM会去查看引用变量所引用的实际对象，然后找到这个方法，让他入栈。</span></p>
<p>&nbsp;</p>
<p>&nbsp;<img src="C:\Documents and Settings\ldjflsdj\桌面\end\8.gif" height="384" alt="" style="vertical-align: middle;" width="512" /></p>
<p>上面的方法结束出栈</p>
<p><img src="C:\Documents and Settings\ldjflsdj\桌面\end\9.gif" height="384" alt="" style="vertical-align: middle;" width="512" /></p>
<p>main也随之出栈，程序结束，JVM退出。</p>
<p>&nbsp;<img src="C:\Documents and Settings\ldjflsdj\桌面\end\10.gif" height="384" alt="" style="vertical-align: middle;" width="512" /></p>
<p><span style="font-size: x-small;">到此，JVM运行时，内存里面的活动如上所示。上面的问题主要是在多态中出现，在使用处理类似问题时，最好采用IS-A方式，用instanceof判断一下，接下来要用的对象是否是我所需要的。这样 可以减少问题出现的次数。</span></p>
<p><span style="font-size: x-small;">以上是我的一点点理解，如果哪位大虾有不同观点，请您一定要指点，要不我还蒙在鼓里呢！哈哈哈哈<img src="../../images/smiles/icon_arrow.gif" alt="" /></span></p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://qwxi-1.javaeye.com/blog/189480#comments" style="color:red;">已有 <strong>1</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 04 May 2008 18:34:12 +0800</pubDate>
        <link>http://qwxi-1.javaeye.com/blog/189480</link>
        <guid>http://qwxi-1.javaeye.com/blog/189480</guid>
      </item>
          <item>
        <title>SCJP(310-055)学习之旅———Java编译器和Jvm的小脾气</title>
        <author>qwxi_1</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://qwxi-1.javaeye.com">qwxi_1</a>&nbsp;
                    链接：<a href="http://qwxi-1.javaeye.com/blog/189119" style="color:red;">http://qwxi-1.javaeye.com/blog/189119</a>&nbsp;
          发表时间: 2008年05月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><span style="font-size: small;">对于搞Ｊａｖａ编程的朋友来说，了解Ｊａｖａ编译器和Ｊｖｍ是非常有帮助的。下面是我的一点小感，算是对Java编译器和Jvm的小脾气有点了解吧。<br /><br /><br />　class Shuiguo{<br />　　void display(){<br />　　　　System.out.println("shuiguo");<br />　　}<br />　}<br /><br />　class Pingguo extends shuiguo{<br />　　void display(){<br />　　　　System.out.println("pingguo");<br />　　}<br />void showtype(){<br />System.out.println("I AM AN Apple");<br />}<br />　}<br />　<br />　public class Test{<br />　　 public static void main(String[] args){ <br />　　　　　Shuiguo sg1 = new Shuiguo();<br />　　　　　Pingguo pg = new Pingguo(); <br />　　　　　Shuiguo sg2 = new Pingguo(); <br />　　　　　sg1.display(); <br />　　　　　pg.display(); <br />　　　　　sg2.display();<br />　　}<br />　}<br /><br />１. Java编译器如同一个心浮气躁的人，不会静下心来看问题。<br />sg1.display();和pg.display();当检测到这两条语句的时候，Java编译器首先查看引用变量的类 型，分别是 Shuiguo 和Pingguo，然后查看对应的类中是否有被调用的成员方法。结果发现：Shuiguo类里面有display(); 这个方法；同时Pingguo也有display();方法，满足自己的要求，这两条语句检测通过。<br /><br />2. 请注意当检测sg2.display();的时候发生的细节。编译器检测到sg2是Shuiguo类型，然后查看Shuiguo下面有成员方法display(); 检测通过。换句话说，<strong><span style="color: #ff0000;">sg2真正调用的display();这个方法是谁的，编译器是不去理睬的，他只关心引用变量的类型下面是否有这个引用变量所调用的成员</span></strong>。<br /><br />3. 在main方法中再添加几行代码如下<br />Shuiguo sg2 = new Shuiguo();<br />Pingguo pg3 = (Pingguo)sg2;<br />pg3.showtype();<br />按照刚才的推理，这3行代码是正确的。<span style="color: #ff0000;"><strong>经过自己测试，发现确实是可以通过编译的，并且在编译时没有任何错误。但运行时却抛出了异常，说pg3下面没有showtype();这个方法</strong></span>。关于程序运行，关系到JVM，由于时间问题，我将在下一篇上说明。<br /><br />4. 在main方法中再添加几行代码如下<br />Shuiguo sg3 = new Shuiguo();<br />String str = (String)sg3;<br />代码在编译的时候报错，难道刚才我们的结论是错误的吗。不是的。。。上面的结论需要补充另外一方面的内容：<span style="color: #ff0000;"><strong>在进行类型之间的转换时需要存在继承关系，在进行继承关系之外的类型转换时，编译器在编译时会报错。</strong></span></span></p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://qwxi-1.javaeye.com/blog/189119#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 03 May 2008 22:46:05 +0800</pubDate>
        <link>http://qwxi-1.javaeye.com/blog/189119</link>
        <guid>http://qwxi-1.javaeye.com/blog/189119</guid>
      </item>
      </channel>
</rss>