??xml version="1.0" encoding="utf-8" standalone="yes"?>成人综合久久精品色婷婷,色综合色天天久久婷婷基地,狠狠人妻久久久久久综合蜜桃http://www.shnenglu.com/luyulaile/category/15751.htmlI canzh-cnTue, 27 Nov 2012 12:52:28 GMTTue, 27 Nov 2012 12:52:28 GMT60Java 字符串比?/title><link>http://www.shnenglu.com/luyulaile/archive/2012/11/22/195517.html</link><dc:creator>luis</dc:creator><author>luis</author><pubDate>Wed, 21 Nov 2012 16:44:00 GMT</pubDate><guid>http://www.shnenglu.com/luyulaile/archive/2012/11/22/195517.html</guid><wfw:comment>http://www.shnenglu.com/luyulaile/comments/195517.html</wfw:comment><comments>http://www.shnenglu.com/luyulaile/archive/2012/11/22/195517.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/luyulaile/comments/commentRss/195517.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/luyulaile/services/trackbacks/195517.html</trackback:ping><description><![CDATA[原文Q?a >http://www.cnblogs.com/tonyqus/archive/2004/12/07/73710.html</a> <span style="color: #393939; font-family: verdana, 'ms song', Arial, Helvetica, sans-serif; background-color: #faf7ef; "></span><br /><span style="color: #393939; font-family: verdana, 'ms song', Arial, Helvetica, sans-serif; background-color: #faf7ef; "><br /><br />熟悉C++的h对于两个字符串比较的代码一定很了解Q?nbsp;</span><br style="margin: 0px; padding: 0px; color: #393939; font-family: verdana, 'ms song', Arial, Helvetica, sans-serif; background-color: #faf7ef; " /><span style="color: #393939; font-family: verdana, 'ms song', Arial, Helvetica, sans-serif; background-color: #faf7ef; ">(string1==string2) </span><br style="margin: 0px; padding: 0px; color: #393939; font-family: verdana, 'ms song', Arial, Helvetica, sans-serif; background-color: #faf7ef; " /><span style="color: #393939; font-family: verdana, 'ms song', Arial, Helvetica, sans-serif; background-color: #faf7ef; ">但在java中,q个代码即在两个字W串完全相同的情况下也会q回false </span><br style="margin: 0px; padding: 0px; color: #393939; font-family: verdana, 'ms song', Arial, Helvetica, sans-serif; background-color: #faf7ef; " /><span style="color: #393939; font-family: verdana, 'ms song', Arial, Helvetica, sans-serif; background-color: #faf7ef; ">Java中必M用string1.equals(string2)来进行判?nbsp;</span><br style="margin: 0px; padding: 0px; color: #393939; font-family: verdana, 'ms song', Arial, Helvetica, sans-serif; background-color: #faf7ef; " /><br style="margin: 0px; padding: 0px; color: #393939; font-family: verdana, 'ms song', Arial, Helvetica, sans-serif; background-color: #faf7ef; " /><strong style="margin: 0px; padding: 0px; color: #393939; font-family: verdana, 'ms song', Arial, Helvetica, sans-serif; background-color: #faf7ef; ">补充</strong> <br style="margin: 0px; padding: 0px; color: #393939; font-family: verdana, 'ms song', Arial, Helvetica, sans-serif; background-color: #faf7ef; " /><span style="color: #393939; font-family: verdana, 'ms song', Arial, Helvetica, sans-serif; background-color: #faf7ef; ">如果Q?nbsp;</span><br style="margin: 0px; padding: 0px; color: #393939; font-family: verdana, 'ms song', Arial, Helvetica, sans-serif; background-color: #faf7ef; " /><span style="color: #393939; font-family: verdana, 'ms song', Arial, Helvetica, sans-serif; background-color: #faf7ef; ">string s1=new String("Hello"); </span><br style="margin: 0px; padding: 0px; color: #393939; font-family: verdana, 'ms song', Arial, Helvetica, sans-serif; background-color: #faf7ef; " /><span style="color: #393939; font-family: verdana, 'ms song', Arial, Helvetica, sans-serif; background-color: #faf7ef; ">string s2=new String("Hello"); </span><br style="margin: 0px; padding: 0px; color: #393939; font-family: verdana, 'ms song', Arial, Helvetica, sans-serif; background-color: #faf7ef; " /><span style="color: #393939; font-family: verdana, 'ms song', Arial, Helvetica, sans-serif; background-color: #faf7ef; ">?s1==s2)=false </span><br style="margin: 0px; padding: 0px; color: #393939; font-family: verdana, 'ms song', Arial, Helvetica, sans-serif; background-color: #faf7ef; " /><br style="margin: 0px; padding: 0px; color: #393939; font-family: verdana, 'ms song', Arial, Helvetica, sans-serif; background-color: #faf7ef; " /><span style="color: #393939; font-family: verdana, 'ms song', Arial, Helvetica, sans-serif; background-color: #faf7ef; ">如果Q?nbsp;</span><br style="margin: 0px; padding: 0px; color: #393939; font-family: verdana, 'ms song', Arial, Helvetica, sans-serif; background-color: #faf7ef; " /><span style="color: #393939; font-family: verdana, 'ms song', Arial, Helvetica, sans-serif; background-color: #faf7ef; ">string s1="Hello"; </span><br style="margin: 0px; padding: 0px; color: #393939; font-family: verdana, 'ms song', Arial, Helvetica, sans-serif; background-color: #faf7ef; " /><span style="color: #393939; font-family: verdana, 'ms song', Arial, Helvetica, sans-serif; background-color: #faf7ef; ">string s2="Hello"; </span><br style="margin: 0px; padding: 0px; color: #393939; font-family: verdana, 'ms song', Arial, Helvetica, sans-serif; background-color: #faf7ef; " /><span style="color: #393939; font-family: verdana, 'ms song', Arial, Helvetica, sans-serif; background-color: #faf7ef; ">?s1==s2)=true; </span><br style="margin: 0px; padding: 0px; color: #393939; font-family: verdana, 'ms song', Arial, Helvetica, sans-serif; background-color: #faf7ef; " /><span style="color: #393939; font-family: verdana, 'ms song', Arial, Helvetica, sans-serif; background-color: #faf7ef; ">因ؓ他们指向的同一个对象?nbsp;</span><br style="margin: 0px; padding: 0px; color: #393939; font-family: verdana, 'ms song', Arial, Helvetica, sans-serif; background-color: #faf7ef; " /><br style="margin: 0px; padding: 0px; color: #393939; font-family: verdana, 'ms song', Arial, Helvetica, sans-serif; background-color: #faf7ef; " /><span style="color: #393939; font-family: verdana, 'ms song', Arial, Helvetica, sans-serif; background-color: #faf7ef; ">如果把其他变量的Dls1和s2Q即使内容相同,׃不是指向同一个对象,也会q回false。所以徏议用equals()Q因为equals比较的才是真正的内容 </span><img src ="http://www.shnenglu.com/luyulaile/aggbug/195517.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/luyulaile/" target="_blank">luis</a> 2012-11-22 00:44 <a href="http://www.shnenglu.com/luyulaile/archive/2012/11/22/195517.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java 中的 Hashmap serialization 非常耗费I间 JavaU程http://www.shnenglu.com/luyulaile/archive/2012/04/06/170227.htmlluisluisThu, 05 Apr 2012 20:32:00 GMThttp://www.shnenglu.com/luyulaile/archive/2012/04/06/170227.htmlhttp://www.shnenglu.com/luyulaile/comments/170227.htmlhttp://www.shnenglu.com/luyulaile/archive/2012/04/06/170227.html#Feedback0http://www.shnenglu.com/luyulaile/comments/commentRss/170227.htmlhttp://www.shnenglu.com/luyulaile/services/trackbacks/170227.html

调试JavaE序的时候,一定要注意JavaU程Q何时挂P是否会终止,能否需要新建,start q是resume.


luis 2012-04-06 04:32 发表评论
]]>
Eclipse Fatjar包的调试http://www.shnenglu.com/luyulaile/archive/2012/04/05/170117.htmlluisluisThu, 05 Apr 2012 01:14:00 GMThttp://www.shnenglu.com/luyulaile/archive/2012/04/05/170117.htmlhttp://www.shnenglu.com/luyulaile/comments/170117.htmlhttp://www.shnenglu.com/luyulaile/archive/2012/04/05/170117.html#Feedback0http://www.shnenglu.com/luyulaile/comments/commentRss/170117.htmlhttp://www.shnenglu.com/luyulaile/services/trackbacks/170117.html使用命o?Q?br />到其路径下运?java -jar xxx.jar -pause q行q个文gQ这时进行操作就可以看到所报错?/span>

luis 2012-04-05 09:14 发表评论
]]>
事g响应E序写成异步U程http://www.shnenglu.com/luyulaile/archive/2012/04/04/169989.htmlluisluisTue, 03 Apr 2012 20:36:00 GMThttp://www.shnenglu.com/luyulaile/archive/2012/04/04/169989.htmlhttp://www.shnenglu.com/luyulaile/comments/169989.htmlhttp://www.shnenglu.com/luyulaile/archive/2012/04/04/169989.html#Feedback0http://www.shnenglu.com/luyulaile/comments/commentRss/169989.htmlhttp://www.shnenglu.com/luyulaile/services/trackbacks/169989.html我们需要将事g响应E序写成ThreadQ实现异步监听?br />在嵌入类中调用this,需要类?this.
代码1Q响应部?br />
package firstversion;

public class ThreadForUpdate extends Thread{
    ControlPanel cp;
    Simulator r;
    
    
public ThreadForUpdate(ControlPanel cp,Simulator r)
    {
        
this.cp=cp;
        
this.r=r;
    }
    
    
public void run()
    {
        
while(cp.flag==true)
     {
        r.DisplaySolutionRecursive();
        cp.textFieldStability.setText(r.node.stabilityState.stability.toString());
        cp.textFieldDirection.setText(r.node.controlledState.direction.toString());
        cp.textFieldDifficulty.setText(r.node.controlledState.difficulty.toString());
        cp.textFieldActionExecuting.setText(
"("+r.node.stabilityState.actor+","+r.node.stabilityState.actionBeExecuting+")");
        cp.textFieldStability.setText(r.node.stabilityState.stability.toString());
        cp.textFieldX.setText(
""+r.node.controlledState.x);
        cp.textFieldY.setText(
""+r.node.controlledState.y);
        cp.textFieldTraffic.setText(r.node.traffic.toString());
        
if(r.node.isTerminal==true)
            cp.textFieldNextAction.setText(
"");
        
else
            cp.textFieldNextAction.setText(r.node.bestAction.toString());
        cp.textFieldEngagement.setText(r.node.engagement.toString());
        
        
try {
            Thread.sleep(
200);
        } 
catch (InterruptedException e) {
            e.printStackTrace();
        }
      }
    }

}
代码2Q事件响?br />
btnBegin = new JButton("Begin");
        btnBegin.setEnabled(
false);
        
