﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-无尽的麦比乌斯-随笔分类-学习笔记</title><link>http://www.blogjava.net/Beckya/category/17791.html</link><description>want to be part of your world...</description><language>zh-cn</language><lastBuildDate>Sat, 03 Oct 2009 09:59:19 GMT</lastBuildDate><pubDate>Sat, 03 Oct 2009 09:59:19 GMT</pubDate><ttl>60</ttl><item><title>写个神经网络的小程序</title><link>http://www.blogjava.net/Beckya/archive/2009/09/30/297045.html</link><dc:creator>近似凯珊卓</dc:creator><author>近似凯珊卓</author><pubDate>Wed, 30 Sep 2009 10:41:00 GMT</pubDate><guid>http://www.blogjava.net/Beckya/archive/2009/09/30/297045.html</guid><wfw:comment>http://www.blogjava.net/Beckya/comments/297045.html</wfw:comment><comments>http://www.blogjava.net/Beckya/archive/2009/09/30/297045.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Beckya/comments/commentRss/297045.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Beckya/services/trackbacks/297045.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: .code0 { font-size: small; font-family: Consolas, "Courier New", Courier, Monospace; color: #000000; background-color: #ffffff; }.code1 { margin: 0em; }.code2 { margin: 0em; width: 100%; backgroun...&nbsp;&nbsp;<a href='http://www.blogjava.net/Beckya/archive/2009/09/30/297045.html'>阅读全文</a><img src ="http://www.blogjava.net/Beckya/aggbug/297045.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Beckya/" target="_blank">近似凯珊卓</a> 2009-09-30 18:41 <a href="http://www.blogjava.net/Beckya/archive/2009/09/30/297045.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>最大公约数的算法</title><link>http://www.blogjava.net/Beckya/archive/2006/11/28/83943.html</link><dc:creator>近似凯珊卓</dc:creator><author>近似凯珊卓</author><pubDate>Mon, 27 Nov 2006 17:54:00 GMT</pubDate><guid>http://www.blogjava.net/Beckya/archive/2006/11/28/83943.html</guid><wfw:comment>http://www.blogjava.net/Beckya/comments/83943.html</wfw:comment><comments>http://www.blogjava.net/Beckya/archive/2006/11/28/83943.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Beckya/comments/commentRss/83943.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Beckya/services/trackbacks/83943.html</trackback:ping><description><![CDATA[
		<p>汗~学过又忘掉的东西。。。那就记录下来，让忘却来得更猛烈些吧！<br /><br />//递归实现</p>
		<p>int gcd(int m,int n)</p>
		<p>{</p>
		<p>       if (m &lt; n)</p>
		<p>       {</p>
		<p>              int tmp = m;</p>
		<p>              m = n;</p>
		<p>              n = tmp;</p>
		<p>       }</p>
		<p> </p>
		<p>       if (n == 0)</p>
		<p>              return m;</p>
		<p>       else</p>
		<p>              return gcd(n,m % n);</p>
		<p>}<br /> <br />//非递归实现</p>
		<p>int gcd2(int m,int n)</p>
		<p>{</p>
		<p>       if (m &lt; n)</p>
		<p>       {</p>
		<p>              int tmp = m;</p>
		<p>              m = n;</p>
		<p>              n = tmp;</p>
		<p>       }</p>
		<p> </p>
		<p>       if (n == 0)</p>
		<p>              return m;</p>
		<p>       </p>
		<p>       while (n &gt; 0)</p>
		<p>       {</p>
		<p>              int tmp = m % n;</p>
		<p>              m = n;</p>
		<p>              n = tmp;</p>
		<p>       }</p>
		<p> </p>
		<p>       return m;</p>
		<p>}<br /> </p>
		<p>       这里给出了最大公约数的算法，那怎么求最大公倍数呢？其实知道了最大公约数，最小公倍数的求法就简单了：</p>
		<p>int gbs(int m,int n)</p>
		<p>{</p>
		<p>       return m*n/gcd(m,n);</p>
		<p>}<br /> </p>
		<p>
				<br />求最大公约数的stein算法(zz) <br />astrophor 发表于 2006-9-9 20:24:00</p>
		<p>
				<br />在处理大数时比较有效，因为没有用到大数的除法运算，速度会很快。</p>
		<p>int gcd(int a,int b)<br />{<br />if (a == 0) return b;<br />if (b == 0) return a;<br />if (a % 2 == 0 &amp;&amp; b % 2 == 0) return 2 * gcd(a/2,b/2);<br />else if (a % 2 == 0) return gcd(a/2,b);<br />else if (b % 2 == 0) return gcd(a,b/2);<br />else return gcd(abs(a-b),min(a,b));<br />}<br /></p>
