<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SmallKen's Blog &#187; JAVA</title>
	<atom:link href="http://smallken.no-ip.org/blog/category/java/feed" rel="self" type="application/rss+xml" />
	<link>http://smallken.no-ip.org/blog</link>
	<description>※歡迎光臨※ 知識分享、Linux、FreeBSD、教學、吉他、影音分享、RHCE</description>
	<lastBuildDate>Fri, 20 Nov 2009 16:17:21 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>民國百年大計之資料轉換陷阱</title>
		<link>http://smallken.no-ip.org/blog/2009/09/26/java/1381.html</link>
		<comments>http://smallken.no-ip.org/blog/2009/09/26/java/1381.html#comments</comments>
		<pubDate>Fri, 25 Sep 2009 16:40:10 +0000</pubDate>
		<dc:creator>smallken</dc:creator>
				<category><![CDATA[JAVA]]></category>

		<guid isPermaLink="false">http://smallken.no-ip.org/blog/2009/09/26/java/1381.html</guid>
		<description><![CDATA[大家都知道很多大主機(COBOL)的日期表示的年是用民國年，而且是只有兩位數，新舊平台之間的資料需要做轉換，例如 98 → 2009。   最近在修改一個程式bug發現一件非常有趣的一件事，關於民國... ]]></description>
			<content:encoded><![CDATA[<p>大家都知道很多大主機(COBOL)的日期表示的年是用民國年，而且是只有兩位數，新舊平台之間的資料需要做轉換，例如 98 → 2009。   <br />最近在修改一個程式bug發現一件非常有趣的一件事，關於民國百年的資料轉換，舉個例子，從舊平台資料MQ回到新平台日期為 00980911，這樣的資料一路PASS到前端的Java Script後如何轉換為西元年呢?    <br />程式原本這樣寫    <br />// PAY_DATE_POL =&quot; 00980911&quot;    <br />var&#160; year = (eval(PAY_DATE_POL.substring(0, 4)) + 1911).toString();    <br />這樣寫有什麼問題嗎? 好像沒問題，但事實上問題可大的呢，以下做幾項測試    <br />x = eval(&quot;0098&quot;)+1911;&#160;&#160;&#160; // x 結果等於 2009，正確    <br />x = eval(&quot;0099&quot;)+1911;&#160;&#160;&#160; // x 結果等於 2010，正確    <br />x = eval(&quot;0100&quot;)+1911;&#160;&#160;&#160; // x 結果等於 <font color="#ff0000">1975</font>，<font color="#ff0000">錯誤     <br /></font>x = eval(&quot;0101&quot;)+1911;&#160;&#160;&#160; // x 結果等於 <font color="#ff0000">1976</font>，<font color="#ff0000">錯誤     <br /></font>.    <br />.    <br />.    <br />x = eval(&quot;0107&quot;)+1911;&#160;&#160;&#160; // x 結果等於 <font color="#ff0000">1982</font>，<font color="#ff0000">錯誤     <br /></font>x = eval(&quot;0108&quot;)+1911;&#160;&#160;&#160; // x 結果等於 2019，正確    <br />x = eval(&quot;0109&quot;)+1911;&#160;&#160;&#160; // x 結果等於 2020，正確    <br />這段程式若沒改會一路從民國100年錯到107年，以上結果可以自行上網測試看看 <a href="http://www.w3schools.com/js/tryit.asp?filename=tryjs_variables">http://www.w3schools.com/js/tryit.asp?filename=tryjs_variables</a>    <br /><a href="http://smallken.no-ip.org/blog/wp-content/uploads/2009/09/20090925.png"><img title="20090925" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="337" alt="20090925" src="http://smallken.no-ip.org/blog/wp-content/uploads/2009/09/20090925_thumb.png" width="500" border="0" /></a>     <br />原因為何?     <br />詳細再追下去，錯的地方在 eval(&quot;0100&quot;) 計算出來結果居然是 64，以此類推    <br />eval(&quot;0100&quot;) =&#160; 64    <br />eval(&quot;0101&quot;) =&#160; 65    <br />eval(&quot;0102&quot;) =&#160; 66    <br />eval(&quot;0103&quot;) =&#160; 67    <br />.    <br />.    <br />.    <br />顯然Java Script 程式語言跟你有溝通有障礙，突然不懂程式在搞什麼鬼了＞＜    <br />但是突然間在 eval(&quot;0108&quot;) 計算結果又變回了 108，呵...夠好玩了吧</p>
<p>現在焦點應該要放在什麼情況下 &quot;0100&quot; 會變成 64 ?</p>
<p>公佈答案，主要原因是<font color="#0000ff">程式把 &quot;0100&quot; 解讀成八進位的數值了</font>，而不是我們熟悉的十進位    <br />0 x 8^3 + 1 x 8^2 + 0 x 8^1 + 0 x 8^0 = 64</p>
<p>那麼 &quot;0108&quot; 又變回 108 的原因就是八進位根本不可能有8嘛，所以程式又自動認定成十進位了，原來都是Java Script一廂情願的認知結果</p>
<p>所以其實Java Script語言，資料型態這部分並不是非常嚴謹的，相較於其他的正規語言，如: C/C++、java 來說，在寫Java Script時很容易就會掉進陷阱而不自知。</p>
<p>所以建議一，可以的話就在舊主台就把資料轉換為四位的西元年。    <br />或者建議二，在java中用就把資料轉換為西元年，再丟到前端的jsp。    <br />再不然建議三，在Java Script 一定要用parseInt()函數，強制指定認定十進位    <br />x&#160; = parseInt(&quot;0100&quot;,10);&#160;&#160; // parseInt(string, radix)     <br />這樣 x 的結果就會是正確的 100 囉^^</p>
]]></content:encoded>
			<wfw:commentRss>http://smallken.no-ip.org/blog/2009/09/26/java/1381.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>神奇的讀心術 - 破解版</title>
		<link>http://smallken.no-ip.org/blog/2008/12/24/java/998.html</link>
		<comments>http://smallken.no-ip.org/blog/2008/12/24/java/998.html#comments</comments>
		<pubDate>Wed, 24 Dec 2008 15:34:05 +0000</pubDate>
		<dc:creator>smallken</dc:creator>
				<category><![CDATA[JAVA]]></category>

		<guid isPermaLink="false">http://smallken.no-ip.org/blog/2008/12/24/java/998.html</guid>
		<description><![CDATA[有空玩一下這個神奇的讀心術    http://msn.o-pass.com/ohmygod.php
&#160;
你是不是也像我一樣一開始被嚇一跳呢?
翻下一頁，我來解釋原理。
... ]]></description>
			<content:encoded><![CDATA[<p>有空玩一下這個神奇的讀心術    <br /><a title="http://msn.o-pass.com/ohmygod.php" href="http://msn.o-pass.com/ohmygod.php" target="_blank">http://msn.o-pass.com/ohmygod.php</a></p>
<p>&#160;</p>
<p>你是不是也像我一樣一開始被嚇一跳呢?</p>
<p>翻下一頁，我來解釋原理。</p>
<p>
]]></content:encoded>
			<wfw:commentRss>http://smallken.no-ip.org/blog/2008/12/24/java/998.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>請問&quot;&#124;&quot;與&quot;&amp;&quot; 是邏輯運算子還是位元運算子?</title>
		<link>http://smallken.no-ip.org/blog/2008/06/10/java/672.html</link>
		<comments>http://smallken.no-ip.org/blog/2008/06/10/java/672.html#comments</comments>
		<pubDate>Tue, 10 Jun 2008 13:50:38 +0000</pubDate>
		<dc:creator>smallken</dc:creator>
				<category><![CDATA[JAVA]]></category>

		<guid isPermaLink="false">http://smallken.no-ip.org/blog/2008/06/10/java/672.html</guid>
		<description><![CDATA[Java 與 C 都有 &#124; &#38; 這個運算子符號，&#124; &#38; 是邏輯運算子還是位元運算子?
最近因為上了java的初級的課被搞混了，答案先不說，如果你學 C 出身的話，你的答案將會是位元運算子，因為... ]]></description>
			<content:encoded><![CDATA[<p>Java 與 C 都有 | &amp; 這個運算子符號，| &amp; 是邏輯運算子還是位元運算子?</p>
<p>最近因為上了java<strike>的</strike>初級的課被搞混了，答案先不說，如果你學 C 出身的話，你的答案將會是位元運算子，因為 | &amp;&nbsp; ^ ~ 應該是同一類的，所以它們都是位元運算子，針對每個位元做運算。</p>
<p>好，那又有另一種人可能是直接學Java，之前沒有其他程式背景，他就會說 | &amp; 是邏輯運算子，因為 | &amp; 是無捷徑的邏輯的運算，而|| &amp;&amp;是捷徑的邏輯運算，我上那堂課老師就真的是這樣教的。</p>
<p>先解釋一下捷徑運算是什麼意思，程式如果是這樣 (2&gt;1) || (3&gt;2)，程式只要做到(2&gt;1)是True的話，不管(3&gt;2)結果是True或是false都不影響結果是Ture的結果，所以實際上程式習慣上是不執行(3&gt;2)這段的，程式的捷徑運算在 C 本來就是這樣。</p>
<p>其實上面二個答案應該都是對的，| &amp; 可以當邏輯運算子也可以當位元運算子，不過 | 和 &amp; 拿來當邏輯運算子是比較怪，很少看到程式是這麼寫的<br />if (<font color="#000000"> years ＜ 2000 </font><font color="#ff0000">｜</font> years&nbsp; ＞ 2009 ){</p>
<p> Todo...</p>
<p>}</p>
<p>但是程式執行結果沒錯，因為 | 是位元運算子，左邊的years ＜ 2000運算的結果是false要跟右邊的years &gt; 2009 是false的結果做運算，false | false 結果是false，所以才為什麼說|兩邊都會做，所以沒有捷徑的問題。</p>
<p>但是我必須說對一個初學程式的人，直接教他|與||可以把它拿來當作非捷徑運算與捷徑運算的區別，實在不負責了，我覺得應該解釋 | 是位元運算子，但是只要它單單在做true跟false運算時剛好符合無捷徑的邏輯運算特性，所以把|拿來當作邏輯運算其實也是可以，我的意思是說其實|被當成邏輯運算在用是因為|在做位元運算時的 side effect 副作用出現的，所以怎麼可以反客為主呢? </p>
<p>也就是說 C 語言對 | &amp; 運算子的切入點跟 Java 語言對| &amp; 運算子的切入點方向有很大的不同，這應該是在於早期的 C 語言會以效能為主要考量，善用| 或 &amp; 運算子會加快程式效能，但是程式難看難懂，那以目前的Java語言來說，程式好看好讀最重要，已經很少用到 | &amp; 這種還要看到bit的位元運算子了，所以整本講義提到| &amp; 就直接拿來跟 || &amp;&amp; 做比較了，讓我這個先學 C 的人來說，真的怎麼看怎麼怪。</p>
]]></content:encoded>
			<wfw:commentRss>http://smallken.no-ip.org/blog/2008/06/10/java/672.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>腦力激盪玩一下JDK5.0的新語法 - foreach</title>
		<link>http://smallken.no-ip.org/blog/2008/04/24/java/597.html</link>
		<comments>http://smallken.no-ip.org/blog/2008/04/24/java/597.html#comments</comments>
		<pubDate>Thu, 24 Apr 2008 14:47:45 +0000</pubDate>
		<dc:creator>smallken</dc:creator>
				<category><![CDATA[JAVA]]></category>

		<guid isPermaLink="false">http://smallken.no-ip.org/blog/2008/04/24/java/597.html</guid>
		<description><![CDATA[最近公司內訓 java，老師給我們的一題foreach的作業，第一次看到覺得蠻新鮮的，我來介紹一下。
foreach 是 java JDK5.0以後才有新語法，這種語法Compiler真正在編譯時還會改成原始的語法，這種情況... ]]></description>
			<content:encoded><![CDATA[<p>最近公司內訓 java，老師給我們的一題foreach的作業，第一次看到覺得蠻新鮮的，我來介紹一下。</p>
<p>foreach 是 java JDK5.0以後才有新語法，這種語法Compiler真正在編譯時還會改成原始的語法，這種情況俗稱"Compiler Sugar"。</p>
<p>先看一段 foreach 的基本語法：</p>
<p><font color="#0000ff">public class Test2 { </font></p>
<p><font color="#0000ff">public static void main(String[] args) { </font> </p>
<p><font color="#0000ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int [] a = {0,1,2,3,4,5,6,7,8,9};<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i : a)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.print(a[i] + " ");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } </font> </p>
<p><font color="#0000ff">}</font>  </p>
<p>a 是一維陣列，for() 裡面用冒號分隔，這語法會自動將 a 陣列中的元素依依提出來，用 int i 來接每個元素內容，所以印出來結果如下。<br />0 1 2 3 4 5 6 7 8 9  </p>
<p>&nbsp; </p>
<p>題目是三維陣列  </p>
<p><font color="#0000ff">public class Test1 {<br />&nbsp;&nbsp;&nbsp; public static void main(String[] args) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></p>
<p><font color="#0000ff">&nbsp; </font><font color="#400000">&nbsp;&nbsp;&nbsp; // 三維陣列，依依填入數值</font><font color="#000080"><br /></font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int[][][] a = new int[10][10][10];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i = 0; i&lt;a.length; i++) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int j=0; j&lt;a[i].length; j++) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int k=0; k&lt;a[i][j].length; k++) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a[i][j][k] = 100*i+10*j+k;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p><font color="#0000ff">&nbsp;&nbsp; </font><font color="#400000">// a 陣列裡面填什麼值不需要管，下面是傳統 for loop 作法把全部值列印出來<br /></font>&nbsp;&nbsp; for(int i = 0; i&lt;a.length; i++) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int j=0; j&lt;a[i].length; j++) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int k=0; k&lt;a[i][j].length; k++) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.print(a[i][j][k]+" ");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp; }<br />　<font color="#400000">/* 題目是如何將上頭列印 a 三維陣列的值，語法用 foreach 改寫?<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 語法會差不多是長這樣<br /></font><font color="#400000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(&nbsp; :&nbsp; ) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(&nbsp; :&nbsp; ){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for( :&nbsp; ) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.print( + " ");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</font></p>
<p><font color="#400000">&nbsp;&nbsp;&nbsp; */</font></p>
<p><font color="#400000">一下頁看解答</font></p>
<p><span id="more-597"></span></p>
<p><font color="#400000">答案是:</font></p>
<p><font color="#0000ff">for(int [][] i:&nbsp; a) {<br />&nbsp;&nbsp;&nbsp; for(int [] j : i ){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int k: j ) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.print(k+ " ");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; }<br />}</font></p>
<p>說明：從最外層的 for 迴圈開始看，a[][][]是一個三維的陣列，以這題來講每維都有10個元素，這隱含著<font color="#ff0000">這三維陣列是由10個二維陣列組成的</font>，所以最外層的 for( : ) 冒號的右邊是三維陣列的 a[][][]，左邊就應該要是二維陣列的 int [][] i去接，接著再看第二層 for，第二層的 for 要處理的是二維陣列的 i [][]，一樣的道理每維都有10個元素，也隱含著 i[][] 是由10個一維陣列所組成的，for( : )冒號的右邊是二維陣列的 i [][] 的話，冒號左邊應該是要一個一維陣列去接吧，這裡就用了 int [] j 去接，到了最裡面的第三層 for，j [] 是一維陣列，大家對一維陣列最熟悉不過的了，這裡同樣一維有10個元素，每個元素就用 int k 去接它的值，所以 k 已經是真正的值了喔，所以依依把 k 印出來就可以了。</p>
<p>其實這個 例子用了三維陣列，每維陣列都是10，但是其實 foreach 最大的好處就是不用去管陣列每一維的長度，就算是 10X20X30的陣列，這樣的寫法照樣也行得通。</p>
<p>那 foreach 也有壞處，壞處就是看不習慣吧，後人維護你的程式碼會比較辛苦，這種語法自己玩可以，合作型的開發案最好還是以傳統熟悉的語法，看得比較懂的語法為主啦。</p>
]]></content:encoded>
			<wfw:commentRss>http://smallken.no-ip.org/blog/2008/04/24/java/597.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>學習JAVA的第一步 - 安裝JDK教學</title>
		<link>http://smallken.no-ip.org/blog/2007/10/19/java/371.html</link>
		<comments>http://smallken.no-ip.org/blog/2007/10/19/java/371.html#comments</comments>
		<pubDate>Fri, 19 Oct 2007 12:41:59 +0000</pubDate>
		<dc:creator>smallken</dc:creator>
				<category><![CDATA[JAVA]]></category>
		<category><![CDATA[JAVA_HOME]]></category>
		<category><![CDATA[JDK]]></category>

		<guid isPermaLink="false">http://smallken.no-ip.org/blog/2007/10/19/uncategorized/371.html</guid>
		<description><![CDATA[Java 的 JDK 是 Java 的開發工具+JVM。
網址 http://java.sun.com/
點選一直都是在熱門下載第一名的 "Java SE"

下載目前最新的是JDK6第3版
 
點選 Accept

第一個是offline的安裝，也就是下載完整的安裝檔，第... ]]></description>
			<content:encoded><![CDATA[<p>Java 的 JDK 是 Java 的開發工具+JVM。</p>
<p>網址 <a href="http://java.sun.com/" title="http://java.sun.com/">http://java.sun.com/</a></p>
<p>點選一直都是在熱門下載第一名的 "Java SE"</p>
<p><img src="http://aycu28.webshots.com/image/31787/2002603801216017569_rs.jpg" /></p>
<p>下載目前最新的是JDK6第3版<br />
<img src="http://aycu17.webshots.com/image/31536/2001415503380821547_rs.jpg" /> <br />
點選 Accept<br />
<img src="http://aycu20.webshots.com/image/31619/2003442549565025538_rs.jpg" /></p>
<p>第一個是offline的安裝，也就是下載完整的安裝檔，第二個是online的安裝方式，線上安裝JDK，兩者其實都可以下載。<br />
<img src="http://aycu11.webshots.com/image/29890/2004598943654207288_rs.jpg" /></p>
<p>下載下來的檔案 jdk-6u3-windows-i586-p.exe，進行安裝，過程中都使用預設值就可以了。</p>
<p><span id="more-371"></span></p>
<p><img src="http://aycu23.webshots.com/image/31502/2001949058603368333_rs.jpg" /></p>
<p><img src="http://aycu39.webshots.com/image/32438/2002090122048423657_rs.jpg" /></p>
<p>安裝好之後通常都放在 C:\Program Files\Java 目錄下，如果同時裝了好幾個版本，這裡面也會有不同版本的資料夾，Java 的Compiler開發工具叫 jdk1.6.x_xx，Java 的JVM叫 jre1.6.0_03，一般如果網頁可以跑Java程式都只安裝jrex.x.x_xx而已，而如果安裝JDK的話會同時安裝jdk跟jre都有。</p>
<p>安裝完成之後最重要的步驟來了，我們要設定好執行Java的<font color="#0000ff"> Path</font> 跟<font color="#0000ff"> CLASSPATH</font>，我的電腦→右鍵→內容→進階→環境變數→<font color="#0000ff">新增</font></p>
<p><img src="http://aycu17.webshots.com/image/31856/2002648688462248011_rs.jpg" /></p>
<p>先設定一個變數名稱"JAVA_HOME"，設定jdk的安裝目錄(習慣上系統變數都使用大寫，即使Windows不分大小寫的，大小寫都沒關係)</p>
<p><img src="http://aycu23.webshots.com/image/31022/2001346506015737664_rs.jpg" /><br />
我們再<font color="#0000ff">編輯</font>原本在電腦系統裡的PATH變數<br />
<img src="http://aycu30.webshots.com/image/29989/2005954459732569084_rs.jpg" /></p>
<p>在PATH變數值繼續加上一段目錄，目錄跟目錄之間要用冒號;分隔，所以在原本的PATH變數值之後加上<font color="#0000ff"> </font><font color="#ff0000">;%JAVA_HOME%\bin</font><font color="#000000"> ,剛剛設定的JAVA_HOME變數可以直接拿來用，用%包起來就可以了。<br />
<img src="http://aycu05.webshots.com/image/30644/2004752138645315342_rs.jpg" /> </font></p>
<p><font color="#000000">再</font><font color="#0000ff">新增</font>一個 CLASSPATH 的變數名稱，裡頭填上 <font color="#ff0000">.;D:\</font><font color="#000000"><br />
<img src="http://aycu38.webshots.com/image/32317/2001723198174051976_rs.jpg" /> </font></p>
<p><font color="#000000">最後解釋一下PATH是指執行程式時可以自動幫你找到該程式，例如javac.exe，這支程式位址在 C:\Program Files\Java\jdk1.6.0_03\bin\javac.exe，只要有設定好PATH之後，在任何地方都可以執行javac，在編繹程式時比較方便。</font></p>
<p><font color="#000000">CLASSPATH 上面設定了2個地方.跟D:\，</font><font color="#ff0000">.</font><font color="#000000">一小點在Windows或Unix-like中都表示</font><font color="#0000ff">當前目錄</font><font color="#000000">，CLASSPATH就是設定CLASS預設的CLASS放置位置，所以寫好的class你可以跟java程式放在同一目錄，也可以放在D:\都可以，否則程式是無法自動抓到寫好的class的。</font></p>
<p><font color="#000000">另外也要下載個Java的開發文件，在開發Java手邊有Document在手邊查看比較方便</font></p>
<p><img src="http://aycu30.webshots.com/image/28829/2003573502120704941_rs.jpg" /></p>
<p>如果不想下載整份的文件，官方網站也提供線上版本:</p>
<p>英文版 <a href="http://java.sun.com/javase/6/docs/api/">English</a> <br />
簡體版 <a href="http://gceclub.sun.com.cn/Java_Docs/jdk6/html/zh_CN/api/index.html">Chinese</a><br />
日文版 <a href="http://java.sun.com/javase/ja/6/docs/ja/api/">Japanese</a></p>
<p><a href="http://java.sun.com/javase/reference/api.jsp" title="http://java.sun.com/javase/reference/api.jsp">http://java.sun.com/javase/reference/api.jsp</a></p>
]]></content:encoded>
			<wfw:commentRss>http://smallken.no-ip.org/blog/2007/10/19/java/371.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