final ThreadForUpdate threadUpdate=new ThreadForUpdate(ControlPanel.this,r);;
        btnBegin.addActionListener(
new ActionListener() {

            
public void actionPerformed(ActionEvent arg0) {
                threadUpdate.start();
                }            
        });







luis 2012-04-04 04:36 发表评论
]]>
[转]Java反射l典实例 Java Reflection Cookbookhttp://www.shnenglu.com/luyulaile/archive/2012/02/16/165718.htmlluisluisThu, 16 Feb 2012 01:19:00 GMThttp://www.shnenglu.com/luyulaile/archive/2012/02/16/165718.htmlhttp://www.shnenglu.com/luyulaile/comments/165718.htmlhttp://www.shnenglu.com/luyulaile/archive/2012/02/16/165718.html#Feedback0http://www.shnenglu.com/luyulaile/comments/commentRss/165718.htmlhttp://www.shnenglu.com/luyulaile/services/trackbacks/165718.html阅读全文

luis 2012-02-16 09:19 发表评论
]]>
java 内部c?反射的实?/title><link>http://www.shnenglu.com/luyulaile/archive/2012/02/16/165714.html</link><dc:creator>luis</dc:creator><author>luis</author><pubDate>Thu, 16 Feb 2012 01:17:00 GMT</pubDate><guid>http://www.shnenglu.com/luyulaile/archive/2012/02/16/165714.html</guid><wfw:comment>http://www.shnenglu.com/luyulaile/comments/165714.html</wfw:comment><comments>http://www.shnenglu.com/luyulaile/archive/2012/02/16/165714.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/luyulaile/comments/commentRss/165714.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/luyulaile/services/trackbacks/165714.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">package</span><span style="color: #000000; "> homework1;<br /><br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; "> java.lang.reflect.Constructor;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; "> java.lang.reflect.InvocationTargetException;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; "> java.util.Vector;<br /><br /></span><span style="color: #0000FF; ">public</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">class</span><span style="color: #000000; "> BayesianNetwork {<br />    </span><span style="color: #0000FF; ">public</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">static</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">final</span><span style="color: #000000; "> String Less</span><span style="color: #000000; ">=</span><span style="color: #000000; ">"</span><span style="color: #000000; "><45</span><span style="color: #000000; ">"</span><span style="color: #000000; ">;<br />    </span><span style="color: #0000FF; ">public</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">  </span><span style="color: #0000FF; ">final</span><span style="color: #000000; "> String Middle</span><span style="color: #000000; ">=</span><span style="color: #000000; ">"</span><span style="color: #000000; ">45-55</span><span style="color: #000000; ">"</span><span style="color: #000000; ">;<br />    </span><span style="color: #0000FF; ">public</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">  </span><span style="color: #0000FF; ">final</span><span style="color: #000000; "> String More</span><span style="color: #000000; ">=</span><span style="color: #000000; ">"</span><span style="color: #000000; ">>=55</span><span style="color: #000000; ">"</span><span style="color: #000000; ">;<br /></span><span style="color: #0000FF; ">enum</span><span style="color: #000000; "> A{Less,Middle,More};<br /></span><span style="color: #0000FF; ">public</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">class</span><span style="color: #000000; "> NodeA </span><span style="color: #0000FF; ">extends</span><span style="color: #000000; "> Node{<br />    A value;<br />}<br /></span><span style="color: #0000FF; ">enum</span><span style="color: #000000; "> G{Female,Male};<br /></span><span style="color: #0000FF; ">public</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">class</span><span style="color: #000000; "> NodeG </span><span style="color: #0000FF; ">extends</span><span style="color: #000000; "> Node{<br />    G value;<br />}<br /></span><span style="color: #0000FF; ">enum</span><span style="color: #000000; "> CP{Typical,Atypical,NonAnginal,None};<br /></span><span style="color: #0000FF; ">public</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">class</span><span style="color: #000000; "> NodeCP </span><span style="color: #0000FF; ">extends</span><span style="color: #000000; "> Node{<br />    CP value;<br />}<br /></span><span style="color: #0000FF; ">enum</span><span style="color: #000000; "> BP{Low,High};<br /></span><span style="color: #0000FF; ">class</span><span style="color: #000000; "> NodeBP </span><span style="color: #0000FF; ">extends</span><span style="color: #000000; "> Node{<br />    BP value;<br />}<br /></span><span style="color: #0000FF; ">enum</span><span style="color: #000000; "> CH{Low,High};<br /></span><span style="color: #0000FF; ">class</span><span style="color: #000000; "> NodeCH </span><span style="color: #0000FF; ">extends</span><span style="color: #000000; "> Node{<br />    CH value;<br />}<br /></span><span style="color: #0000FF; ">enum</span><span style="color: #000000; "> ECG{Normal,Abnormal};<br /></span><span style="color: #0000FF; ">class</span><span style="color: #000000; "> NodeECG </span><span style="color: #0000FF; ">extends</span><span style="color: #000000; "> Node{<br />    ECG value;<br />}<br /></span><span style="color: #0000FF; ">enum</span><span style="color: #000000; "> HR{Low,High};<br /></span><span style="color: #0000FF; ">class</span><span style="color: #000000; "> NodeHR </span><span style="color: #0000FF; ">extends</span><span style="color: #000000; "> Node{<br />    HR value;<br />}<br /></span><span style="color: #0000FF; ">enum</span><span style="color: #000000; "> EIA{No,Yes};<br /></span><span style="color: #0000FF; ">class</span><span style="color: #000000; "> NodeEIA </span><span style="color: #0000FF; ">extends</span><span style="color: #000000; "> Node{<br />    EIA value;<br />}<br /></span><span style="color: #0000FF; ">enum</span><span style="color: #000000; "> HD{No,Yes};<br /></span><span style="color: #0000FF; ">class</span><span style="color: #000000; "> NodeHD </span><span style="color: #0000FF; ">extends</span><span style="color: #000000; "> Node{<br />    HD value;<br />}<br /><br /></span><span style="color: #0000FF; ">class</span><span style="color: #000000; "> Node{<br /></span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">    Vector</span><span style="color: #000000; "><</span><span style="color: #000000; ">Node</span><span style="color: #000000; ">></span><span style="color: #000000; "> parent;<br /></span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">    String name;<br /></span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">    </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> cpt[];<br />    <br /> </span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">  Node(){<br />        </span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.parent</span><span style="color: #000000; ">=</span><span style="color: #0000FF; ">new</span><span style="color: #000000; "> Vector</span><span style="color: #000000; "><</span><span style="color: #000000; ">Node</span><span style="color: #000000; ">></span><span style="color: #000000; ">();<br />        cpt</span><span style="color: #000000; ">=</span><span style="color: #0000FF; ">new</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">[</span><span style="color: #000000; ">64</span><span style="color: #000000; ">];<br />    }<br />}<br /><br /></span><span style="color: #0000FF; ">public</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">static</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">void</span><span style="color: #000000; "> main(String[] args) </span><span style="color: #0000FF; ">throws</span><span style="color: #000000; "> IllegalArgumentException, InstantiationException, IllegalAccessException, InvocationTargetException, Exception, NoSuchMethodException<br />{<br />    Vector </span><span style="color: #000000; "><</span><span style="color: #000000; ">Node</span><span style="color: #000000; ">></span><span style="color: #000000; "> nodeList</span><span style="color: #000000; ">=</span><span style="color: #0000FF; ">new</span><span style="color: #000000; "> Vector</span><span style="color: #000000; "><</span><span style="color: #000000; ">Node</span><span style="color: #000000; ">></span><span style="color: #000000; ">();<br />    String[] nameList</span><span style="color: #000000; ">=</span><span style="color: #000000; ">{</span><span style="color: #000000; ">"</span><span style="color: #000000; ">A</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #000000; ">"</span><span style="color: #000000; ">G</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #000000; ">"</span><span style="color: #000000; ">CP</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #000000; ">"</span><span style="color: #000000; ">BP</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #000000; ">"</span><span style="color: #000000; ">CH</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #000000; ">"</span><span style="color: #000000; ">ECG</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #000000; ">"</span><span style="color: #000000; ">HR</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #000000; ">"</span><span style="color: #000000; ">EIA</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #000000; ">"</span><span style="color: #000000; ">HD</span><span style="color: #000000; ">"</span><span style="color: #000000; ">};<br />    System.out.println(NodeA.</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">);<br />    </span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(String a:nameList)<br />    {<br />        Class newoneClass </span><span style="color: #000000; ">=</span><span style="color: #000000; "> Class.forName(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">homework1.BayesianNetwork$Node</span><span style="color: #000000; ">"</span><span style="color: #000000; ">+</span><span style="color: #000000; ">a);//</span><span style="color: red; ">classname也不一?/span><span style="color: #000000; "><br />        Constructor cons </span><span style="color: #000000; ">=</span><span style="color: #000000; "> newoneClass.getDeclaredConstructors()[</span><span style="color: #000000; ">0</span><span style="color: #000000; ">];<br />        cons.setAccessible(</span><span style="color: #0000FF; ">true</span><span style="color: #000000; ">);<br />        Object node</span><span style="color: #000000; ">=</span><span style="color: #000000; "> cons.newInstance(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; "> BayesianNetwork()); //</span><span style="color: red; ">需要的是外部类的构造方?  }<br /><br />}</span><span style="color: #000000; "><br />        nodeList.add((Node) node);<br />    }<br /></span></div><img src ="http://www.shnenglu.com/luyulaile/aggbug/165714.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/luyulaile/" target="_blank">luis</a> 2012-02-16 09:17 <a href="http://www.shnenglu.com/luyulaile/archive/2012/02/16/165714.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java enum cd的遍?/title><link>http://www.shnenglu.com/luyulaile/archive/2011/12/27/162900.html</link><dc:creator>luis</dc:creator><author>luis</author><pubDate>Tue, 27 Dec 2011 04:40:00 GMT</pubDate><guid>http://www.shnenglu.com/luyulaile/archive/2011/12/27/162900.html</guid><wfw:comment>http://www.shnenglu.com/luyulaile/comments/162900.html</wfw:comment><comments>http://www.shnenglu.com/luyulaile/archive/2011/12/27/162900.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/luyulaile/comments/commentRss/162900.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/luyulaile/services/trackbacks/162900.html</trackback:ping><description><![CDATA[Java enum 枚D的遍?br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">private</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">enum</span><span style="color: #000000; "> Action{left,right,forward,continued };<br /><br /> </span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(Action action:Action.values())<br />                             {<br />   </span><span style="color: #008000; ">//</span><span style="color: #008000; ">Use variable action</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">}</span></div><img src ="http://www.shnenglu.com/luyulaile/aggbug/162900.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/luyulaile/" target="_blank">luis</a> 2011-12-27 12:40 <a href="http://www.shnenglu.com/luyulaile/archive/2011/12/27/162900.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java Hashtable HashMap ArrayList Vector {等http://www.shnenglu.com/luyulaile/archive/2011/12/27/162899.htmlluisluisTue, 27 Dec 2011 04:00:00 GMThttp://www.shnenglu.com/luyulaile/archive/2011/12/27/162899.htmlhttp://www.shnenglu.com/luyulaile/comments/162899.htmlhttp://www.shnenglu.com/luyulaile/archive/2011/12/27/162899.html#Feedback0http://www.shnenglu.com/luyulaile/comments/commentRss/162899.htmlhttp://www.shnenglu.com/luyulaile/services/trackbacks/162899.html阅读全文