<img src ="http://www.blogjava.net/Beckya/aggbug/83943.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Beckya/" target="_blank">近似凯珊卓</a> 2006-11-28 01:54 <a href="http://www.blogjava.net/Beckya/archive/2006/11/28/83943.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Thinking:Java中static用法</title><link>http://www.blogjava.net/Beckya/archive/2006/11/28/83942.html</link><dc:creator>近似凯珊卓</dc:creator><author>近似凯珊卓</author><pubDate>Mon, 27 Nov 2006 17:45:00 GMT</pubDate><guid>http://www.blogjava.net/Beckya/archive/2006/11/28/83942.html</guid><wfw:comment>http://www.blogjava.net/Beckya/comments/83942.html</wfw:comment><comments>http://www.blogjava.net/Beckya/archive/2006/11/28/83942.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Beckya/comments/commentRss/83942.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Beckya/services/trackbacks/83942.html</trackback:ping><description><![CDATA[呵呵，以前总是乱用变量，今天总算跟Phung学了一招，看来还真得弄弄清楚。<br /><br /><p>一、static</p><p>　　请先看下面这段程序：</p><p>  public class Hello{<br />    public static void main(String[] args){ //(1)<br />      System.out.println("Hello,world!");   //(2)<br />    }<br />  }</p><p>　　看过这段程序，对于大多数学过Java 的从来说，都不陌生。即使没有学过Java，而学过其它的高级语言，例如C，那你也应该能看懂这段代码的意思。它只是简单的输出“Hello,world”，一点别的用处都没有，然而，它却展示了static关键字的主要用法。</p><p>　　在1处，我们定义了一个静态的方法名为main，这就意味着告诉Java编译器，我这个方法不需要创建一个此类的对象即可使用。你还得你是怎么运行这个程序吗？一般，我们都是在命令行下，打入如下的命令(加下划线为手动输入)：</p><p>javac Hello.java<br />java Hello<br />Hello,world!</p><p>　　这就是你运行的过程，第一行用来编译Hello.java这个文件，执行完后，如果你查看当前，会发现多了一个Hello.class文件，那就是第一行产生的Java二进制字节码。第二行就是执行一个Java程序的最普遍做法。执行结果如你所料。在2中，你可能会想，为什么要这样才能输出。好，我们来分解一下这条语句。（如果没有安装Java文档，请到Sun的官方网站浏览J2SE API）首先，System是位于java.lang包中的一个核心类，如果你查看它的定义，你会发现有这样一行：public static final PrintStream out;接着在进一步，点击PrintStream这个超链接，在METHOD页面，你会看到大量定义的方法，查找println，会有这样一行：</p><p>public void println(String x)。</p><p>　　好了，现在你应该明白为什么我们要那样调用了，out是System的一个静态变量，所以可以直接使用，而out所属的类有一个println方法。</p><p><strong>静态方法</strong></p><p>　　通常，在一个类中定义一个方法为static，那就是说，无需本类的对象即可调用此方法。如下所示：</p><p>class Simple{<br />   static void go(){<br />     System.out.println("Go...");<br />   }<br />}<br />public class Cal{<br />  public static void main(String[] args){<br />    Simple.go();<br />  }<br />}</p><p>　　调用一个静态方法就是“类名.方法名”,静态方法的使用很简单如上所示。一般来说，静态方法常常为应用程序中的其它类提供一些实用工具所用，在Java的类库中大量的静态方法正是出于此目的而定义的。</p><p><strong>静态变量</strong></p><p>　　静态变量与静态方法类似。所有此类实例共享此静态变量，也就是说在类装载时，只分配一块存储空间，所有此类的对象都可以操控此块存储空间，当然对于final则另当别论了。看下面这段代码：</p><p>class Value{<br />  static int c=0;<br />  static void inc(){<br />    c++;<br />  }<br />}<br />class Count{<br />  public static void prt(String s){<br />    System.out.println(s);<br />  }<br />  public static void main(String[] args){<br />    Value v1,v2;<br />    v1=new Value();<br />    v2=new Value();<br />    prt("v1.c="+v1.c+"  v2.c="+v2.c);<br />    v1.inc();<br />    prt("v1.c="+v1.c+"  v2.c="+v2.c);  <br />  }<br />}</p><p>　　结果如下：</p><p>v1.c=0  v2.c=0<br />v1.c=1  v2.c=1</p><p>由此可以证明它们共享一块<nobr><a class="iAs" oncontextmenu="return false;" onmousemove="kwM(4);" onmouseover="kwE(event,4);" style="CURSOR: hand; COLOR: #0000ff; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" onclick="window.open('http://114.vnet.cn/search_web.html?id=148&amp;kw=存储','_blank');" onmouseout="kwL(event);" target="_blank">存储</a></nobr>区。static变量有点类似于C中的全局变量的概念。值得探讨的是静态变量的初始化问题。我们修改上面的程序：</p><p>class Value{<br />  static int c=0;<br />  Value(){<br />    c=15;<br />  }<br />  Value(int i){<br />    c=i;<br />  }<br />  static void inc(){<br />    c++;<br />  }<br />}<br />class Count{<br />  public static void prt(String s){<br />    System.out.println(s);<br />  }<br />    Value v=new Value(10);<br />    static Value v1,v2;<br />    static{<br />      prt("v1.c="+v1.c+"  v2.c="+v2.c);<br />      v1=new Value(27);<br />      prt("v1.c="+v1.c+"  v2.c="+v2.c);<br />      v2=new Value(15);<br />      prt("v1.c="+v1.c+"  v2.c="+v2.c);<br />    }</p><p>  public static void main(String[] args){<br />    Count ct=new Count();<br />    prt("ct.c="+ct.v.c);<br />    prt("v1.c="+v1.c+"  v2.c="+v2.c);<br />    v1.inc();<br />    prt("v1.c="+v1.c+"  v2.c="+v2.c);<br />    prt("ct.c="+ct.v.c);<br />  }<br />}</p><p>运行结果如下：</p><p>v1.c=0  v2.c=0<br />v1.c=27  v2.c=27<br />v1.c=15  v2.c=15<br />ct.c=10<br />v1.c=10  v2.c=10<br />v1.c=11  v2.c=11<br />ct.c=11</p><p>　　这个程序展示了静态初始化的各种特性。如果你初次接触Java，结果可能令你吃惊。可能会对static后加大括号感到困惑。首先要告诉你的是，static定义的<nobr><a class="iAs" oncontextmenu="return false;" onmousemove="kwM(1);" onmouseover="kwE(event,1);" style="CURSOR: hand; COLOR: #0000ff; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" onclick="window.open('http://114.vnet.cn/search_web.html?id=148&amp;kw=变量','_blank');" onmouseout="kwL(event);" target="_blank">变量</a></nobr>会优先于任何其它非static变量，不论其出现的顺序如何。正如在程序中所表现的，虽然v出现在v1和v2的前面，但是结果却是v1和v2的初始化在v的前面。在static{后面跟着一段代码，这是用来进行显式的静态变量初始化，这段代码只会初始化一次，且在类被第一次装载时。如果你能读懂并理解这段代码，会帮助你对static<nobr><a class="iAs" oncontextmenu="return false;" onmousemove="kwM(5);" onmouseover="kwE(event,5);" style="CURSOR: hand; COLOR: #0000ff; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" onclick="window.open('http://114.vnet.cn/search_web.html?id=148&amp;kw=关键字','_blank');" onmouseout="kwL(event);" target="_blank">关键字</a></nobr>的认识。在涉及到继承的时候，会先初始化父类的static变量，然后是子类的，依次类推。</p><p>　　通常一个普通类不允许声明为<nobr><a class="iAs" oncontextmenu="return false;" onmousemove="kwM(0);" onmouseover="kwE(event,0);" style="CURSOR: hand; COLOR: #0000ff; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" onclick="window.open('http://114.vnet.cn/search_web.html?id=148&amp;kw=静态','_blank');" onmouseout="kwL(event);" target="_blank">静态</a></nobr>的，只有一个内部类才可以。这时这个声明为静态的内部类可以直接作为一个普通类来使用，而不需<nobr><a class="iAs" oncontextmenu="return false;" onmousemove="kwM(6);" onmouseover="kwE(event,6);" style="CURSOR: hand; COLOR: #0000ff; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" onclick="window.open('http://114.vnet.cn/search_web.html?id=148&amp;kw=实例','_blank');" onmouseout="kwL(event);" target="_blank">实例</a></nobr>一个外部类。如下<nobr><a class="iAs" oncontextmenu="return false;" onmousemove="kwM(3);" onmouseover="kwE(event,3);" style="CURSOR: hand; COLOR: #0000ff; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" onclick="window.open('http://114.vnet.cn/search_web.html?id=148&amp;kw=代码','_blank');" onmouseout="kwL(event);" target="_blank">代码</a></nobr>所示：</p><p>public class StaticCls{<br />  public static void main(String[] args){<br />    OuterCls.InnerCls oi=new OuterCls.InnerCls();<br />  }<br />}<br />class OuterCls{<br />  public static class InnerCls{<br />    InnerCls(){<br />      System.out.println("InnerCls");<br />    }<br />   }<br />}</p><p>　　输出结果会如你所料：</p><p>InnerCls</p><img src ="http://www.blogjava.net/Beckya/aggbug/83942.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Beckya/" target="_blank">近似凯珊卓</a> 2006-11-28 01:45 <a href="http://www.blogjava.net/Beckya/archive/2006/11/28/83942.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>