luis 2011-12-27 12:00 发表评论
]]>
Eclipse快捷键大全[zt]http://www.shnenglu.com/luyulaile/archive/2011/11/17/160334.htmlluisluisThu, 17 Nov 2011 04:47:00 GMThttp://www.shnenglu.com/luyulaile/archive/2011/11/17/160334.htmlhttp://www.shnenglu.com/luyulaile/comments/160334.htmlhttp://www.shnenglu.com/luyulaile/archive/2011/11/17/160334.html#Feedback0http://www.shnenglu.com/luyulaile/comments/commentRss/160334.htmlhttp://www.shnenglu.com/luyulaile/services/trackbacks/160334.html
http://blog.csdn.net/zt2oo8/article/details/959280
有时我们复制?em style="color: #d14836; font-style: normal; ">Eclipse中的代码比较混ؕQ这时按Ctrl + Shift + F?/span>可以自动调整好代码的格式

Ctrl+1 快速修?最l典的快捷键,׃用多说了)
Ctrl+D: 删除当前?nbsp;
Ctrl+Alt+↓ 复制当前行到下一?复制增加)
Ctrl+Alt+↑ 复制当前行到上一?复制增加)
Alt+↓ 当前行和下面一行交互位|?特别实用,可以省去先剪?再粘贴了)
Alt+↑ 当前行和上面一行交互位|?同上)
Alt+← 前一个编辑的面
Alt+→ 下一个编辑的面(当然是针对上面那条来说了)
Alt+Enter 昄当前选择资源(工程,or 文g or文g)的属?br />Shift+Enter 在当前行的下一行插入空?q时鼠标可以在当前行的Q一位置,不一定是最?
Shift+Ctrl+Enter 在当前行插入I(原理同上?
Ctrl+Q 定位到最后编辑的地方
Ctrl+L 定位在某?nbsp;(对于E序过100的h有音?
Ctrl+M 最大化当前的Edit或View (再按则反?
Ctrl+/ 注释当前?再按则取消注?br />Ctrl+O 快速显C?nbsp;OutLine
Ctrl+T 快速显C当前类的承结?br />Ctrl+W 关闭当前Editer
Ctrl+K 参照选中的Word快速定位到下一?br />Ctrl+E 快速显C当前Editer的下拉列?如果当前面没有昄的用黑体表示)
Ctrl+/(键? 折叠当前cM的所有代?br />Ctrl+×(键? 展开当前cM的所有代?br />Ctrl+Space 代码助手完成一些代码的插入(但一般和输入法有冲突,可以修改输入法的热键,也可以暂用Alt+/来代?
Ctrl+Shift+E 昄理当前打开的所有的View的管理器(可以选择关闭,Ȁzȝ操作)
Ctrl+J 正向增量查找(按下Ctrl+J?你所输入的每个字母编辑器都提供快速匹配定位到某个单词,如果没有,则在stutes line中显C没有找C,查一个单词时,特别实用,q个功能Idea两年前就有了)
Ctrl+Shift+J 反向增量查找(和上条相?只不q是从后往前查)
Ctrl+Shift+F4 关闭所有打开的Editer
Ctrl+Shift+X 把当前选中的文本全部变呛_?br />Ctrl+Shift+Y 把当前选中的文本全部变为小?br />Ctrl+Shift+F 格式化当前代?br />Ctrl+Shift+P 定位到对于的匚wW?譬如{}) (从前面定位后面时,光标要在匚wW里?后面到前?则反?

下面的快捷键是重构里面常用的,本hp己喜Ƣ且常用的整理一??一般重构的快捷键都是Alt+Shift开头的?
Alt+Shift+R 重命?nbsp;(是我自己最q的一个了,其是变量和cȝRename,比手工方法能节省很多力_?
Alt+Shift+M 抽取Ҏ (q是重构里面最常用的方法之一?其是对一大堆泥团代码有用)
Alt+Shift+C 修改函数l构(比较实用,有N个函数调用了q个Ҏ,修改一ơ搞?
Alt+Shift+L 抽取本地变量( 可以直接把一些魔法数字和字符串抽取成一个变?其是多处调用的时?
Alt+Shift+F 把Class中的local变量变ؓfield变量 (比较实用的功?
Alt+Shift+I 合ƈ变量(可能q样说有点不妥Inline)
Alt+Shift+V Ud函数和变?不怎么常用)
Alt+Shift+Z 重构的后悔药(Undo)

~辑
作用?nbsp;功能 快捷?nbsp;
全局 查找q替?nbsp;Ctrl+F 
文本~辑?nbsp;查找上一?nbsp;Ctrl+Shift+K 
文本~辑?nbsp;查找下一?nbsp;Ctrl+K 
全局 撤销 Ctrl+Z 
全局 复制 Ctrl+C 
全局 恢复上一个选择 Alt+Shift+↓ 
全局 剪切 Ctrl+X 
全局 快速修?nbsp;Ctrl1+1 
全局 内容辅助 Alt+/ 
全局 全部选中 Ctrl+A 
全局 删除 Delete 
全局 上下文信?nbsp;Alt+Q?br />Alt+Shift+?
Ctrl+Shift+Space 
Java~辑?nbsp;昄工具提示描述 F2 
Java~辑?nbsp;选择装元素 Alt+Shift+↑ 
Java~辑?nbsp;选择上一个元?nbsp;Alt+Shift+← 
Java~辑?nbsp;选择下一个元?nbsp;Alt+Shift+→ 
文本~辑?nbsp;增量查找 Ctrl+J 
文本~辑?nbsp;增量逆向查找 Ctrl+Shift+J 
全局 _脓 Ctrl+V 
全局 重做 Ctrl+Y 

 
查看
作用?nbsp;功能 快捷?nbsp;
全局 攑֤ Ctrl+= 
全局 ~小 Ctrl+- 

 
H口
作用?nbsp;功能 快捷?nbsp;
全局 Ȁzȝ辑器 F12 
全局 切换~辑?nbsp;Ctrl+Shift+W 
全局 上一个编辑器 Ctrl+Shift+F6 
全局 上一个视?nbsp;Ctrl+Shift+F7 
全局 上一个透视?nbsp;Ctrl+Shift+F8 
全局 下一个编辑器 Ctrl+F6 
全局 下一个视?nbsp;Ctrl+F7 
全局 下一个透视?nbsp;Ctrl+F8 
文本~辑?nbsp;昄标尺上下文菜?nbsp;Ctrl+W 
全局 昄视图菜单 Ctrl+F10 
全局 昄pȝ菜单 Alt+- 

 
D
作用?nbsp;功能 快捷?nbsp;
Java~辑?nbsp;打开l构 Ctrl+F3 
全局 打开cd Ctrl+Shift+T 
全局 打开cd层次l构 F4 
全局 打开声明 F3 
全局 打开外部javadoc Shift+F2 
全局 打开资源 Ctrl+Shift+R 
全局 后退历史记录 Alt+← 
全局 前进历史记录 Alt+→ 
全局 上一?nbsp;Ctrl+, 
全局 下一?nbsp;Ctrl+. 
Java~辑?nbsp;昄大纲 Ctrl+O 
全局 在层ơ结构中打开cd Ctrl+Shift+H 
全局 转至匚w的括?nbsp;Ctrl+Shift+P 
全局 转至上一个编辑位|?nbsp;Ctrl+Q 
Java~辑?nbsp;转至上一个成?nbsp;Ctrl+Shift+↑ 
Java~辑?nbsp;转至下一个成?nbsp;Ctrl+Shift+↓ 
文本~辑?nbsp;转至?nbsp;Ctrl+L 

 
搜烦
作用?nbsp;功能 快捷?nbsp;
全局 出现在文件中 Ctrl+Shift+U 
全局 打开搜烦对话?nbsp;Ctrl+H 
全局 工作Z的声?nbsp;Ctrl+G 
全局 工作Z的引?nbsp;Ctrl+Shift+G 

 
文本~辑
作用?nbsp;功能 快捷?nbsp;
文本~辑?nbsp;改写切换 Insert 
文本~辑?nbsp;上滚?nbsp;Ctrl+↑ 
文本~辑?nbsp;下滚?nbsp;Ctrl+↓ 

 
文g
作用?nbsp;功能 快捷?nbsp;
全局 保存 Ctrl+X 
Ctrl+S 
全局 打印 Ctrl+P 
全局 关闭 Ctrl+F4 
全局 全部保存 Ctrl+Shift+S 
全局 全部关闭 Ctrl+Shift+F4 
全局 属?nbsp;Alt+Enter 
全局 新徏 Ctrl+N 

 

作用?nbsp;功能 快捷?nbsp;
全局 全部构徏 Ctrl+B 

 
源代?br />作用?nbsp;功能 快捷?nbsp;
Java~辑?nbsp;格式?nbsp;Ctrl+Shift+F 
Java~辑?nbsp;取消注释 Ctrl+\ 
Java~辑?nbsp;注释 Ctrl+/ 
Java~辑?nbsp;d导入 Ctrl+Shift+M 
Java~辑?nbsp;l织导入 Ctrl+Shift+O 
Java~辑?nbsp;使用try/catch块来包围 未设|,太常用了Q所以在q里列出,自己讄?br />也可以用Ctrl+1自动修正?nbsp;

 
q行
作用?nbsp;功能 快捷?nbsp;
全局 单步q回 F7 
全局 单步跌 F6 
全局 单步跛_ F5 
全局 单步跛_选择 Ctrl+F5 
全局 调试上次启动 F11 
全局 l箋 F8 
全局 使用qo器单步执?nbsp;Shift+F5 
全局 d/去除断点 Ctrl+Shift+B 
全局 昄 Ctrl+D 
全局 q行上次启动 Ctrl+F11 
全局 q行臌 Ctrl+R 
全局 执行 Ctrl+U 

 
重构
作用?nbsp;功能 快捷?nbsp;
全局 撤销重构 Alt+Shift+Z 
全局 抽取Ҏ Alt+Shift+M 
全局 抽取局部变?nbsp;Alt+Shift+L 
全局 内联 Alt+Shift+I 
全局 Ud Alt+Shift+V 
全局 重命?nbsp;Alt+Shift+R 
全局 重做 Alt+Shift+Y




luis 2011-11-17 12:47 发表评论
]]>
Java 中scanner 可以代替C中的Scanf[zt]http://www.shnenglu.com/luyulaile/archive/2011/11/17/160321.htmlluisluisThu, 17 Nov 2011 02:57:00 GMThttp://www.shnenglu.com/luyulaile/archive/2011/11/17/160321.htmlhttp://www.shnenglu.com/luyulaile/comments/160321.htmlhttp://www.shnenglu.com/luyulaile/archive/2011/11/17/160321.html#Feedback0http://www.shnenglu.com/luyulaile/comments/commentRss/160321.htmlhttp://www.shnenglu.com/luyulaile/services/trackbacks/160321.html

源文Q? http://hi.baidu.com/yfwz100/blog/item/61f8c08bf0ff79cbfd1f1098.html
从C语言转到Java的时候,对Java的输入输出可能会颇ؓ沮Q因为Java没有昑ּ提供scanf()/printf()的函数?/span>

 

其实QJaval我们提供了格式化输入输出的面向对象方式?/p>

格式化输出:

最单的是直接使用重蝲了的“+”来连接各U数据,q样比printf()个直观的Ҏ。但也有~点Q太多的“+”号反而打乱所有的输出Q而且输出格式不好控制?/p>

q有一U方式是使用InputStream的format()ҎQ或者,如果使用的JDK版本?.0以后的话Q可以考虑相同的printf()Ҏ。这两个Ҏ和printf()是相同的?/p>

格式化输入:

q个问题比较困难Q我现在扑ֈ的方法都是从JDK 5.0以后引入的。而且Q还是没有像scanf()那样直接替代的方法。但我们可以使用java.util.Scanner。但可惜的是

sc.nextInt();

是读取一行数据,然后转换为整敎ͼ而我们在使用scanf()Ӟ可能会这P

scanf("%d %d", &a, &b);

采用I格分割两个整数的输入,Ҏ之下Qjava.util.ScannercL供的Ҏ显得局限了?/p>

但事实上Qjava.util.ScannercL供了useDelimiter()Ҏ来指明分割符。注意,“分割W?#8221;是用正则表辑ּ的Ş式,参看Patternc?/a>?/span>

如上q?/span>

scanf("%d %d", &a, &b);

替代?/span>

sc.useDelimiter("\\s+");a=sc.nextInt();b=sc.nextInt();

来替代(假设sc是一个java.util.Scannercd象)。注意,在Java正则表达式中Q?#8220;\s”代表了[\t\n\x0B\f\r ]M者(表示I白字符Q。?#8220;+”表示不仅仅一个,卌l的“I白字符”也可以?/span>

详细信息参见java.util.Scannerc?/a>?/span>


http://download.oracle.com/javase/7/docs/api/java/util/Scanner.html



luis 2011-11-17 10:57 发表评论
]]>
Java IOhttp://www.shnenglu.com/luyulaile/archive/2011/11/17/160312.htmlluisluisThu, 17 Nov 2011 01:30:00 GMThttp://www.shnenglu.com/luyulaile/archive/2011/11/17/160312.htmlhttp://www.shnenglu.com/luyulaile/comments/160312.htmlhttp://www.shnenglu.com/luyulaile/archive/2011/11/17/160312.html#Feedback0http://www.shnenglu.com/luyulaile/comments/commentRss/160312.htmlhttp://www.shnenglu.com/luyulaile/services/trackbacks/160312.htmlBufferedReader   in=   new   BufferedReader(new   FileReader( "d:\\co\\work3.sql ")); 
                String   input=new   String(); 
                String   tablename=new   String( " "); 
                StringBuffer   transresult=new   StringBuffer(); 
                int   lbracketpos,rbracketpos; 
                boolean   newtable; 
                input=in.readLine();


-------

用java.io.RandomAccessFile的readLine()Ҏ 

------

FileReader对象只有readҎ
---------------
/* 
* 单的?写文本文件的CZ 
* q里包含了三个例子,?nbsp;
* 1. 文件读入到内存Q这里是StringBufferQ的例子 
* 2. 内容中的文本写到文?nbsp;
* 3. 一个文件的内容d来写入另一个文件中 
* 同时也展CZ如果从输入流中读出来内容写入输出中Q仅限文本流Q?nbsp;
* 三个例子可以独立存在Q所以根据需要只看其中一个就行了?nbsp;
*/ 

import java.io.BufferedReader; 
import java.io.FileInputStream; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.io.OutputStream; 
import java.io.OutputStreamWriter; 
import java.io.PrintStream; 
import java.io.PrintWriter; 

public final class AccessTextFile { 

/** 
* 1. 演示流中的文本d一?StringBuffer ?nbsp;
* @throws IOException 
*/ 
public void readToBuffer(StringBuffer buffer, InputStream is) 
throws IOException { 
String line; // 用来保存每行d的内?nbsp;
BufferedReader reader = new BufferedReader(new InputStreamReader(is)); 
line = reader.readLine(); // dW一?nbsp;
while (line != null) { // 如果 line 为空说明d?nbsp;
buffer.append(line); // 读到的内容d?buffer ?nbsp;
buffer.append("\n"); // d换行W?nbsp;
line = reader.readLine(); // d下一?nbsp;



/** 
* 2. 演示?StringBuffer 中的内容d到流?nbsp;
*/ 
public void writeFromBuffer(StringBuffer buffer, OutputStream os) { 
// ?PrintStream 可以方便的把内容输出到输出流?nbsp;
// 其对象的用法?System.out 一?nbsp;
// QSystem.out 本n是 PrintStream 对象Q?nbsp;
PrintStream ps = new PrintStream(os); 
ps.print(buffer.toString()); 


/** 
* 3*. 从输入流中拷贝内容到输入中 
* @throws IOException 
*/ 
public void copyStream(InputStream is, OutputStream os) throws IOException { 
// q个读过q程可以参阅 readToBuffer 中的注释 
String line; 
BufferedReader reader = new BufferedReader(new InputStreamReader(is)); 
PrintWriter writer = new PrintWriter(new OutputStreamWriter(os)); 
line = reader.readLine(); 
while (line != null) { 
writer.println(line); 
line = reader.readLine(); 

writer.flush(); // 最后确定要把输出流中的东西都写出去?nbsp;
// q里不关?writer 是因?os 是从外面传进来的 
// 既然不是从这里打开的,也就不从q里关闭 
// 如果关闭?writerQ封装在里面?os 也就被关?nbsp;


/** 
* 3. 调用 copyStream(InputStream, OutputStream) Ҏ拯文本文g 
*/ 
public void copyTextFile(String inFilename, String outFilename) 
throws IOException { 
// 先根据输?输出文g生成相应的输?输出?nbsp;
InputStream is = new FileInputStream(inFilename); 
OutputStream os = new FileOutputStream(outFilename); 
copyStream(is, os); // ?copyStream 拯内容 
is.close(); // is 是在q里打开的,所以需要关?nbsp;
os.close(); // os 是在q里打开的,所以需要关?nbsp;


public static void main(String[] args) throws IOException { 
int sw = 1; // 三种试的选择开?nbsp;
AccessTextFile test = new AccessTextFile(); 

switch (sw) { 
case 1: // 试?nbsp;

InputStream is = new FileInputStream("E:\\test.txt"); 
StringBuffer buffer = new StringBuffer(); 
test.readToBuffer(buffer, is); 
System.out.println(buffer); // 读?buffer 中的内容写出?nbsp;
is.close(); 
break; 

case 2: // 试?nbsp;

StringBuffer buffer = new StringBuffer("Only a test\n"); 
test.writeFromBuffer(buffer, System.out); 
break; 

case 3: // 试拯 

test.copyTextFile("E:\\test.txt", "E:\\r.txt"); 

break; 





==============

//q个是用reader的,q个不会出现异常

import java.io.*;
import java.util.*;

public class Test {
    public static void main(String[] args) throws Exception {
        File file = new File("Test.java");
        BufferedReader reader = new BufferedReader(new FileReader(file));
        String line = null;
        
        while ((line = reader.readLine()) != null) {
            System.out.println(line);
        }
        reader.close();
    }
}

 



luis 2011-11-17 09:30 发表评论
]]>
Java 计时 Java timinghttp://www.shnenglu.com/luyulaile/archive/2011/09/26/156894.htmlluisluisMon, 26 Sep 2011 15:15:00 GMThttp://www.shnenglu.com/luyulaile/archive/2011/09/26/156894.htmlhttp://www.shnenglu.com/luyulaile/comments/156894.htmlhttp://www.shnenglu.com/luyulaile/archive/2011/09/26/156894.html#Feedback0http://www.shnenglu.com/luyulaile/comments/commentRss/156894.htmlhttp://www.shnenglu.com/luyulaile/services/trackbacks/156894.htmlapps.hi.baidu.com/share/detail/33559179

Java E序计时QJava TimingQ?/div>
Q?Q如何精给代码计时Q?/div>

Q?Q计时机制本w的旉开销Q?/p>

l典的程序计时利用Java APIҎQ?font face="新宋?>System.currentTimeMillis()Q在待测代码前后攄一个秒表(stopwatchQ,计算前后旉差即可?/div>
下面是一个引?#8220;”的stopwatchc,
import java.io.PrintStream;

final class Timer{ 

    private long startTime;
    private long endTime;
    public Timer() {   reset(); }

    public void start() {
        System.gc();
        startTime = System.currentTimeMillis();
    } 
    public void end() {
        System.gc();
        endTime = System.currentTimeMillis();
     }
    public long duration() {
        return (endTime - startTime);
    }
    public void printDuration( PrintStream out ) {
        long elapsedTimeInSecond = duration() / 1000;
        long remainderInMillis = duration() % 1000;
        out.println("\nTotal execution time:"
              + elapsedTimeInSecond + "."
                + remainderInMillis
                + " seconds");
    }
    public void reset() {
        startTime = 0;
         endTime = 0;
    }
    public static void main( String[] args ) {
        Timer timer = new Timer();
        timer.start();
        for (int i = 0; i < 500; i++) {
           System.out.print("#");
        }
        timer.end();
        timer.printDuration(System.out); }
}
q是一U常规做法?/div>
在多U程环境中,U程切换由OS控制Q因此两ơ掐表之间可能记录了被OS切换到的其它U程的执行时_q期间甚臛_含其它线E的长耗时I/O操作?/div>
多次掐表然后求其q_可一定程度上qxq种误差Q然而,对于高精度要求,上述APIU表计时方式是有~陷的?/div>
Jesper ?#8220;Use the JVM Profiler Interface for accurate timing”中描qC一U利用Java Virtual Machine Profiler Interface (JVMPI)的方?br />
发现了两个新的函?System.currentTimeMillis()和System.nanoTime()。其中System.nanoTime()?.5版以后的新函数。这两个函数都是q回当前pȝ的时_只是System.nanoTime()q回的精度更高?/span>


luis 2011-09-26 23:15 发表评论
]]>Java多态中的方法覆?/title><link>http://www.shnenglu.com/luyulaile/archive/2011/04/08/143742.html</link><dc:creator>luis</dc:creator><author>luis</author><pubDate>Fri, 08 Apr 2011 10:35:00 GMT</pubDate><guid>http://www.shnenglu.com/luyulaile/archive/2011/04/08/143742.html</guid><wfw:comment>http://www.shnenglu.com/luyulaile/comments/143742.html</wfw:comment><comments>http://www.shnenglu.com/luyulaile/archive/2011/04/08/143742.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/luyulaile/comments/commentRss/143742.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/luyulaile/services/trackbacks/143742.html</trackback:ping><description><![CDATA[<span style="widows: 2; text-transform: none; text-indent: 0px; border-collapse: separate; font: medium 'Times New Roman'; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"><span style="line-height: 20px; font-family: Arial; font-size: 14px; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px" class="Apple-style-span">多?nbsp;(Polymorphism) 大家应该都不陌生Q它是我们开发面向对象系l的“老朋?#8221;?nbsp;。但是老朋友也会有“烦心”的时候啊Q呵c有时候不注意Q还真会被它隑ֈ。譬如下面这个例子(thank HaydenQ。大家可以先不看下面的答案,在自p中q行一道,看看自己想的跟实际结果是否相W?br style="line-height: normal" /> <div style="border-bottom: #cccccc 1px solid; filter: none; border-left: #cccccc 1px solid; padding-bottom: 5px; line-height: normal; background-color: #f3f3f3; margin: 5px 20px; padding-left: 5px; padding-right: 5px; zoom: 1 !important; font-family: Arial; word-wrap: break-word; visibility: visible !important; font-size: 14px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 5px; background-origin: initial; background-clip: initial">public class Polymorphism{<br style="line-height: normal" /> public static void main(String[] args) {<br style="line-height: normal" />  A b = new B();<br style="line-height: normal" />  b.fb();<br style="line-height: normal" /> }<br style="line-height: normal" />}</div> <div style="border-bottom: #cccccc 1px solid; filter: none; border-left: #cccccc 1px solid; padding-bottom: 5px; line-height: normal; background-color: #f3f3f3; margin: 5px 20px; padding-left: 5px; padding-right: 5px; zoom: 1 !important; font-family: Arial; word-wrap: break-word; visibility: visible !important; font-size: 14px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 5px; background-origin: initial; background-clip: initial">class A {<br style="line-height: normal" /> public A(){<br style="line-height: normal" />  <br style="line-height: normal" /> }<br style="line-height: normal" /> public void fa() {<br style="line-height: normal" />  System.out.println("CLASS A :Function fa Runing......");<br style="line-height: normal" /> }<br style="line-height: normal" /><br style="line-height: normal" /> public void fb() {<br style="line-height: normal" />  System.out.println("CLASS A :Function fb Runing......");<br style="line-height: normal" />  fa();<br style="line-height: normal" />  System.out.println("CLASS A :Function fb Stop......");<br style="line-height: normal" /> }<br style="line-height: normal" />}</div> <div style="border-bottom: #cccccc 1px solid; filter: none; border-left: #cccccc 1px solid; padding-bottom: 5px; line-height: normal; background-color: #f3f3f3; margin: 5px 20px; padding-left: 5px; padding-right: 5px; zoom: 1 !important; font-family: Arial; word-wrap: break-word; visibility: visible !important; font-size: 14px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 5px; background-origin: initial; background-clip: initial">class B extends A {<br style="line-height: normal" /> public B(){<br style="line-height: normal" /> }<br style="line-height: normal" /> public void fa() {<br style="line-height: normal" />  System.out.println("CLASS B :Function fa Runing......");<br style="line-height: normal" /> }<br style="line-height: normal" /><br style="line-height: normal" /> public void fb() {<br style="line-height: normal" />  System.out.println("CLASS B :Function fb Runing......");<br style="line-height: normal" />  super.fb();<br style="line-height: normal" />  System.out.println("CLASS B :Function fb Stop......");<br style="line-height: normal" /> }<br style="line-height: normal" />}</div> 下面是它的运行结果:<br style="line-height: normal" /> <div style="border-bottom: #cccccc 1px solid; filter: none; border-left: #cccccc 1px solid; padding-bottom: 5px; line-height: normal; background-color: #f3f3f3; margin: 5px 20px; padding-left: 5px; padding-right: 5px; zoom: 1 !important; font-family: Arial; word-wrap: break-word; visibility: visible !important; font-size: 14px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 5px; background-origin: initial; background-clip: initial">CLASS B :Function fb Runing......<br style="line-height: normal" />CLASS A :Function fb Runing......<br style="line-height: normal" />CLASS B :Function fa Runing......<br style="line-height: normal" />CLASS A :Function fb Stop......<br style="line-height: normal" />CLASS B :Function fb Stop......</div> <p style="line-height: normal">   怎么P猜对l果了吗Q如果结果跟你想象的一模一P那么恭喜你,你对多态已l有初步了解了,L在语法层ơ上是比较熟悉了。但是,千万不要“z洋得意”Q你可否解析l果Z么会是这样吗Q我们可以先来梳理一下程序流E:<br style="line-height: normal" />   1、运行main函数Q创建B对象(<span style="color: red">A b = new B(),完全可以替代B b=new B();</span>)Q调用B的方法fbQ于是打印出"CLASS B :Function fb Runing......"Q都在情理之中?br style="line-height: normal" />   2、执行super.fb()Q调用父cA的方法fbQ首先打印出"CLASS A :Function fb Runing......"Q预料之?br style="line-height: normal" />   3、执行方法fa()Q打印出"CLASS B :Function fa Runing......"Q呃Q奇怪了Qؓ什么不是执行A的方法fa(),而是子类B中的fa()呢?<strong style="line-height: normal">当前被执行的是类A的方法,那么虚拟机找到的应该是AcȝMethod TableQ找到的应该是AcȝҎfa()啊?</strong>难解?br style="line-height: normal" />   4、打?CLASS A :Function fb Stop......"Q返?br style="line-height: normal" />   5、打?strong style="line-height: normal">"</strong>CLASS A :Function fb Stop....."Q返回,E序l束?br style="line-height: normal" />  现在问题清楚了,是虚拟机在执行cAҎ的时候查扄Method Table竟然是子cB的。ؓ什么呢Q其实,只要我们清楚javaҎ调用的方式,q个问题p刃而解了。在Java虚拟ZQ每启动一个新的线E,虚拟机都会ؓ它分配一个Java栈,而每当线E调用一个javaҎӞ虚拟机就会在该线E的java栈中压入一个新帧,用以存储参数Q局部变量等数据。我们将q个正在被执行的ҎUCؓ该线E的当前ҎQ其相应的栈帧ؓ当前帧?br style="line-height: normal" />    好了Q当我们调用一个方法时Q我们需要往当前帧中压入哪些参数呢?单,Ҏ的参数列表中不是都说得清清楚楚的吗?嗯,对于C语言来说Q这个说法是正确的,但是对于诸如C++QJavaQPython{面向对象语a来说Q却是不对的?span style="background-color: yellow">大家q记得那?this"指针吗?Q?/span>不错Q?strong style="line-height: normal">在Java中,所有的实例ҎQInstance MethodQ调用的时候都会把当前对象压入当前帧中QJava虚拟机正是通过q个参数来决定当前所使用的类Q通过判断该对象的cdQ?/strong>?br style="line-height: normal" />    在上面的例子中,main中调用b.fb()Ӟ压入的当前对象自然是Bcd象,我们Cؓb。在B的fb()中调用super.fb()Ӟ压入的就是刚刚压入的对象Q也是b了。同P在A的fb中调用fa()Ӟ压入的也是b。因此,在?nbsp;invokevirtual指o调用fa()Ӟ扄是B的方法表Q当前对象b的类型ؓBQ,也就执行了类B的fa了?br style="line-height: normal" />    q种现象在构造函C特别常见Q因为构造函C会隐含用调用父cȝ构造函数的Q如果在父类的构造函C调用了实例方法(?nbsp;A的faQ,而在子类中又覆盖了这个实例方法(?nbsp;B的faQ,那么得到的结果往往不是我们所要的。因此,我们最好不要在构造函C使用多态方法,不然QDebug会很痛苦的:Q?/p> </span></span><img src ="http://www.shnenglu.com/luyulaile/aggbug/143742.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/luyulaile/" target="_blank">luis</a> 2011-04-08 18:35 <a href="http://www.shnenglu.com/luyulaile/archive/2011/04/08/143742.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java 构造函?/title><link>http://www.shnenglu.com/luyulaile/archive/2010/12/22/137218.html</link><dc:creator>luis</dc:creator><author>luis</author><pubDate>Wed, 22 Dec 2010 12:03:00 GMT</pubDate><guid>http://www.shnenglu.com/luyulaile/archive/2010/12/22/137218.html</guid><wfw:comment>http://www.shnenglu.com/luyulaile/comments/137218.html</wfw:comment><comments>http://www.shnenglu.com/luyulaile/archive/2010/12/22/137218.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/luyulaile/comments/commentRss/137218.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/luyulaile/services/trackbacks/137218.html</trackback:ping><description><![CDATA[<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img id="Codehighlighter1_17_382_Open_Image" onclick="this.style.display='none'; Codehighlighter1_17_382_Open_Text.style.display='none'; Codehighlighter1_17_382_Closed_Image.style.display='inline'; Codehighlighter1_17_382_Closed_Text.style.display='inline';" align="top" src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_17_382_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_17_382_Closed_Text.style.display='none'; Codehighlighter1_17_382_Open_Image.style.display='inline'; Codehighlighter1_17_382_Open_Text.style.display='inline';" align="top" src="http://www.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif"><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000"> Msg </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_17_382_Closed_Text"><img src="http://www.shnenglu.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_17_382_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" alt="" />    Agent.agent_actor actor;<br /><img id="Codehighlighter1_46_132_Open_Image" onclick="this.style.display='none'; Codehighlighter1_46_132_Open_Text.style.display='none'; Codehighlighter1_46_132_Closed_Image.style.display='inline'; Codehighlighter1_46_132_Closed_Text.style.display='inline';" align="top" src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_46_132_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_46_132_Closed_Text.style.display='none'; Codehighlighter1_46_132_Open_Image.style.display='inline'; Codehighlighter1_46_132_Open_Text.style.display='inline';" align="top" src="http://www.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif">    </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_46_132_Closed_Text">/** */</span><span id="Codehighlighter1_46_132_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000">消息cdQ接受对方出?谈判p|退?Zh;Ҏ接受自己Zh谈判成功;新进入谈?向所有对手出完h或已l退判结束回{,注意ACCPET只向发出一个agent发出</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br /><img id="Codehighlighter1_146_186_Open_Image" onclick="this.style.display='none'; Codehighlighter1_146_186_Open_Text.style.display='none'; Codehighlighter1_146_186_Closed_Image.style.display='inline'; Codehighlighter1_146_186_Closed_Text.style.display='inline';" align="top" src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_146_186_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_146_186_Closed_Text.style.display='none'; Codehighlighter1_146_186_Open_Image.style.display='inline'; Codehighlighter1_146_186_Open_Text.style.display='inline';" align="top" src="http://www.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif">    </span><span style="color: #0000ff">enum</span><span style="color: #000000"> answer</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_146_186_Closed_Text"><img src="http://www.shnenglu.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_146_186_Open_Text"><span style="color: #000000">{ACCEPT,REJECT,OFFER,OK,NEWMEM,ENDANSWER}</span></span><span style="color: #000000">;<br /><img align="top" src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" alt="" />    answer msg_type;<br /><img align="top" src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" alt="" />    Offer offer;<br /><img align="top" src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" alt="" />    </span><span style="color: #0000ff">int</span><span style="color: #000000"> from_no;<br /><img align="top" src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" alt="" />    </span><span style="color: #0000ff">int</span><span style="color: #000000"> to_no;<br /><img align="top" src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" alt="" />    <br /><img align="top" src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" alt="" />    </span><span style="color: #0000ff">double</span><span style="color: #000000"> min[];<br /><img align="top" src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" alt="" />    <br /><img align="top" src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" alt="" />    </span><span style="color: #0000ff">double</span><span style="color: #000000"> max[];<br /><img align="top" src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" alt="" />    Msg(<br /><img id="Codehighlighter1_289_380_Open_Image" onclick="this.style.display='none'; Codehighlighter1_289_380_Open_Text.style.display='none'; Codehighlighter1_289_380_Closed_Image.style.display='inline'; Codehighlighter1_289_380_Closed_Text.style.display='inline';" align="top" src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_289_380_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_289_380_Closed_Text.style.display='none'; Codehighlighter1_289_380_Open_Image.style.display='inline'; Codehighlighter1_289_380_Open_Text.style.display='inline';" align="top" src="http://www.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif">    </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_289_380_Closed_Text"><img src="http://www.shnenglu.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_289_380_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" alt="" />        min</span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> </span><span style="color: #0000ff">double</span><span style="color: #000000">[Negotiation.NUM_ISSUE</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">];    <br /><img align="top" src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" alt="" />        max</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000"> </span><span style="color: #0000ff">double</span><span style="color: #000000">[Negotiation.NUM_ISSUE</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">];<br /><img align="top" src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" />    }</span></span><span style="color: #000000"><br /><img align="top" src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" alt="" />}</span></span></div> <br />如果对象成员中有非基本类型成员,比如上例中的 offer对象是Msg的成员,<br />则必d构造函C初始化该对象Q否则ؓnull?br /><br />应该构造函数Msg改ؓ<br /> Msg()<br /> {<br />  min= new double[Negotiation.NUM_ISSUE+1]; <br />  max=new double[Negotiation.NUM_ISSUE+1];<br />     offer=new Offer();<br /> }<img src ="http://www.shnenglu.com/luyulaile/aggbug/137218.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/luyulaile/" target="_blank">luis</a> 2010-12-22 20:03 <a href="http://www.shnenglu.com/luyulaile/archive/2010/12/22/137218.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java对象及其引用http://www.shnenglu.com/luyulaile/archive/2010/12/22/137162.htmlluisluisWed, 22 Dec 2010 02:33:00 GMThttp://www.shnenglu.com/luyulaile/archive/2010/12/22/137162.htmlhttp://www.shnenglu.com/luyulaile/comments/137162.htmlhttp://www.shnenglu.com/luyulaile/archive/2010/12/22/137162.html#Feedback0http://www.shnenglu.com/luyulaile/comments/commentRss/137162.htmlhttp://www.shnenglu.com/luyulaile/services/trackbacks/137162.html 原文地址Q?span class=f>blog.csdn.net/beepbug/archive/2006/08/14/1062790.aspx

      初学JavaӞ在很长一D|间里Q总觉得基本概念很模糊。后来才知道Q在许多Java书中Q把对象和对象的引用混ؓ一谈。可是,如果我分不清对象与对象引用,那实在没法很好地理解下面的面向对象技术。把自己的一点认识写下来Q或许能让初学Java的朋友们走一点弯路?br>       Z于说明,我们先定义一个简单的c:
 class Vehicle {
int passengers;      
int fuelcap;
int mpg;
}
有了q个模板Q就可以用它来创建对象:
       Vehicle veh1 = new Vehicle();
通常把这条语句的动作UC为创Z个对象,其实Q它包含了四个动作?br>1Q右边的“new Vehicle”Q是以VehiclecMؓ模板Q在堆空间里创徏一个Vehiclecd象(也简UCؓVehicle对象Q?br>2Q末()意味着Q在对象创徏后,立即调用Vehiclecȝ构造函敎ͼ对刚生成的对象进行初始化。构造函数是肯定有的。如果你没写QJava会给你补上一个默认的构造函数?br>3Q左边的“Vehicle veh1”创徏了一个Vehiclecd用变量。所谓Vehiclecd用,是以后可以用来指向Vehicle对象的对象引用?br>4Q?#8220;=”操作W对象引用指向刚创建的那个Vehicle对象?br>我们可以把这条语句拆成两部分Q?br>Vehicle veh1;
veh1 = new Vehicle();
效果是一L。这样写Q就比较清楚了,有两个实体:一是对象引用变量,一是对象本w?br>       在堆I间里创建的实体Q与在数据段以及栈空间里创徏的实体不同。尽它们也是确实实存在的实体Q但是,我们看不见,也摸不着。不仅如此,我们仔细研究一下第二句Q找扑ֈ创徏的对象叫什么名字?有h_它叫“Vehicle”。不对,“Vehicle”是类Q对象的创徏模板Q的名字。一个Vehiclecd以据此创建出无数个对象,q些对象不可能全?#8220;Vehicle”?br>       对象q名都没有,没法直接讉K它。我们只能通过对象引用来间接访问对象?br>       Z形象地说明对象、引用及它们之间的关p,可以做一个或怸很妥当的比喻。对象好比是一只很大的气球Q大到我们抓不住它。引用变量是一根Q可以用来系汽球?br>       如果只执行了W一条语句,q没执行W二条,此时创徏的引用变量veh1q没指向M一个对象,它的值是null。引用变量可以指向某个对象,或者ؓnull。它是一根Q一根还没有pMM一个汽球的l뀂执行了W二句后Q一只新汽球做出来了Qƈ被系在veh1q根l上。我们抓住这根Q就{于抓住了那只汽球?br>       再来一句:
       Vehicle veh2;
又做了一根Q还没系上汽球。如果再加一句:
       veh2 = veh1;
pM了。这里,发生了复制行为。但是,要说明的是,对象本nq没有被复制Q被复制的只是对象引用。结果是Qveh2也指向了veh1所指向的对象。两根Ѿpȝ是同一只汽球?br>       如果用下句再创徏一个对象:
veh2 = new Vehicle();
则引用变量veh2Ҏ向第二个对象?br>       从以上叙q再推演下去Q我们可以获得以下结论:Q?Q一个对象引用可以指?个或1个对象(一根子可以不pL球,也可以系一个汽球)Q(2Q一个对象可以有N个引用指向它Q可以有N条子系住一个汽球)?br>       如果再来下面语句Q?br>       veh1 = veh2;
按上面的推断Qveh1也指向了W二个对象。这个没问题。问题是W一个对象呢Q没有一条子系住它Q它飞了。多C里说Q它被Java的垃圑֛收机制回收了。这不确切。正地_它已成ؓ垃圾回收机制的处理对象。至于什么时候真正被回收Q那要看垃圾回收机制的心情了?br>       由此看来Q下面的语句应该不合法吧Q至是没用的吧Q?br>new Vehicle();
不对。它是合法的Q而且可用的。譬如,如果我们仅仅Z打印而生成一个对象,׃需要用引用变量来系住它。最常见的就是打印字W串Q?br>       System.out.println(“I am Java!”);
字符串对?#8220;I am Java!”在打印后卌丢弃。有人把q种对象UCZ时对象?br>       对象与引用的关系持l到对象回收。但是,关于q一点,打算在下?#8220;qJava回收机制”再说?br>

-------------------
补充Q?br>testc?/p>
package test;

public class test {
public int value;
private int price;
     test()
     
{
         
this.value=0;
         
this.price=0;
     }

public static void main(String[] args) {
    test _test
=new test();
    fun.changeTest(_test);
    System.
out.println(_test.value);
}


}
funQ类
package test;

public class fun {
public static void changeTest(test _test)
{
   _test.value
=-1;    
}

}

执行L输出为:
-1,
说明传递引用修改了对象的倹{?

luis 2010-12-22 10:33 发表评论
]]>Java中全局变量的实?/title><link>http://www.shnenglu.com/luyulaile/archive/2010/12/21/137139.html</link><dc:creator>luis</dc:creator><author>luis</author><pubDate>Tue, 21 Dec 2010 12:03:00 GMT</pubDate><guid>http://www.shnenglu.com/luyulaile/archive/2010/12/21/137139.html</guid><wfw:comment>http://www.shnenglu.com/luyulaile/comments/137139.html</wfw:comment><comments>http://www.shnenglu.com/luyulaile/archive/2010/12/21/137139.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/luyulaile/comments/commentRss/137139.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/luyulaile/services/trackbacks/137139.html</trackback:ping><description><![CDATA[<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img align="top" src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" alt="" /><span style="color: #000000">import java.util.</span><span style="color: #000000">*</span><span style="color: #000000">;<br /><img align="top" src="http://www.shnenglu.com/Images/OutliningIndicators/None.gif" alt="" />import java.math.</span><span style="color: #000000">*</span><span style="color: #000000">;<br /><img id="Codehighlighter1_65_304_Open_Image" onclick="this.style.display='none'; Codehighlighter1_65_304_Open_Text.style.display='none'; Codehighlighter1_65_304_Closed_Image.style.display='inline'; Codehighlighter1_65_304_Closed_Text.style.display='inline';" align="top" src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_65_304_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_65_304_Closed_Text.style.display='none'; Codehighlighter1_65_304_Open_Image.style.display='inline'; Codehighlighter1_65_304_Open_Text.style.display='inline';" align="top" src="http://www.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000"> Negotiation </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_65_304_Closed_Text"><img src="http://www.shnenglu.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_65_304_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">    </span><span style="color: #0000ff">static</span><span style="color: #000000"> final </span><span style="color: #0000ff">int</span><span style="color: #000000">  NUM_MAXTIME</span><span style="color: #000000">=</span><span style="color: #000000">10</span><span style="color: #000000">;<br /><img id="Codehighlighter1_109_117_Open_Image" onclick="this.style.display='none'; Codehighlighter1_109_117_Open_Text.style.display='none'; Codehighlighter1_109_117_Closed_Image.style.display='inline'; Codehighlighter1_109_117_Closed_Text.style.display='inline';" align="top" src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_109_117_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_109_117_Closed_Text.style.display='none'; Codehighlighter1_109_117_Open_Image.style.display='inline'; Codehighlighter1_109_117_Open_Text.style.display='inline';" align="top" src="http://www.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif">    </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_109_117_Closed_Text">/**/</span><span id="Codehighlighter1_109_117_Open_Text"><span style="color: #008000">/*</span><span style="color: #008000">*最大轮?/span><span style="color: #008000">*/</span></span><span style="color: #000000"><br /><img align="top" src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">    </span><span style="color: #0000ff">static</span><span style="color: #000000"> final </span><span style="color: #0000ff">int</span><span style="color: #000000"> MAX_TURN</span><span style="color: #000000">=</span><span style="color: #000000">50</span><span style="color: #000000">;<br /><img align="top" src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">    </span><span style="color: #0000ff">static</span><span style="color: #000000"> final </span><span style="color: #0000ff">int</span><span style="color: #000000"> NUM_ISSUE</span><span style="color: #000000">=</span><span style="color: #000000">3</span><span style="color: #000000">;<br /><img id="Codehighlighter1_194_203_Open_Image" onclick="this.style.display='none'; Codehighlighter1_194_203_Open_Text.style.display='none'; Codehighlighter1_194_203_Closed_Image.style.display='inline'; Codehighlighter1_194_203_Closed_Text.style.display='inline';" align="top" src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_194_203_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_194_203_Closed_Text.style.display='none'; Codehighlighter1_194_203_Open_Image.style.display='inline'; Codehighlighter1_194_203_Open_Text.style.display='inline';" align="top" src="http://www.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif">    </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_194_203_Closed_Text">/**/</span><span id="Codehighlighter1_194_203_Open_Text"><span style="color: #008000">/*</span><span style="color: #008000">*最大对手数</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br /><img align="top" src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">    </span><span style="color: #0000ff">static</span><span style="color: #000000"> final </span><span style="color: #0000ff">int</span><span style="color: #000000"> MAX_PARTNER</span><span style="color: #000000">=</span><span style="color: #000000">10</span><span style="color: #000000">;  <br /><img align="top" src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" alt="" />    <br /><img id="Codehighlighter1_250_266_Open_Image" onclick="this.style.display='none'; Codehighlighter1_250_266_Open_Text.style.display='none'; Codehighlighter1_250_266_Closed_Image.style.display='inline'; Codehighlighter1_250_266_Closed_Text.style.display='inline';" align="top" src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_250_266_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_250_266_Closed_Text.style.display='none'; Codehighlighter1_250_266_Open_Image.style.display='inline'; Codehighlighter1_250_266_Open_Text.style.display='inline';" align="top" src="http://www.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif">    </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_250_266_Closed_Text">/**/</span><span id="Codehighlighter1_250_266_Open_Text"><span style="color: #008000">/*</span><span style="color: #008000">*谈判q程<br /><img align="top" src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" alt="" />     * <br /><img align="top" src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" />     </span><span style="color: #008000">*/</span></span><span style="color: #000000"><br /><img align="top" src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" alt="" /></span><span style="color: #0000ff">void</span><span style="color: #000000"> negotiationProcess()<br /><img id="Codehighlighter1_295_301_Open_Image" onclick="this.style.display='none'; Codehighlighter1_295_301_Open_Text.style.display='none'; Codehighlighter1_295_301_Closed_Image.style.display='inline'; Codehighlighter1_295_301_Closed_Text.style.display='inline';" align="top" src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_295_301_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_295_301_Closed_Text.style.display='none'; Codehighlighter1_295_301_Open_Image.style.display='inline'; Codehighlighter1_295_301_Open_Text.style.display='inline';" align="top" src="http://www.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif">    </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_295_301_Closed_Text"><img src="http://www.shnenglu.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_295_301_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" alt="" />        <br /><img align="top" src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" />    }</span></span><span style="color: #000000"><br /><img align="top" src="http://www.shnenglu.com/Images/OutliningIndicators/InBlock.gif" alt="" /><br /><img align="top" src="http://www.shnenglu.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" alt="" />}</span></span></div> 然后在其他类中只需要调?Negotiation.NUM_MAXTIME,NUM_ISSUE,{?img src ="http://www.shnenglu.com/luyulaile/aggbug/137139.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/luyulaile/" target="_blank">luis</a> 2010-12-21 20:03 <a href="http://www.shnenglu.com/luyulaile/archive/2010/12/21/137139.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java对象数组http://www.shnenglu.com/luyulaile/archive/2010/12/21/137138.htmlluisluisTue, 21 Dec 2010 11:57:00 GMThttp://www.shnenglu.com/luyulaile/archive/2010/12/21/137138.htmlhttp://www.shnenglu.com/luyulaile/comments/137138.htmlhttp://www.shnenglu.com/luyulaile/archive/2010/12/21/137138.html#Feedback0http://www.shnenglu.com/luyulaile/comments/commentRss/137138.htmlhttp://www.shnenglu.com/luyulaile/services/trackbacks/137138.html阅读全文

luis 2010-12-21 19:57 发表评论
]]>
Java 命名规范zthttp://www.shnenglu.com/luyulaile/archive/2010/12/21/137128.htmlluisluisTue, 21 Dec 2010 08:44:00 GMThttp://www.shnenglu.com/luyulaile/archive/2010/12/21/137128.htmlhttp://www.shnenglu.com/luyulaile/comments/137128.htmlhttp://www.shnenglu.com/luyulaile/archive/2010/12/21/137128.html#Feedback0http://www.shnenglu.com/luyulaile/comments/commentRss/137128.htmlhttp://www.shnenglu.com/luyulaile/services/trackbacks/137128.html完全版java规范Q?a >http://www.huihoo.org/code/java_code_conventions.html#71

 



luis 2010-12-21 16:44 发表评论
]]>
[转蝲]Vector遍历http://www.shnenglu.com/luyulaile/archive/2010/01/26/106444.htmlluisluisTue, 26 Jan 2010 01:08:00 GMThttp://www.shnenglu.com/luyulaile/archive/2010/01/26/106444.htmlhttp://www.shnenglu.com/luyulaile/comments/106444.htmlhttp://www.shnenglu.com/luyulaile/archive/2010/01/26/106444.html#Feedback0http://www.shnenglu.com/luyulaile/comments/commentRss/106444.htmlhttp://www.shnenglu.com/luyulaile/services/trackbacks/106444.htmlimport java.util.Iterator;
import java.util.Vector;

public class VectorIterator implements Iterator{
    
     private Vector v;
    
     private int currentIndex=0;
    
     public VectorIterator(){
        
     }
    
     public VectorIterator(Vector v){
         this.v=v;
     }    

     public boolean hasNext() {                
         if(this.currentIndex<this.v.size()){
             System.out.println("current index is :   "+this.currentIndex);
             return true;
         }else{
             System.out.println("out of the bound ");
         }
         return false;
     }

     public Object next() {            
         return this.v.get(this.currentIndex++);
     }

     public void remove() {
         this.v.remove(this.currentIndex);        
     }
    
    
     public static void main(String[] args){
         Vector v=new Vector();
         v.add(new String("aaa"));
         v.add(new String("bbb"));
         v.add(new String("ccc"));
         //System.out.println(v);
        
        
         Iterator iter=new VectorIterator(v);
         while(iter.hasNext()){
             String str=(String)iter.next();
             System.out.println(str);
         }
     }
    
}

luis 2010-01-26 09:08 发表评论
]]>
java Vector排序及用?/title><link>http://www.shnenglu.com/luyulaile/archive/2010/01/26/106439.html</link><dc:creator>luis</dc:creator><author>luis</author><pubDate>Mon, 25 Jan 2010 17:48:00 GMT</pubDate><guid>http://www.shnenglu.com/luyulaile/archive/2010/01/26/106439.html</guid><wfw:comment>http://www.shnenglu.com/luyulaile/comments/106439.html</wfw:comment><comments>http://www.shnenglu.com/luyulaile/archive/2010/01/26/106439.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/luyulaile/comments/commentRss/106439.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/luyulaile/services/trackbacks/106439.html</trackback:ping><description><![CDATA[<p>temp=CustomerMaker.quickPassQueue.get(0);//获得首元?br />  CustomerMaker.quickPassQueue.remove(0);//删除首元?br /><br /> quickPassQueue.add();在末添加元?br />----演示E序-----<br /><br />import java.util.*;<br />import java.io.*;<br /><br />public class test<br />{<br />Vector v = new Vector();<br /><br />public void testMethod(){<br />  v.add("a");<br />  v.add("b");<br />  v.add("c");<br /><br />  System.out.println("\n原来的vecotr");<br />  for(int i=0;i<v.size();i++){<br />   System.out.println("\n"+" index is: "+ i + " element is: " +v.get(i));<br />  }<br /><br />  v.remove(0);<br /><br />  System.out.println("\nL一个vector中第一个元?);<br />  for(int i=0;i<v.size();i++){<br />   System.out.println("\n"+" index is: "+ i + " element is: " +v.get(i));<br />  }<br />}<br /><br />public static void main(String[] args) <br />{<br />  test t = new test();<br />  t.testMethod();<br />  System.out.println("Hello World!");<br />}<br />}<br />-----------------排序E序------------------------------<br />import java.util.*;</p> <p>class MyCompare implements Comparator //实现ComparatorQ定义自q比较Ҏ<br />{<br />public int compare(Object o1, Object o2) {<br />Elem e1=(Elem)o1;<br />Elem e2=(Elem)o2;<br /><br />if(e1.get() > e2.get())//q样比较是降?如果?1Ҏ1是升序.<br />{<br />   return -1;<br />}<br />else if(e1.get()<e2.get())<br />{<br />   return 1;<br />}<br />else<br />{<br />   return 0;<br />}<br />}<br />}</p> <p>class Elem {<br />private int iVal;</p> <p>public Elem(int i) {<br />   this.iVal = i;<br />}</p> <p>public int get() {<br />   return this.iVal;<br />}<br />}</p> <p>public class Vector1 {<br />public static void main(String[] args) {<br />   List v = new Vector();<br />   v.add(new Elem(1));<br />   v.add(new Elem(22));<br />   v.add(new Elem(3));<br />   v.add(new Elem(14));<br />   Comparator ct = new MyCompare();<br />   Collections.sort(v, ct);<br />   for (int i = 0; i < v.size(); i++)<br />    System.out.println(((Elem) v.get(i)).get());</p> <p>}</p> <p>}<br /></p><img src ="http://www.shnenglu.com/luyulaile/aggbug/106439.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/luyulaile/" target="_blank">luis</a> 2010-01-26 01:48 <a href="http://www.shnenglu.com/luyulaile/archive/2010/01/26/106439.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转蝲]使用 Java ~程语言实现U程 http://www.shnenglu.com/luyulaile/archive/2010/01/26/106437.htmlluisluisMon, 25 Jan 2010 17:17:00 GMThttp://www.shnenglu.com/luyulaile/archive/2010/01/26/106437.htmlhttp://www.shnenglu.com/luyulaile/comments/106437.htmlhttp://www.shnenglu.com/luyulaile/archive/2010/01/26/106437.html#Feedback0http://www.shnenglu.com/luyulaile/comments/commentRss/106437.htmlhttp://www.shnenglu.com/luyulaile/services/trackbacks/106437.html使用 Java ~程语言实现U程

  Java~程语言使多U程如此单有效,以致于某些程序员说它实际上是自然的。尽在 Java 中用线E比在其他语a中要Ҏ得多Q仍然有一些概念需要掌握。要C的一仉要的事情?/span> main() 函数也是一个线E,q可用来做有用的工作。程序员只有在需要多个线E时才需要创建新的线E?/span>

  Thread c?/span>

  Thread cL一个具体的c,即不是抽象类Q该cd装了U程的行为。要创徏一个线E,E序员必dZ个从 Thread cd出的新类。程序员必须覆盖 Thread ?/span> run() 函数来完成有用的工作。用户ƈ不直接调用此函数Q而是必须调用 Thread ?/span> start() 函数Q该函数再调?/span> run()。下面的代码说明了它的用法:

  创徏两个新线E?/span>

import java.util.*;

class TimePrinter extends Thread {
 int pauseTime;
 String name;
 public TimePrinter(int x, String n) {
  pauseTime = x;
  name = n;
 }

 public void run() {
  while(true) {
   try {
    System.out.println(name + ":" + new Date(System.currentTimeMillis()));
    Thread.sleep(pauseTime);
   } catch(Exception e) {
    System.out.println(e);
   }
  }
 }

 static public void main(String args[]) {
  TimePrinter tp1 = new TimePrinter(1000, "Fast Guy");
  tp1.start();
  TimePrinter tp2 = new TimePrinter(3000, "Slow Guy");
  tp2.start();

 }
}


  在本例中Q我们可以看C个简单的E序Q它按两个不同的旉间隔Q?/span>1 U和 3 U)在屏q上昄当前旉。这是通过创徏两个新线E来完成的,包括 main() ׃个线E。但是,因ؓ有时要作为线E运行的cd能已l是某个cdơ的一部分Q所以就不能再按q种机制创徏U程。虽然在同一个类中可以实CQ意数量的接口Q但 Java ~程语言只允怸个类有一个父cR同Ӟ某些E序员避免从 Thread cd出,因ؓ它强加了cdơ。对于这U情况,p runnable 接口?/span>

  Runnable 接口

  此接口只有一个函敎ͼrun()Q此函数必须由实C此接口的cd现。但是,p行这个类而论Q其语义与前一个示例稍有不同。我们可以用 runnable 接口改写前一个示例。(不同的部分用黑体表示。)

  创徏两个新线E而不强加cd?/span>

import java.util.*;

class TimePrinter implements Runnable {
 int pauseTime;
 String name;
 public TimePrinter(int x, String n) {
  pauseTime = x;
  name = n;
 }

 public void run() {
  while(true) {
   try {
    System.out.println(name + ":" + new Date(System.currentTimeMillis()));
    Thread.sleep(pauseTime);
   } catch(Exception e) {
    System.out.println(e);
   }
  }
 }

 static public void main(String args[]) {
  Thread t1 = new Thread(new TimePrinter(1000, "Fast Guy"));
  t1.start();
  Thread t2 = new Thread(new TimePrinter(3000, "Slow Guy"));
  t2.start();
 }
}



  h意,当?/span> runnable 接口Ӟ您不能直接创建所需cȝ对象q运行它Q必M Thread cȝ一个实例内部运行它。许多程序员更喜?/span> runnable 接口Q因Z Thread cȝ承会强加cdơ?/span>

  synchronized 关键?/span>

  到目前ؓ止,我们看到的示例都只是以非常简单的方式来利用线E。只有最的数据,而且不会出现两个U程讉K同一个对象的情况。但是,在大多数有用的程序中Q线E之间通常有信息流。试考虑一个金融应用程序,它有一?/span> Account 对象Q如下例中所C:

  一个银行中的多Ҏ?/span>

public class Account {
 String holderName;
 float amount;
 public Account(String name, float amt) {
 holderName = name;
 amount = amt;
}

public void deposit(float amt) {
 amount += amt;
}

public void withdraw(float amt) {
 amount -= amt;
}

public float checkBalance() {
 return amount;
}
}


  在此代码样例中潜伏着一个错误。如果此cȝ于单U程应用E序Q不会有M问题。但是,在多U程应用E序的情况中Q不同的U程有可能同时讉K同一?/span> Account 对象Q比如说一个联合帐L所有者在不同?/span> ATM 上同时进行访问。在q种情况下,存入和支出就可能以这L方式发生Q一个事务被另一个事务覆盖。这U情况将是灾难性的。但是,Java ~程语言提供了一U简单的机制来防止发生这U覆盖。每个对象在q行旉有一个关联的锁。这个锁可通过为方法添加关键字 synchronized 来获得。这P修订q的 Account 对象Q如下所C)不会遭受像数据损坏q样的错误:

  对一个银行中的多Ҏ动进行同步处?/span>

public class Account {
 String holderName;
 float amount;
 public Account(String name, float amt) {
 holderName = name;
 amount = amt;
}

public synchronized void deposit(float amt) {
 amount += amt;
}

public synchronized void withdraw(float amt) {
 amount -= amt;
}

public float checkBalance() {
 return amount;
}
}


  deposit() ?/span> withdraw() 函数都需要这个锁来进行操作,所以当一个函数运行时Q另一个函数就被阻塞。请注意Q?/span> checkBalance() 未作更改Q它严格是一个读函数。因?/span> checkBalance() 未作同步处理Q所以Q何其他方法都不会d它,它也不会dM其他ҎQ不那些方法是否进行了同步处理



luis 2010-01-26 01:17 发表评论
]]>
Ʒþ| þþþҹҹҹƷ| þùƷӰԺ| þþWWWëƬ| þþù׾Ʒ| þþƷһ| þĻȫ| þۺϺݺۺϾþ| 㽶þҹɫƷ| þ޾ƷƷ| ޳˾þ| þĻר| þþþƷþþþþ | ĻþòҰav| þۺɫ| 99þۺϹƷ| ޹˾Ʒþþùһ | 99þþƷëƬѲ| þˬˬƬav | ŷ˾þþƷ| þùƷһ| 9191ƷѾþ| þþƷѹƬС| þۺ77777| ɫۺϾþҹɫƷ| ۺϾƷ㽶þ| þۺ97ɫ| Ʒպҹþ| þ޾Ʒ벥| ľþþƷww16| þùƷһ| þӰԺҹƬ| ɫۺϾþþþۺһ | 99ȳ˾ƷѾþ| Ʒþþþѿ| ŮƷþþþ| þþþ99ƷƬ| þþþó˾ƷĻ| ޺ݺۺϾþ| ݺɫݺɫۺϾþ| ޹Ʒþ|