½W?5 天的问题
下é¢çš„ç¨‹åºæ˜¯å¯¹ä¸¤ä¸ªåå…è¿›åˆÓž¼ˆhexåQ‰å—é¢å¸¸é‡è¿›è¡Œç›¸åŠ ï¼Œç„¶åŽæ‰“å°å‡ºåå…进制的¾l“果。这个程åºä¼š(x¨¬)打å°å‡ÞZ»€ä¹ˆå‘¢åQ?/p>
public class JoyOfHex {
public static void main(String[] args) {
System.out.println(Long.toHexString(0x100000000L + 0xcafebabe));
}
}
½W?5 天问题的解ç”
看è“væ¥å¾ˆæ˜Žæ˜¾åQŒè¯¥½E‹åºåº”该打å°å‡?cafebabe。毕竟,˜q™ç¡®å®žå°±æ˜¯åå…进制数å?0000000016与cafebabe16的和。该½E‹åºä½¿ç”¨çš„æ˜¯longåž‹è¿½Ž—ï¼Œå®ƒå¯ä»¥æ”¯æŒ?6ä½åå…进制数åQŒå› æ¤è¿½Ž—溢出是ä¸å¯èƒ½çš„ã€?/p>
é—æ†¾çš„å‘Šè¯‰ä½ åQŒç»“果是cafebabeåQŒåƈ没有ä»ÖM½•å‰å¯¼çš?。这个输å‡?gu¨®)™¡¨½Cºçš„æ˜¯æ£¼‹®ç»“果的ä½?2ä½ï¼Œä½†æ˜¯ä¸çŸ¥ä½•æ•…åQŒç¬¬33ä½ä¸¢å¤×ƒº†(ji¨£n)ã€?/p>
原å›
å进制å—é¢å¸¸é‡å…·æœ‰ä¸€ä¸ªå¾ˆå¥½çš„属性,åÏx(ch¨®ng)‰€æœ‰çš„å进制å—é¢å¸¸é‡éƒ½æ˜¯æ£çš„,而åå…进制或是八˜q›åˆ¶å—é¢å¸”R‡òq¶ä¸å…·å¤‡˜q™ä¸ªå±žæ€§ã€?/p>
è¦æƒ³ä¹¦å†™ä¸€ä¸ªè´Ÿçš„å˜q›åˆ¶å¸”R‡åQŒå¯ä»¥ä‹É用一元å–åæ“ä½œç¬¦åQ?åQ‰è¿žæŽ¥ä¸€ä¸ªå˜q›åˆ¶å—é¢å¸”R‡ã€‚以˜q™ç§æ–¹å¼åQŒä½ å¯ä»¥ç”¨å˜q›åˆ¶æ¥ä¹¦å†™ä“Q何int或long型的数å€û|¼Œä¸ç®¡å®ƒæ˜¯æ£çš„˜q˜æ˜¯è´Ÿçš„åQŒåƈ且负的å˜q›åˆ¶å¸¸æ•°å¯ä»¥å¾ˆæ˜Ž¼‹®åœ°ç”¨ä¸€ä¸ªå‡åïL(f¨¥ng)¬¦åäh¥æ ‡è¯†ã€?/p>
但是åå…˜q›åˆ¶å’Œå…«˜q›åˆ¶å—é¢å¸”R‡òq¶ä¸æ˜¯è¿™ä¹ˆå›žäº‹ï¼Œå®ƒä»¬å¯ä»¥å…ähœ‰æ£çš„以åŠ(qi¨¢ng)负的数倹{€‚如果åå…进制和八进制å—é¢å¸¸é‡çš„æœ€é«˜ä(sh¨´)½è¢«ç½®ä½äº†(ji¨£n)åQŒé‚£ä¹ˆå®ƒä»¬å°±æ˜¯è´Ÿæ•°ã€‚在˜q™ä¸ª½E‹åºä¸ï¼Œæ•°å—0xcafebabe是一个int帔R‡åQŒå®ƒçš„æœ€é«˜ä(sh¨´)½è¢«ç½®ä½äº†(ji¨£n)åQŒæ‰€ä»¥å®ƒæ˜¯ä¸€ä¸ªè´Ÿæ•°ã€‚它½{‰äºŽå进制数å€?889275714ã€?/p>
è¯¥ç¨‹åºæ‰§è¡Œçš„˜q™ä¸ªåŠ æ³•æ˜¯ä¸€¿U?混刾cÕdž‹çš„计½Ž—(mixed-type computationåQ‰ã€‚å·¦æ“作数是 long ¾cÕdž‹çš„ï¼Œè€Œå³æ“作数是 int ¾cÕdž‹çš„ã€‚äØ“(f¨´)äº?ji¨£n)执行该计算åQŒJavaž®†int¾cÕdž‹çš„æ•°å€¼ç”¨æ‹“宽原始¾cÕdž‹è½¬æ¢æå‡ä¸ÞZ¸€ä¸ªlong¾cÕdž‹åQŒç„¶åŽå¯¹ä¸¤ä¸ªlong¾cÕdž‹æ•°å€¼ç›¸åŠ ã€‚å› ä¸ºint是一个有½W¦å·çš„æ•´æ•°ç±»åž‹ï¼Œæ‰€ä»¥è¿™ä¸ªè{æ¢æ‰§è¡Œçš„æ˜¯ç¬¦åˆæ‰©å±•,它将负的int¾cÕdž‹çš„æ•°å€¼æå‡äØ“(f¨´)一个在数å€ég¸Šç›¸ç‰çš„long¾cÕdž‹æ•°å€¹{€?/p>
解决办法
System.out.println(Long.toHexString(0x100000000L + 0xcafebabeL));
˜q™ä¸ªåŠ æ³•çš„å³æ“作æ•?xcafebabe被æå‡äØ“(f¨´)äº?ji¨£n)long¾cÕdž‹çš„æ•°å€?xffffffffcafebabeL。这个数å€ég¹‹åŽè¢«åŠ åˆ°äº?ji¨£n)å·¦æ“作æ?x100000000Lä¸Šã€‚å½“ä½œäØ“(f¨´)int¾cÕdž‹æ¥è¢«å®¡è§†æ—Óž¼Œ¾l过½W¦å·æ‰©å±•之åŽçš„峿“作数的é«?2使˜¯-1åQŒè€Œå·¦æ“作数的é«?2使˜¯1åQŒå°†˜q™ä¸¤ä¸ªæ•°å€¼ç›¸åŠ å°±å¾—åˆ°äº?åQŒè¿™ä¹Ÿå°±è§£é‡Šäº?ji¨£n)äØ?f¨´)什么在½E‹åºè¾“出ä¸å‰å¯?丢失äº?ji¨£n)ã€?/p>
½W?5 天问题的æ€È»“
˜q™ä¸ªé¢˜ç»™æˆ‘ä»¬çš„æ•™è®æ˜¯åQ?strong>混刾cÕdž‹çš„计½Ž—å¯èƒ½ä¼š(x¨¬)产生æ·äh·†åQŒå°¤å…¶æ˜¯åå…˜q›åˆ¶å’Œå…«˜q›åˆ¶å—é¢å¸”R‡æ— 需昑ּ的å‡åïL(f¨¥ng)¬¦å·å°±å¯ä»¥è¡¨ç¤ºè´Ÿçš„æ•°å€¹{€‚䨓(f¨´)äº?ji¨£n)é¿å…è¿™¿U窘境,通常最好是é¿å…混刾cÕdž‹çš„计½Ž?/strong>ã€?/p>
对于è¯è¨€çš„设计者们æ¥è¯´åQŒåº”è¯¥è€ƒè™‘æ”¯æŒæ— 符åïL(f¨¥ng)š„æ•´æ•°¾cÕdž‹åQŒä»Žè€Œæ ¹é™¤ç¬¦åäh‰©å±•çš„å¯èƒ½æ€§ã€‚å¯èƒ½ä¼š(x¨¬)有这æ ïL(f¨¥ng)š„争辩åQšè´Ÿçš„åå…进制和八进制å—é¢å¸¸é‡åº”该被¼›ç”¨åQŒä½†æ˜¯è¿™å¯èƒ½ä¼?x¨¬)挫伤程åºå‘˜åQŒä»–们ç»å¸æ€‹É用åå…进制å—é¢å¸¸é‡æ¥è¡¨ç¤ºé‚£äº›½W¦å·æ²¡æœ‰ä»ÖM½•é‡è¦å«ä¹‰çš„æ•°å€¹{€?/p>
今天的问�/h2>
转型被用æ¥å°†ä¸€ä¸ªæ•°å€ég»Žä¸€¿U类型è{æ¢åˆ°å¦ä¸€¿U类型。下é¢çš„½E‹åº˜qžç®‹(hu¨¤)使用äº?ji¨£n)三个è{型。那么它到底ä¼?x¨¬)打å°å‡ºä»€ä¹ˆå‘¢åQ?/p>
public class Multicast {
public static void main(String[] args) {
System.out.println((int) (char) (byte) -1);
}
}

]]>- ½W?5 天:(x¨¬) è§£ç” -- çœÆDб¾~䨕åQ?问题 -- 16˜q›åˆ¶çš„è¶£äº?/title><link>http://www.aygfsteel.com/fourlee/archive/2008/05/17/201025.html</link><dc:creator>æŽå››é£žåˆ€</dc:creator><author>æŽå››é£žåˆ€</author><pubDate>Fri, 16 May 2008 16:33:00 GMT</pubDate><guid>http://www.aygfsteel.com/fourlee/archive/2008/05/17/201025.html</guid><wfw:comment>http://www.aygfsteel.com/fourlee/comments/201025.html</wfw:comment><comments>http://www.aygfsteel.com/fourlee/archive/2008/05/17/201025.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.aygfsteel.com/fourlee/comments/commentRss/201025.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/fourlee/services/trackbacks/201025.html</trackback:ping><description><![CDATA[
<h2>½W?4 天的问题 -- çœÆDб¾~䨕</h2>
<p>它åˆä¼?x¨¬)打å°å‡ºä»€ä¹ˆå‘¢åQ?/p>
<pre>
<code class="java">
<span id="wmqeeuq" class="keyword">public</span> <span id="wmqeeuq" class="keyword">class</span> <span id="wmqeeuq" class="title">Elementary</span>{
<span id="wmqeeuq" class="keyword">public</span> <span id="wmqeeuq" class="keyword">static</span> <span id="wmqeeuq" class="keyword">void</span> main(String[] args){
System.out.println(<span id="wmqeeuq" class="number">12345</span> + <span id="wmqeeuq" class="number">5432</span>l);
}
}
</code>
</pre>
<h2>½W?4 天问题的解ç”</h2>
<p>˜q™ä¸ªé¢˜çœ‹èµäh¥ä¼ég¹Žå¤ªç®€å•了(ji¨£n)。结果丞®±æ˜¯66666å—?</p>
<p>é—æ†¾çš„å‘Šè¯‰ä½ åQŒç»“果是17777ã€?/p>
<h3>åŽŸå› </h3>
<p>事物往往有别于它的表象。就以这个问题ä(sh¨´)Ø“(f¨´)ä¾‹ï¼Œå®ƒåÆˆæ²¡æœ‰æ‰“å°å‡ºæˆ‘们想è¦çš„输出。请仔细观察 + æ“作½W¦çš„两个æ“作敎ͼŒ 我们是将一个int¾cÕdž‹çš?2345åŠ åˆ°äº?ji¨£n)long¾cÕdž‹çš?432l上。请注æ„å·¦æ“作数开头的数å—1å’Œå³æ“作数结ž®„¡š„ž®å†™å—æ¯l之间的细微差异ã€?æ•°å—1的水òq³ç¬”划(¿UîCØ“(f¨´)"臂(armåQ?åQ‰å’Œåž‚ç›´½W”划åQˆç§°ä¸?茎(stemåQ?åQ‰ä¹‹é—´æ˜¯ä¸€ä¸ªé”角,而与æ¤ç›¸å¯¹ç…§çš„æ˜¯åQŒå°å†™å—æ¯l的臂和茎之间是一个直角ã€?/p>
<h3>解决办法</h3>
<pre>
<code class="java">System.out.println(<span id="wmqeeuq" class="number">12345</span>+<span id="wmqeeuq" class="number">5432</span>L);</code>
</pre>
<p>用大写的L替梞®å†™å—æ¯lã€?/p>
<h2>½W?4 天问题的æ€È»“</h2>
<p>åœ¨ä½ å¤§å–Š"æ¶å¿ƒ(j¨©)åQ?之å‰åQŒä½ 应该注æ„到这个问题确实已¾l引起了(ji¨£n)æ··äØ•åQŒè¿™é‡Œç¡®å®žæœ‰ä¸€ä¸ªæ•™è®ï¼š(x¨¬) <strong>在longåž‹å—é¢å¸¸é‡ä¸åQŒä¸€å®šè¦ç”¨å¤§å†™çš„LåQŒåƒä¸‡ä¸è¦ç”¨ž®å†™çš„l</strong>ã€‚è¿™æ ·å°±å¯ä»¥å®Œå…¨æŽæ–˜q™ä¸ªè°œé¢˜æ‰€äº§ç”Ÿçš„æØœä¹Þqš„æºå¤´ã€?/p>
<p>相类似的åQŒè¦é¿å…使用å•独的一个lå—æ¯ä½œäØ“(f¨´)å˜é‡å。例如,我们很难通过观察下é¢çš„ä»£ç æ®µæ¥åˆ¤æ–它到底是打å°å‡ºåˆ—表l˜q˜æ˜¯æ•°å—1ã€?/p>
<pre>
<code class="java"><span id="wmqeeuq" class="comment">//ä¸è‰¯ä»£ç -使用äº?ji¨£n)lä½œäØ“(f¨´)å˜é‡å?/span>
List l = <span id="wmqeeuq" class="keyword">new</span> ArrayList<String>();
l.add(<span id="wmqeeuq" class="string">"Foo"</span>);
System.out.println(<span id="wmqeeuq" class="number">1</span>);</code>
</pre>
<p>也许当åˆå…许用å°å†™çš„læ¥ç¼–写longåž‹å—é¢å¸¸é‡æœ¬íw«å°±æ˜¯ä¸€ä¸ªé”™è¯¯ã€?/p>
<hr id="hr"/>
<h2>今天的问�/h2>
<p>下é¢çš„ç¨‹åºæ˜¯å¯¹ä¸¤ä¸ªåå…è¿›åˆÓž¼ˆhexåQ‰å—é¢å¸¸é‡è¿›è¡Œç›¸åŠ ï¼Œç„¶åŽæ‰“å°å‡ºåå…进制的¾l“果。这个程åºä¼š(x¨¬)打å°å‡ÞZ»€ä¹ˆå‘¢åQ?/p>
<pre>
<code class="java"><span id="wmqeeuq" class="keyword">public</span> <span id="wmqeeuq" class="class"><span id="wmqeeuq" class="keyword">class</span> <span id="wmqeeuq" class="title">JoyOfHex</span> {</span>
<span id="wmqeeuq" class="keyword">public</span> <span id="wmqeeuq" class="keyword">static</span> <span id="wmqeeuq" class="keyword">void</span> main(String[] args) {
System.out.println(Long.toHexString(<span id="wmqeeuq" class="number">0x100000000L</span> + <span id="wmqeeuq" class="number">0xcafebabe</span>));
}
}</code>
</pre>
<img src ="http://www.aygfsteel.com/fourlee/aggbug/201025.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/fourlee/" target="_blank">æŽå››é£žåˆ€</a> 2008-05-17 00:33 <a href="http://www.aygfsteel.com/fourlee/archive/2008/05/17/201025.html#Feedback" target="_blank" style="text-decoration:none;">å‘表评论</a></div>]]></description></item><item><title>½W?4 天:(x¨¬) è§£ç” -- 长整敎ͼŒ 问题 -- çœÆDб¾~䨕http://www.aygfsteel.com/fourlee/archive/2008/05/16/201018.htmlæŽå››é£žåˆ€æŽå››é£žåˆ€Fri, 16 May 2008 15:41:00 GMThttp://www.aygfsteel.com/fourlee/archive/2008/05/16/201018.htmlhttp://www.aygfsteel.com/fourlee/comments/201018.htmlhttp://www.aygfsteel.com/fourlee/archive/2008/05/16/201018.html#Feedback1http://www.aygfsteel.com/fourlee/comments/commentRss/201018.htmlhttp://www.aygfsteel.com/fourlee/services/trackbacks/201018.html½W?3 天的问题
被除数表½Cºçš„æ˜¯ä¸€å¤©é‡Œçš„å¾®¿U’æ•°åQ›è€Œé™¤æ•°è¡¨½Cºçš„æ˜¯ä¸€å¤©é‡Œçš„æ¯«¿U’数。这个程åºä¼š(x¨¬)打å°å‡ÞZ»€ä¹ˆå‘¢åQ?/p>
public class LongDivision{
public static void main(String args[]){
final long MICROS_PER_DAY = 24 * 60 * 60 * 1000 * 1000;
final long MILLIS_PER_DAY = 24 * 60 * 60 * 1000;
System.out.println(MICROS_PER_DAY/MILLIS_PER_DAY);
}
}
½W?3 天问题的解ç”
˜q™ä¸ªé¢˜çœ‹èµäh¥ç›¸å½“直观。æ¯å¤©çš„æ¯«ç§’æ•°å’Œæ¯å¤©çš„å¾®¿U’数都是帔R‡ã€‚䨓(f¨´)清楚赯‚§åQŒå®ƒä»¬éƒ½è¢«è¡¨½Cºæˆ¿U¯çš„å½¢å¼ã€‚ä½ å¯èƒ½æƒ³éƒ½æ²¡æƒ³åQŒå°±è„±å£è€Œå‡ºåQŒç»“果是1000ã€?é—æ†¾çš„æ˜¯åQŒå®ƒæ‰“å°çš„æ˜¯5。这里到底å‘生了(ji¨£n)什么呢åQ?/p>
原å›
问题在于常数MICROS_PER_DAY的计½Ž?¼‹®å®ž"溢出äº?ji¨£n)。尽½Ž¡è®¡½Ž—çš„¾l“æžœé€‚åˆæ”‘Ö…¥longä¸ï¼Œòq¶ä¸”其空间还有富余,但是˜q™ä¸ª¾l“æžœòq¶ä¸é€‚åˆæ”‘Ö…¥intä¸ã€?˜q™ä¸ªè®¡ç®—完全是以int˜qç®—æ¥æ‰§è¡Œçš„åQŒåÆˆä¸”åªæœ‰åœ¨˜q算完æˆä¹‹åŽåQŒå…¶¾l“æžœæ‰è¢«æå‡åˆ°l(f¨¡)ongåQŒè€Œæ¤æ—¶å·²¾l太˜qŸäº†(ji¨£n)åQšè®¡½Ž—å·²¾l溢å‡ÞZº†(ji¨£n)åQ?它返回的是一个å°äº?00å€çš„æ•°å€¹{€‚从intæå‡åˆ°l(f¨¡)ong是一¿U拓宽原始类型è{æ¢ï¼ˆwidening primitive conversionåQ‰ï¼Œ 它ä¿ç•™äº†(ji¨£n)åQˆä¸æ£ç¡®çš„)(j¨ª)数倹{€‚这个å€ég¹‹åŽè¢«MILLIS_PER_DAY整除åQŒè€ŒMILLIS_PER_DAY的计½Ž—是æ£ç¡®çš„ï¼Œå› äØ“(f¨´)它适åˆint˜q算。这æ äh•´é™¤çš„¾l“æžœž®±å¾—åˆîCº†(ji¨£n)5
那么ä¸ÞZ»€ä¹ˆè®¡½Ž—会(x¨¬)是以int˜qç®—æ¥æ‰§è¡Œçš„å‘¢ï¼Ÿå› äØ“(f¨´)所有乘在一èµïL(f¨¥ng)š„å› å都是int数倹{€‚å½“ä½ å°†ä¸¤ä¸ªint数值相乘时åQ?ä½ å°†å¾—åˆ°å¦ä¸€ä¸ªint数倹{€?strong>Javaä¸å…·æœ‰ç›®æ ‡ç¡®å®šç±»åž‹çš„ç‰ÒŽ(gu¨©)€§ï¼Œ˜q™æ˜¯ä¸€¿Uè¯a€ç‰ÒŽ(gu¨©)€§ï¼Œå…¶å«ä¹‰æ˜¯æŒ‡å˜å‚¨ç»“果的å˜é‡çš„类型会(x¨¬)å½±å“到计½Ž—所使用的类åž?/strong>
解决办法
public class LongDivision{
public static void main(String args[ ]){
final long MICROS_PER_DAY = 24L * 60 * 60 * 1000 * 1000;
final long MILLIS_PER_DAY = 24L * 60 * 60 * 1000;
System.out.println(MICROS_PER_DAY/MILLIS_PER_DAY);
}
}
通过使用long帔R‡æ¥æ›¿ä»£int帔R‡ä½œäØ“(f¨´)æ¯ä¸€ä¸ªä¹˜¿U¯çš„½W¬ä¸€ä¸ªå› å,我们ž®±å¯ä»¥å¾ˆå®ÒŽ(gu¨©)˜“地订æ£è¿™ä¸ªç¨‹åºã€‚è¿™æ ·åšå¯ä»¥å¼ºåˆ¶è¡¨è¾¾å¼ä¸æ‰€æœ‰çš„åŽç®‹(hu¨¤)计算都用long˜q作æ¥å®Œæˆã€?ž®½ç®¡˜q™ä¹ˆåšåªåœ¨MICROS_PER_DAY表达å¼ä¸æ˜¯å¿…需的,但是在两个乘¿U¯ä¸éƒ½è¿™ä¹ˆåšæ˜¯ä¸€¿U很好的方å¼ã€‚相似地åQŒä‹É用longä½œäØ“(f¨´)乘积çš?½W¬ä¸€ä¸?æ•°å€ég¹Ÿòq¶ä¸æ€ÀL˜¯å¿…需的, 但是˜q™ä¹ˆåšä¹Ÿæ˜¯ä¸€¿U很好的形å¼ã€‚在两个计算ä¸éƒ½ä»¥long数值开始å¯ä»¥å¾ˆæ¸…楚地表明它们都ä¸ä¼š(x¨¬)溢出。下é¢çš„½E‹åºž®†æ‰“å°å‡ºæˆ‘们所期望çš?000
½W?3 天问题的æ€È»“
˜q™ä¸ªæ•™è®å¾ˆç®€å•:(x¨¬)å½“ä½ åœ¨æ“ä½œå¾ˆå¤§çš„æ•°å—æ—Óž¼Œåƒä¸‡è¦æé˜²æº¢å‡?/strong>--å®ƒå¯æ˜¯ä¸€ä¸ªç¼„é»˜æ€æ‰‹ã€?å³ä‹É用æ¥ä¿å˜¾l“果的å˜é‡å·²æ˜‘Ö¾—‘›_¤Ÿå¤§ï¼Œä¹ŸåÆˆä¸æ„味ç€è¦äñ”生结果的计算å…ähœ‰æ£ç¡®çš„ç±»åž‹ã€‚å½“ä½ æ‹¿ä¸å‡†æ—Óž¼Œž®×ƒ‹É用long˜qç®—æ¥æ‰§è¡Œæ•´ä¸ªè®¡½Ž—ã€?/p>
è¯è¨€è®¾è®¡è€…从ä¸å¯ä»¥å¸å–çš„æ•™è®æ˜¯ï¼š(x¨¬)也许é™ä½Ž¾~„默溢出产生的å¯èƒ½æ€§ç¡®å®žæ˜¯å€¼å¾—åšçš„一件事。这å¯ä»¥é€šè¿‡å¯¹ä¸ä¼?x¨¬)äñ”生缄默溢出的˜qç®—æä¾›æ”¯æŒæ¥å®žçްã€?½E‹åºå¯ä»¥æŠ›å‡ºä¸€ä¸ªå¼‚å¸¸è€Œä¸æ˜¯ç›´æŽ¥æº¢å‡ºï¼Œž®±åƒAdaæ‰€ä½œçš„é‚£æ ·åQŒæˆ–者它们å¯ä»¥åœ¨éœ€è¦çš„æ—¶å€™è‡ªåŠ¨åœ°åˆ‡æ¢åˆîC¸€ä¸ªæ›´å¤§çš„å†…éƒ¨è¡¨ç¤ºä¸Šä»¥é˜²æ¢æº¢å‡ºåQŒå°±åƒLispæ‰€ä½œçš„é‚£æ ·ã€?˜q™ä¸¤¿Uæ–¹å¼éƒ½å¯èƒ½ä¼?x¨¬)éå—与其相关的性能斚w¢çš„æŸå¤±ã€?é™ä½Ž¾~„默溢出的å¦ä¸€¿Uæ–¹å¼æ˜¯æ”¯æŒç›®æ ‡¼‹®å®š¾cÕdž‹åQŒä½†æ˜¯è¿™ä¹ˆåšä¼?x¨¬)æ˜¾è‘—åœ°å¢žåŠ ¾cÕdž‹¾pÈ»Ÿçš„夿‚度
今天的问�/h2>
它åˆä¼?x¨¬)打å°å‡ºä»€ä¹ˆå‘¢åQ?/p>
public class Elementary{
public static void main(String[] args){
System.out.println(12345+5432l);
}
}

]]>- ½W?3 天:(x¨¬) è§£ç” -- æ‰ùN›¶é’±ï¼Œ 问题 -- é•¿æ•´æ•?/title><link>http://www.aygfsteel.com/fourlee/archive/2008/05/16/201016.html</link><dc:creator>æŽå››é£žåˆ€</dc:creator><author>æŽå››é£žåˆ€</author><pubDate>Fri, 16 May 2008 14:50:00 GMT</pubDate><guid>http://www.aygfsteel.com/fourlee/archive/2008/05/16/201016.html</guid><wfw:comment>http://www.aygfsteel.com/fourlee/comments/201016.html</wfw:comment><comments>http://www.aygfsteel.com/fourlee/archive/2008/05/16/201016.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/fourlee/comments/commentRss/201016.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/fourlee/services/trackbacks/201016.html</trackback:ping><description><![CDATA[
<h2>½W?2 天的问题</h2>
<p>误‚€(g¨¨)ƒè™‘下题q™æ®µè¯æ‰€æè¿°çš„问题:(x¨¬)</p>
<p>ž®æ˜Žåœ¨è¶…å¸?j¨¬ng)è´ä¹îCº†(ji¨£n)一个äh(hu¨¢n)å€û|òE1.10的东西,但是他钱包ä¸åªæœ‰ä¸¤å…ƒä¸€å¼ çš„é’žç¥¨ã€‚å¦‚æžœä»–ç”¨ä¸€å¼ ä¸¤å…ƒçš„é’žç¥¨æ”¯ä»˜åQŒé‚£ä¹ˆåº”该找¾l™ä»–多少雉™’±å‘¢ï¼Ÿ</p>
<p>䏋颿˜¯ä¸€ä¸ªè¯•图解决上˜q°é—®é¢˜çš„½E‹åºåQŒå®ƒä¼?x¨¬)打å°å‡ºä»€ä¹ˆå‘¢åQ?/p>
<pre>
<code class="java">
<span id="wmqeeuq" class="keyword">public</span> <span id="wmqeeuq" class="keyword">class</span> <span id="wmqeeuq" class="title">Change</span>{
<span id="wmqeeuq" class="keyword">public</span> <span id="wmqeeuq" class="keyword">static</span> <span id="wmqeeuq" class="keyword">void</span> main(String args[]){
System.out.println(<span id="wmqeeuq" class="number">2.00</span> - <span id="wmqeeuq" class="number">1.10</span>);
}
}
</code>
</pre>
<h2>½W?2 天问题的解ç”</h2>
<p>ä½ å¯èƒ½ä¼š(x¨¬)è¯ß_(d¨¢)¼Œ˜q™ä¸æ˜¯å¾ˆ½Ž€å•嘛åQ输å‡?.90。但实际的输出确实:(x¨¬)0.8999999999999999ã€?/p>
<h3>åŽŸå› </h3>
<p>一ã€ç¨‹åºå¦‚何æ‰èƒ½çŸ¥é“ä½ æƒŒ™¦æ‰“å°ž®æ•°ç‚¹åŽä¸¤ä½ž®æ•°å‘¢ï¼Ÿ</p>
<p>JDK API文档ä¸å…³äºŽDouble.toString的部分指出:(x¨¬)</p>
<blockquote>
<p>Double.toString的返回å€û|¼Œæ˜¯èƒö以将double¾cÕdž‹çš„å€ég¸Žæœ€é 近它的临近值区分出æ¥çš„æœ€çŸçš„ž®æ•°åQŒå®ƒåœ¨å°æ•°ç‚¹ä¹‹å‰å’Œä¹‹åŽéƒ½è‡›_°‘有一ä½ã€?/p>
</blockquote>
<p>å› æ¤åQŒçœ‹èµäh¥åQŒè¯¥½E‹åºåº”该打å°0.9是åˆç†çš„ã€?/p>
<p>二ã€åÆˆä¸æ˜¯æ‰€æœ‰çš„ž®æ•°éƒ½å¯ä»¥ç”¨äºŒè¿›åˆ¶æÕQç‚ÒŽ(gu¨©)•°æ¥ç²¾¼‹®è¡¨½Cºçš„ã€?/p>
<p>问题在于1.1˜q™ä¸ªæ•°å—ä¸èƒ½è¢«ç²¾¼‹®è¡¨½Cºæˆä¸ÞZ¸€ä¸ªdoubleåQŒå› æ¤å®ƒè¢«è¡¨½Cºæˆä¸ºæœ€æŽ¥è¿‘它的double倹{€?该程åºä»Ž2ä¸å‡åŽÈš„ž®±æ˜¯˜q™ä¸ªå€¹{€?é—æ†¾çš„æ˜¯åQŒè¿™ä¸ªè®¡½Ž—çš„¾l“æžœòq¶ä¸æ˜¯æœ€æŽ¥è¿‘0.9çš„double倹{€?表示¾l“果的double值的最çŸè¡¨½Cºå°±æ˜¯ä½ 所看到的打å°å‡ºæ¥çš„é‚£ä¸ªå¯æ¶çš„æ•°å—ã€?/p>
<h2>½W?2 天问题的解决办法</h2>
<h3>æ–ÒŽ(gu¨©)³•一</h3>
<pre>
<code class="java">
<span id="wmqeeuq" class="comment">//拙劣的解å†Ïx(ch¨®ng)–¹æ¡?-仿—§æ˜¯ä‹É用二˜q›åˆ¶‹¹®ç‚¹æ•?/span>
System.out.printf(<span id="wmqeeuq" class="string">"%.2f%n"</span>,<span id="wmqeeuq" class="number">2.00</span> - <span id="wmqeeuq" class="number">1.10</span>);</code>
</pre>
<p>˜q™æ¡è¯å¥æ‰“å°çš„æ˜¯æ£ç¡®çš„结果,但是˜q™åƈä¸è¡¨½Cºå®ƒ?y¨u)®±æ˜¯å¯¹åº•层问题的通用解决æ–ÒŽ(gu¨©)¡ˆã€‚å®ƒä½¿ç”¨çš„ä»æ—§æ˜¯äºŒè¿›åˆ¶æÕQç‚ÒŽ(gu¨©)•°çš„double˜qç®—ã€?‹¹®ç‚¹˜q算在一个范围很òq¿çš„值域上æä¾›äº†(ji¨£n)很好的近ä¼û|¼Œä½†æ˜¯å®ƒé€šå¸¸ä¸èƒ½äº§ç”Ÿ¾_„¡¡®çš„结果ã€?<strong>二进制æÕQ点对于货å¸è®¡½Ž—是éžå¸¸ä¸é€‚åˆçš?/strong>åQŒå› 为它ä¸å¯èƒ½å°†0.1--或è€?0的其它ä“Q何次负幂--¾_„¡¡®è¡¨ç¤ºä¸ÞZ¸€ä¸ªé•¿åº¦æœ‰é™çš„äºŒè¿›åˆ¶å°æ•?/p>
<h3>æ–ÒŽ(gu¨©)³•äº?/h3>
<pre>
<code class="java">System.out.println((<span id="wmqeeuq" class="number">200</span> - <span id="wmqeeuq" class="number">110</span>) + <span id="wmqeeuq" class="string">"�</span>);</code>
</pre>
<p>˜q™æ˜¯åœ¨Javaä¸ä¸€¿U简å•的解决æ–ÒŽ(gu¨©)³•。在Javaæ ‡å‡†åº“ä¸åQŒæœ‰ä¸€ä¸ªç±»ä¼¼çš„范例Date¾c»ï¼ŒDate¾cÈš„对于旉™—´çš„内部表½Cºå°±æ˜¯ä¸€ä¸ªä»¥æ¯«ç§’为å•ä½çš„longæ•´æ•°ã€?对于åƒè´§å¸è¿™æ ïL(f¨¥ng)š„æ•°å€û|¼Œå¯ä»¥ç”¨int或longæ¥è¡¨½Cºã€‚å¦‚æžœä½ é‡‡çº³äº?ji¨£n)è§£å†Ïx(ch¨®ng)–¹æ³•,<strong>è¯ïL(f¨¥ng)¡®ä¿è¯¥æ•´æ•°¾cÕdž‹å¤§åˆ°‘›_¤Ÿè¡¨ç¤ºåœ¨ç¨‹åºä¸ä½ å°†è¦ç”¨åˆ°çš„æ‰€æœ‰å€?/strong>ã€?/p>
<h3>æ–ÒŽ(gu¨©)³•ä¸?/h3>
<pre>
<code class="java">
<span id="wmqeeuq" class="keyword">import</span> java.math.BigDecimal;
<span id="wmqeeuq" class="keyword">public</span> <span id="wmqeeuq" class="keyword">class</span> <span id="wmqeeuq" class="title">Change1</span>{
<span id="wmqeeuq" class="keyword">public</span> <span id="wmqeeuq" class="keyword">static</span> <span id="wmqeeuq" class="keyword">void</span> main(String args[]){
System.out.println(<span id="wmqeeuq" class="keyword">new</span> BigDecimal(<span id="wmqeeuq" class="string">"2.00"</span>).subtract(<span id="wmqeeuq" class="keyword">new</span> BigDecimal(<span id="wmqeeuq" class="string">"1.10"</span>)));
}
}
</code>
</pre>
<p>解决该问题的å¦ä¸€¿Uæ–¹å¼æ˜¯ä½¿ç”¨æ‰§è¡Œ¾_„¡¡®ž®æ•°˜qç®—çš„BigDecimalã€?<strong>˜q™é‡Œè¦å‘Šè¯«ä½ 一点:(x¨¬) 一定è¦ç”¨BigDecimal(String)æž„é€ å™¨åQŒè€Œåƒä¸‡ä¸è¦ç”¨BigDecimal(double)ã€?åŽä¸€ä¸ªæž„é€ å™¨ž®†ç”¨å®ƒçš„傿•°çš?¾_„¡¡®"值æ¥åˆ›å¾ä¸€ä¸ªå®žä¾‹ï¼š(x¨¬)new BigDecimal(1.1)ž®†è¿”回一个表½C?.100000000000000055511151231257827021181583404541015625 çš„BigDecimalã€?/strong>
</p>
<p>˜q™ä¸ªç‰ˆæœ¬òq¶ä¸æ˜¯å分地完美åQŒå› 为Javaòq¶æ²¡æœ‰äØ“(f¨´)BigDecimalæä¾›ä»ÖM½•è¯è¨€ä¸Šçš„æ”¯æŒã€‚åŽŸå› ï¼š(x¨¬)</p>
<ul>
<li>使用BigDecimal的计½Ž—很有å¯èƒ½æ¯”那些使用原始¾cÕdž‹çš„计½Ž—è¦æ…¢ä¸€äº›ï¼Œå¯ÒŽ(gu¨©)Ÿäº›å¤§é‡ä‹Éç”¨å°æ•°è®¡½Ž—çš„½E‹åºæ¥è¯´åQŒè¿™å¯èƒ½ä¼?x¨¬)æˆä¸ºé—®é¢˜ï¼Œè€Œå¯¹å¤§å¤šæ•°ç¨‹åºæ¥è¯ß_(d¨¢)¼Œ˜q™æ˜¾å¾—一点也ä¸é‡è¦ã€?/li>
<li>Javaä¸å…è®¸è¿½Ž—ç¬¦é‡è²ã€‚ä‹É得代ç ä¸å¤Ÿç›´è§‚ã€?/li>
</ul>
<h2>æ€È»“</h2>
<p>在需è¦ç²¾¼‹®ç”案的地方åQŒè¦é¿å…使用floatå’Œdoubleã€?/p>
<p>对于货å¸è®¡ç®—åQŒè¦ä½¿ç”¨intã€long或BigDecimalã€?/p>
<p>对于è¯è¨€è®¾è®¡è€…æ¥è¯ß_(d¨¢)¼Œåº”è¯¥è€ƒè™‘å¯¹å°æ•°è¿½Ž—æä¾›è¯a€æ”¯æŒã€‚å¯ä»¥æ”¯æŒä¸‹åˆ—æ–¹å¼ä¸çš„一¿Uã€?/p>
<ul>
<li>æä¾›å¯ÒŽ(gu¨©)“作符é‡è²çš„æœ‰é™æ”¯æŒï¼Œ 以ä‹Éå¾—è¿½Ž—ç¬¦å¯ä»¥è¢«å¡‘é€ äØ“(f¨´)能够å¯ÒŽ(gu¨©)•°å€¼å¼•用类型è“v作用åQ?例如BigDecimalã€?/li>
<li>æä¾›åŽŸå§‹çš„å°æ•°ç±»åž‹ï¼Œž®±åƒ COBOL ä¸?PL/I æ‰€ä½œçš„ä¸€æ —÷€?/li>
</ul>
<hr id="hr"/>
<h2>今天的问�/h2>
<p>被除数表½Cºçš„æ˜¯ä¸€å¤©é‡Œçš„å¾®¿U’æ•°åQ›è€Œé™¤æ•°è¡¨½Cºçš„æ˜¯ä¸€å¤©é‡Œçš„æ¯«¿U’数。这个程åºä¼š(x¨¬)打å°å‡ÞZ»€ä¹ˆå‘¢åQ?/p>
<pre>
<code class="java">
<span id="wmqeeuq" class="keyword">public</span> <span id="wmqeeuq" class="keyword">class</span> <span id="wmqeeuq" class="title">LongDivision</span>{
<span id="wmqeeuq" class="keyword">public</span> <span id="wmqeeuq" class="keyword">static</span> <span id="wmqeeuq" class="keyword">void</span> main(String args[]){
<span id="wmqeeuq" class="keyword">final</span> <span id="wmqeeuq" class="keyword">long</span> MICROS_PER_DAY = <span id="wmqeeuq" class="number">24</span> * <span id="wmqeeuq" class="number">60</span> * <span id="wmqeeuq" class="number">60</span> * <span id="wmqeeuq" class="number">1000</span> * <span id="wmqeeuq" class="number">1000</span>;
<span id="wmqeeuq" class="keyword">final</span> <span id="wmqeeuq" class="keyword">long</span> MILLIS_PER_DAY = <span id="wmqeeuq" class="number">24</span> * <span id="wmqeeuq" class="number">60</span> * <span id="wmqeeuq" class="number">60</span> * <span id="wmqeeuq" class="number">1000</span>;
System.out.println(MICROS_PER_DAY/MILLIS_PER_DAY);
}
}
</code>
</pre>
<img src ="http://www.aygfsteel.com/fourlee/aggbug/201016.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/fourlee/" target="_blank">æŽå››é£žåˆ€</a> 2008-05-16 22:50 <a href="http://www.aygfsteel.com/fourlee/archive/2008/05/16/201016.html#Feedback" target="_blank" style="text-decoration:none;">å‘表评论</a></div>]]></description></item><item><title>½W?2 天:(x¨¬) è§£ç” -- åˆ¤æ–æ˜¯å¦ä¸ºå¥‡æ•ŽÍ¼Œ 问题 -- æ‰ùN›¶é’?/title><link>http://www.aygfsteel.com/fourlee/archive/2008/05/16/200996.html</link><dc:creator>æŽå››é£žåˆ€</dc:creator><author>æŽå››é£žåˆ€</author><pubDate>Fri, 16 May 2008 13:38:00 GMT</pubDate><guid>http://www.aygfsteel.com/fourlee/archive/2008/05/16/200996.html</guid><wfw:comment>http://www.aygfsteel.com/fourlee/comments/200996.html</wfw:comment><comments>http://www.aygfsteel.com/fourlee/archive/2008/05/16/200996.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.aygfsteel.com/fourlee/comments/commentRss/200996.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/fourlee/services/trackbacks/200996.html</trackback:ping><description><![CDATA[
<h2>½W?1 天的问题</h2>
<p>下é¢çš„æ–¹æ³•æ„囄¡¡®å®šå®ƒé‚£å”¯ä¸€çš„傿•°æ˜¯å¦æ˜¯ä¸€ä¸ªå¥‡æ•°ã€‚这个方法能够棼‹®è¿è½¬å—åQ?/p>
<pre>
<code class="java"> <span id="wmqeeuq" class="keyword">public</span> <span id="wmqeeuq" class="keyword">static</span> <span id="wmqeeuq" class="keyword">boolean</span> odd(<span id="wmqeeuq" class="keyword">int</span> number) {
<span id="wmqeeuq" class="keyword">return</span> number % <span id="wmqeeuq" class="number">2</span> == <span id="wmqeeuq" class="number">1</span>;
}
</code>
</pre>
<h2>½W?1 天问题的解ç”</h2>
<p>æœ?/4的情况下åQŒç”案是错误的。比如:(x¨¬)odd(-3) 表达å¼å¾—到的¾l“æžœž®±æ˜¯ fasle。对于所有的负奇敎ͼŒä¸Šé¢çš„æ–¹æ³•都ä¼?x¨¬)得到错误的¾l“æžœã€?/p>
<h3>åŽŸå› </h3>
<p>é—®é¢˜çš„åŽŸå› åœ¨äºŽæ±‚ä½™æ“作符(%)åQŒåœ¨Javaä¸è¯¥æ“作½W¦è¢«å®šä¹‰ä¸?/p>
<blockquote>
<p>对于所有的 int æ•°å€?a 和所有的éžé›¶ int æ•°å€?båQŒéƒ½æ»¡èƒö下é¢çš„æ’½{‰å¼
<br/>
(a / b) * b + (a % b) == a</p>
</blockquote>
<p>æ¢å¥è¯è¯´åQ?a % b) = a - (a / b) * b</p>
<p>ç”±æ•°å¦æŽ¨ç†è¿½Ž—å¯çŸ¥ï¼Œa % b 的符åähœ‰æ“作数a军_®šåQˆè¦ä¹ˆäØ“(f¨´)0åQŒè¦ä¹ˆå’Œa一è‡ß_(d¨¢)¼‰(j¨ª)。也ž®±æ˜¯è¯ß_(d¨¢)¼Œ -5 % 3 => -2åQ?-5 % -3 => -2ã€?/p>
<p>å› æ¤åQŒå¯¹äºŽæ‰€æœ‰çš„负奇数nåQ?n % 2 => -1。问题ä(sh¨´)¸çš„æ–¹æ³•自然有问题啦ã€?/p>
<h3>解决办法</h3>
<p>è¦åˆ¤æ–一个整数是å¦äØ“(f¨´)奇数的解军_Šžæ³•æœ‰ä¸¤ç§ã€?/p>
<pre>
<code class="java"> <span id="wmqeeuq" class="keyword">public</span> <span id="wmqeeuq" class="keyword">static</span> <span id="wmqeeuq" class="keyword">boolean</span> odd(<span id="wmqeeuq" class="keyword">int</span> number) {
<span id="wmqeeuq" class="keyword">return</span> number % <span id="wmqeeuq" class="number">2</span> != <span id="wmqeeuq" class="number">0</span>;
}
</code>
</pre>
<pre>
<code class="java"> <span id="wmqeeuq" class="javadoc">/**
* ˜q™ç§æ–ÒŽ(gu¨©)³•的性能更好ã€? */</span>
<span id="wmqeeuq" class="keyword">public</span> <span id="wmqeeuq" class="keyword">static</span> <span id="wmqeeuq" class="keyword">boolean</span> odd(<span id="wmqeeuq" class="keyword">int</span> number) {
<span id="wmqeeuq" class="keyword">return</span> (number & <span id="wmqeeuq" class="number">1</span>) != <span id="wmqeeuq" class="number">0</span>;
}
</code>
</pre>
<h2>æ€È»“</h2>
<p>
<strong>æ— è®ºä½ ä½•æ—¶ä‹É用到äº?ji¨£n)å–ä½™æ“作符åQŒéƒ½è¦è€ƒè™‘到æ“作数和结果的½W¦å·ã€?/strong>
</p>
<p>该æ“作符的行为在其æ“作数éžè´Ÿæ—¶æ˜¯ä¸€ç›®äº†(ji¨£n)ç„¶çš„åQŒä½†æ˜¯å½“一个或两个æ“作数都是负数时åQŒå®ƒçš„行为就ä¸é‚£ä¹ˆæ˜¾è€Œæ˜“è§äº†(ji¨£n)ã€?/p>
<hr id="hr"/>
<h2>今天的问�/h2>
<p>误‚€(g¨¨)ƒè™‘下题q™æ®µè¯æ‰€æè¿°çš„问题:(x¨¬)</p>
<p>ž®æ˜Žåœ¨è¶…å¸?j¨¬ng)è´ä¹îCº†(ji¨£n)一个äh(hu¨¢n)å€û|òE1.10的东西,但是他钱包ä¸åªæœ‰ä¸¤å…ƒä¸€å¼ çš„é’žç¥¨ã€‚å¦‚æžœä»–ç”¨ä¸€å¼ ä¸¤å…ƒçš„é’žç¥¨æ”¯ä»˜åQŒé‚£ä¹ˆåº”该找¾l™ä»–多少雉™’±å‘¢ï¼Ÿ</p>
<p>䏋颿˜¯ä¸€ä¸ªè¯•图解决上˜q°é—®é¢˜çš„½E‹åºåQŒå®ƒä¼?x¨¬)打å°å‡ºä»€ä¹ˆå‘¢åQ?/p>
<pre>
<code class="java">
<span id="wmqeeuq" class="keyword">public</span> <span id="wmqeeuq" class="keyword">class</span> <span id="wmqeeuq" class="title">Change</span>{
<span id="wmqeeuq" class="keyword">public</span> <span id="wmqeeuq" class="keyword">static</span> <span id="wmqeeuq" class="keyword">void</span> main(String args[]){
System.out.println(<span id="wmqeeuq" class="number">2.00</span> - <span id="wmqeeuq" class="number">1.10</span>);
}
}
</code>
</pre>
<img src ="http://www.aygfsteel.com/fourlee/aggbug/200996.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/fourlee/" target="_blank">æŽå››é£žåˆ€</a> 2008-05-16 21:38 <a href="http://www.aygfsteel.com/fourlee/archive/2008/05/16/200996.html#Feedback" target="_blank" style="text-decoration:none;">å‘表评论</a></div>]]></description></item><item><title>½W?1 天:(x¨¬) åˆ¤æ–æ˜¯å¦ä¸ºå¥‡æ•?/title><link>http://www.aygfsteel.com/fourlee/archive/2008/05/16/200989.html</link><dc:creator>æŽå››é£žåˆ€</dc:creator><author>æŽå››é£žåˆ€</author><pubDate>Fri, 16 May 2008 12:53:00 GMT</pubDate><guid>http://www.aygfsteel.com/fourlee/archive/2008/05/16/200989.html</guid><wfw:comment>http://www.aygfsteel.com/fourlee/comments/200989.html</wfw:comment><comments>http://www.aygfsteel.com/fourlee/archive/2008/05/16/200989.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.aygfsteel.com/fourlee/comments/commentRss/200989.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/fourlee/services/trackbacks/200989.html</trackback:ping><description><![CDATA[
<p>
<span style="FONT-SIZE: 12pt; FONT-FAMILY: å®?hu¨¤)ä½? mso-bidi-font-family: å®?hu¨¤)ä½? mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">下é¢çš„æ–¹æ³•æ„囄¡¡®å®šå®ƒé‚£å”¯ä¸€çš„傿•°æ˜¯å¦æ˜¯ä¸€ä¸ªå¥‡æ•°ã€‚这个方法能够棼‹®è¿è½¬å—åQ?/span>
</p>
<pre>
<code class="java"> <span id="wmqeeuq" class="keyword">public</span> <span id="wmqeeuq" class="keyword">static</span> <span id="wmqeeuq" class="keyword">boolean</span> odd(<span id="wmqeeuq" class="keyword">int</span> number) {
<span id="wmqeeuq" class="keyword">return</span> number % <span id="wmqeeuq" class="number">2</span> == <span id="wmqeeuq" class="number">1</span>;
}
</code>
</pre>
<img src ="http://www.aygfsteel.com/fourlee/aggbug/200989.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/fourlee/" target="_blank">æŽå››é£žåˆ€</a> 2008-05-16 20:53 <a href="http://www.aygfsteel.com/fourlee/archive/2008/05/16/200989.html#Feedback" target="_blank" style="text-decoration:none;">å‘表评论</a></div>]]></description></item><item><title>HTTP(一)http://www.aygfsteel.com/fourlee/archive/2008/02/04/179305.htmlæŽå››é£žåˆ€æŽå››é£žåˆ€Mon, 04 Feb 2008 10:57:00 GMThttp://www.aygfsteel.com/fourlee/archive/2008/02/04/179305.htmlhttp://www.aygfsteel.com/fourlee/comments/179305.htmlhttp://www.aygfsteel.com/fourlee/archive/2008/02/04/179305.html#Feedback0http://www.aygfsteel.com/fourlee/comments/commentRss/179305.htmlhttp://www.aygfsteel.com/fourlee/services/trackbacks/179305.html
HTTP
HTTPž®±æ˜¯ä¸€¿U请æ±?å“应模å¼ã€?/p>
HTTP事务
- ˜qžæŽ¥ 建立和æœåŠ¡å™¨çš„è¿žæŽ?
- 查询 è¯äh±‚æœåŠ¡å™¨ä¸Šçš„èµ„æº?
- å¤„ç† æœåŠ¡å™¨æŽ¥å—和处ç†è¯äh±‚
- å“应 æœåС噍将è¯äh±‚的资æºå‘é€å›žå®¢æˆ·ç«?
- ¾lˆæ¢ 事务完æˆåŽï¼Œå…³é—˜qžæŽ¥åQŒé™¤éžå®¢æˆähœºä¸ŽæœåŠ¡å™¨ä¹‹é—´ç«‹å³å‘生å¦ä¸€äº‹åŠ¡ã€?
用telnet½E‹åºéªŒè¯˜q™ä¸ª˜q‡ç¨‹
˜qžæŽ¥
80是HTTPå议默认的端å£ã€?/p>
查询
GET / HTTP/1.0�br>�/p>
↙表½Cºå›žè½¦ã€?/p>
GET | / | HTTP/1.0 |
查询æ–ÒŽ(gu¨©)³•å,有GETå’ŒPOST GETæ–ÒŽ(gu¨©)³•䏿”¯æŒæ¶ˆæ¯ä½“ | æœåŠ¡å™¨èµ„æº?/td> | HTTP版本 |
在telnet䏿µ‹è¯•HTTPçš„POST是很éºÈƒ¦(ch¨³)的事。这里就ä¸è®²äº?ji¨£n),何况GETå’ŒPOST很类伹{€?/p>
处ç†
BaiduæœåŠ¡å™¨æ ¹æ®è¯·æ±‚,处ç†è¯äh±‚。如果用的是ServletåQŒå°±æ˜¯æ‰§è¡Œé‚£ä¸ªServletçš„doGetæ–ÒŽ(gu¨©)³•ã€?/p>
å“应
HTTP/1.1 200 OK
Date: Sun, 03 Feb 2008 08:08:44 GMT
Server: BWS/1.0
Content-Length: 3022
Content-Type: text/html
Cache-Control: private
Expires: Sun, 03 Feb 2008 08:08:44 GMT
Set-Cookie: BAIDUID=2BB1B837C8EC6794A132C5D8DDD76721:FG=1; expires=Sun, 03-Feb-38 08:08:44 GMT; path=/; domain=.baidu.com
P3P: CP=" OTI DSP COR IVA OUR IND COM "
<html><head><meta http-equiv=Content-Type content="text/html;charset=gb2312"><title>癑ֺ¦ä¸€ä¸‹ï¼Œä½ å°±çŸ¥é“ </title><style>body{margin:4px 0}p{margin:0;padding:0}img{border:0}td,p,#u{font-size:12px}#b,#u,#l td,a{font-family:arial}#kw{font:16px Verdana;height:1.78em;padding-top:2px}#b{height:30px;padding-top:4px}#b,#b a{color:#77c;font-size:12px}#u{padding-right:10px;line-height:19px;text-align:right;margin-bottom:3px !important;margin-bottom:10px}#sb{height:2em;width:5.6em}#km{height:50px}#km a{font-family:å®?hu¨¤)体}#l{margin-bottom:5px}#m{margin-left:100px;width:22.1em;text-align:center}p,#b,table{width:600px;border:0}#sb,#km,#l,#m{font-size:14px}#m a,#m b{margin-right:1.14em}a{color:#00c}a:active{color:#f60}</style></head>
<body><div id=u></div><center><a href=http://hi.baidu.com/baidu target=_blank><img src=http://www.baidu.com/img/logo.gif width=174 height=59 alt="ç‚ÒŽ(gu¨©)¤˜q›å…¥ 癑ֺ¦½Iºé—´"></a><br><br><br><br><table cellpadding=0 cellspacing=0 id=l><tr><td align=left><div id=m><a onclick=s(this) href=http://news.baidu.com>æ–?amp;nbsp;é—?lt;/a><b>¾|?amp;nbsp;™å?lt;/b><a onclick=s(this) href=http://tieba.baidu.com>è´?amp;nbsp;å?lt;/a><a onclick=s(this) href=http://zhidao.baidu.com>çŸ?amp;nbsp;é?lt;/a><a onclick=s(this) href=http://mp3.baidu.com>MP3</a><a onclick=s(this) href=http://image.baidu.com>å›?amp;nbsp;ç‰?lt;/a></div></td></tr></table>
<table cellpadding=0 cellspacing=0><tr valign=top><td width=92></td><td height=62 nowrap><form name=f action=/s><input type=text name=wd id=kw size=36 maxlength=100><script>var w=document.f.wd;w.focus();document.getElementById("u").innerHTML='<a ;function s(o){if(w.value.length>0){var h=o.href;var q=encodeURIComponent(w.value);if(h.indexOf("q=")!=-1){o.href=h.replace(new RegExp("q=[^&$]*"),"q="+q)}else{o.href+="?q="+q}}};(function(){if(new RegExp("q=([^&]+)").test(location.search)){w.value=decodeURIComponent(RegExp.$1)}})()</script><input type=hidden name=cl value=3> <input type=submit value=癑ֺ¦ä¸€ä¸?id=sb><br><br></form></td><td width=100><a href=/search/jiqiao.html>帮助</a><br><a href=/gaoji/advanced.html>高çñ”</a></td></tr></table>
<p id=km> <a href=http://hi.baidu.com>½Iºé—´</a> | <a href=http://www.baidu.com/more>更多>></a></p>
<p style=height:60px></p>
<p style=height:30px><a onClick="this.style.behavior='url(#default#homepage)';this.setHomePage('http://www.baidu.com')" href=http://utility.baidu.com/traf/click.php?id=215&url=http://www.baidu.com>把百度设为首™å?lt;/a></p><p style=height:14px><a href=http://jingjia.baidu.com>ä¼ä¸šæŽ¨å¹¿</a> | <a href=http://top.baidu.com>æœçƒ¦(ch¨³)风云æ¦?lt;/a> | <a href=/home.html>关于癑ֺ¦</a> | <a href=http://ir.baidu.com>About Baidu</a></p><p id=b>©2008 Baidu <a href=http://www.baidu.com/duty>使用癑ֺ¦å‰å¿…è¯?lt;/a> <a href=http://www.miibeian.gov.cn target=_blank>京ICPè¯?30173å?lt;/a> <a href=http://www.hd315.gov.cn/beian/view.asp?bianhao=010202001092500412><img src=http://gimg.baidu.com/img/gs.gif></a></p></center></body></html><!--4eca38de351397c2-->
失去äº?ji¨£n)è·Ÿä¸ÀLœºçš„连接ã€?br>
¾lˆæ¢
用telnet˜qžæŽ¥webæœåŠ¡å™¨ï¼Œ˜qžæŽ¥ä¼?x¨¬)立马终æ¢ã€‚如果用‹¹è§ˆå™¨è®¿é—®ï¼Œ‹¹è§ˆå™¨ä¼š(x¨¬)å–å¾—ä¸Žé¡µé¢æœ‰å…³çš„æ‰€æœ‰å›¾åƒã€æ ·å¼è¡¨å’Œè„šæœ¬æ–‡ä»¶ç‰åQŒæ‰¾lˆæ¢˜qžæŽ¥ã€?/p>
HTTP查询和å“åº”çš„æ¶ˆæ¯æ ¼å¼
HTTP查询和å“åº”çš„æ¶ˆæ¯æ ¼å¼å·®ä¸å¤šã€?/p>
æ ¼å¼ | initliaze line key1:value1 key2:value2
[Optional message body] |
æŸ¥è¯¢æ ¼å¼ | GET /newaddr?name=jack&email=2 HTTP/1.0 accept:*/* accept-language:zh-cn ... ...
|
å“åº”æ ¼å¼ (具体è§ä¸Šé? | HTTP/1.1 200 OK Date: Sun, 03 Feb 2008 08:08:44 GMT Server: BWS/1.0 ... ...
<html>...</html> |
åŽè®°
HTTP定义äº?ji¨£n)查询和å“åº”çš„æ¶ˆæ¯æ ¼å¼ã€‚但æ¯ä¸ª‹¹è§ˆå™¨å’ŒæœåŠ¡å™¨åœ¨˜q™ç§æ ¼å¼ä¸‹ï¼Œæœ‰è‡ªå·±å®šä¹‰çš„内容。æœåŠ¡å™¨é€šè¿‡‹¹è§ˆå™¨è¯·æ±‚的消æ¯åQŒçŸ¥é“æµè§ˆå™¨å…·ä½“是什么型åïL(f¨¥ng)š„åQŒæ˜¯ä»€ä¹ˆæ“作系¾lŸã€‚这些具体怎么åšçš„åQŒä¸‹æ–‡åˆ†è§?/p>
]]> - CSSå®žçŽ°çš„æŽ§åˆ¶å°æ•ˆæžœhttp://www.aygfsteel.com/fourlee/archive/2008/02/04/179302.htmlæŽå››é£žåˆ€æŽå››é£žåˆ€Mon, 04 Feb 2008 09:45:00 GMThttp://www.aygfsteel.com/fourlee/archive/2008/02/04/179302.htmlhttp://www.aygfsteel.com/fourlee/comments/179302.htmlhttp://www.aygfsteel.com/fourlee/archive/2008/02/04/179302.html#Feedback11http://www.aygfsteel.com/fourlee/comments/commentRss/179302.htmlhttp://www.aygfsteel.com/fourlee/services/trackbacks/179302.html
摘è¦
我们在写blog或写文档说明的时候,有时候说明在控制åîC¸æ€Žæ ·ä½¿ç”¨åQŒåœ¨windows xp/2000ä¸å°±æ˜¯cmd命ä×o(h¨´)ã€?ä¸ÞZº†(ji¨£n)表达˜q™ç§åœ¨æŽ§åˆ¶å°ä¸çš„æ“ä½œåQŒæˆ‘写了(ji¨£n)ä¸?CSSæ¥å‘ˆçŽ°æ•ˆæžœã€?/p>
éœ€æ±‚å’Œè®¾è®¡è¦æ±‚
- 在网™å‰|–‡æ¡£ä¸(blog或用æˆäh‰‹å†?åQŒå‘ˆçŽîC¸€ä¸ªæŽ§åˆ¶å°çš„æ ·å¼ï¼Œæœ‰è¾¹æ¡†å’Œæ ‡é¢˜æ ,黑色背景。如下图
- ˜q™ä¸ªæŽ§åˆ¶å°å¯ä»¥çœŸå®žçš„æŽ§åˆ¶å°é‚£æ ·å¯ä»¥ï¼Œåœ¨é€‚å½“çš„æ—¶å€™ï¼Œæœ‰ä¸Šä¸‹æˆ–å·¦å³æ»šåЍæ?
- 控制å°é‡Œå…è®¸åŠ å…¥çš„å…ƒç´ æœ‰<p>å—ã€?
- ä¸ÞZº†(ji¨£n)区分控制å°é‡Œçš„输入和输出å—符ä¸ÔŒ¼Œåˆ†åˆ«å¯ä»¥ç”?lt;kbd>å’?lt;samp>括è“væ¥ï¼Œç„¶åŽè®„¡½®ä»–们的CSSæ ·å¼
- 当å‰ç›®å½•æç¤º½W¦ï¼Œç”?lt;span>å…ƒç´ è¡¨è¾¾ã€?
- <kbd>ã€?lt;samp>å’?lt;span>å…ƒç´ åªèƒ½åŒ…å«åœ?lt;p>å…ƒç´ ä¸ï¼Œä¸èƒ½ç›´æŽ¥åœ¨â€œæŽ§åˆ¶å°â€ä¸ã€?

实现
- æŽ§åˆ¶å°æ ‡é¢˜ç”¨èƒŒæ™¯å›„¡‰‡å®žçް
- å› äØ“(f¨´)åŒæ—¶æœ‰æ ‡é¢˜å’Œæ»šåЍæ¡ï¼Œæ‰€ä»¥äØ“(f¨´)äº?ji¨£n)ä¸è®©æ»šåЍæ¡è¦†ç›–éƒ¨åˆ†æ ‡é¢˜åQŒæŽ§åˆ¶å°è‡›_°‘è¦ç”¨ä¸¤ä¸ª<div>æ¥è¡¨è¾¾ï¼Œä¸€ä¸ªè¡¨½CºæŽ§åˆ¶å°è¾ÒŽ(gu¨©)¡†åQŒä¸€ä¸ªè¡¨½CºæŽ§åˆ¶å°é‡Œå†…å®?
- 控制å°çš„宽度是固定的åQŒé«˜åº¦æœ‰æŽ§åˆ¶å°çš„内容层表è¾?
CSS
@charset "utf-8";
/**
* Copyright (c) æŽå›› fourlee@live.cn
*/
/* 控制å°è¾¹æ¡†å±‚ */
.console_box {
background: #000000 url(Command_heading.jpg) no-repeat;
width: 660px; /* windows 控制å°é»˜è®¤å®½åº?*/
margin: 0px;
padding-top: 23px; /* æŽ§åˆ¶å°æ ‡é¢˜æ 高度 */
padding-right: 0px;
padding-bottom: 0px;
padding-left: 0px;
border: 4px outset #FFFFFF;
}
/* 控制å°å†…容层 */
.console_box .console {
background-color: #000000;
font-family: "Courier New", Courier, "å®?hu¨¤)ä½?, monospace;
font-size: 12px;
color: #CCCCCC;
width: 656px;
height: 396px;
margin: 0px;
padding: 0px;
border: 2px inset #666666;
overflow: auto; /* è‡ªåŠ¨åŠ å…¥æ»šåŠ¨æ?*/
}
.console_box .console p {
line-height: 120%;
margin: 0px;
padding-bottom: 1em; /* ŒDµè½ä¸‹é¢ç•™ä¸€½Iø™¡Œçš„高åº?*/
padding-top: 0px;
padding-right: 0px;
padding-left: 0px;
}
HTML
<div class="console_box">
<div class="console" style="height:200px;">
<p>æ¤å¤„昄¡¤º class "console_box" 的内å®ÒŽ(gu¨©)¤å¤„显½C?class "console_box" 的内å®ÒŽ(gu¨©)¤å¤„显½C?class "console_box" 的内å®ÒŽ(gu¨©)¤å¤„显½C?class "console_box" 的内å®ÒŽ(gu¨©)¤å¤„显½C?class "console_box" 的内å®ÒŽ(gu¨©)¤å¤„显½C?class "console_box" 的内å®ÒŽ(gu¨©)¤å¤„显½C?class "console_box" 的内å®ÒŽ(gu¨©)¤å¤„显½C?class "console_box" 的内å®ÒŽ(gu¨©)¤å¤„显½C?class "console_box" 的内å®ÒŽ(gu¨©)¤å¤„显½C?class "console_box" 的内å®ÒŽ(gu¨©)¤å¤„显½C?class "console_box" 的内å®?lt;/p>
<p>æ¤å¤„昄¡¤º class "console_box" 的内å®?lt;/p>
<p>æ¤å¤„昄¡¤º class "console_box" 的内å®?lt;/p>
<p>æ¤å¤„昄¡¤º class "console_box" 的内å®?lt;/p>
<p>æ¤å¤„昄¡¤º class "console_box" 的内å®?lt;/p>
<p>æ¤å¤„昄¡¤º class "console_box" 的内å®?lt;/p>
<p>æ¤å¤„昄¡¤º class "console_box" 的内å®?lt;/p>
<p>æ¤å¤„昄¡¤º class "console_box" 的内å®?lt;/p>
<p>æ¤å¤„昄¡¤º class "console_box" 的内å®?lt;/p>
<p>æ¤å¤„昄¡¤º class "console_box" 的内å®?lt;/p>
<p>æ¤å¤„昄¡¤º class "console_box" 的内å®?lt;/p>
<p>æ¤å¤„昄¡¤º class "console_box" 的内å®?lt;/p>
<p>æ¤å¤„昄¡¤º class "console_box" 的内å®?lt;/p>
</div>
</div>
å¯ä»¥åœ?lt;div class="console" ...>ä¸è®¾¾|®é«˜åº¦æ¥è®„¡½®æŽ§åˆ¶å°çš„高度ã€?/p>
åŽè®°
一个控制å°çš„æ•ˆæžœåŸºæœ¬å‡ºæ¥äº†(ji¨£n)。在IE6å’ŒFirefox䏿µ‹è¯•通过。还有工作å¯å?/p>
- ä¸ÞZº†(ji¨£n)区分控制åîC¸çš„输入和输出åQŒå¾è®®ç”¨<kbd>å’?lt;samp>æ ‡ç¾åQŒåƈ讄¡½®˜q™å†™æ ‡ç¾çš„CSSæ ·å¼ã€?
- æ›´æ”¹æ ‡é¢˜æ å›¾æ ‡å’Œè®„¡½®ä¸€ä¸‹CSSæ ·å¼åQŒå°±å¯ä»¥å®žçްLinux或Mac½{‰æ“作系¾lŸä¸çš„æŽ§åˆ¶å°æ•ˆæžœ
- ˜q˜æœ‰ä¸€äº›æ²¡é‡åˆ°å’Œæƒ³åˆ°çš„问题
˜q™æ˜¯æˆ‘第一‹Æ¡ç”¨BlogåQŒè¿˜?sh¨´)¸çŸ¥é“ä¸Šä¼ ã€‚è¿™äº›æºä»£ç 和图片的åQŒè¯·ç•™ä¸‹EMailåQŒæˆ–½{‰æˆ‘熟æ?zh¨¨n)‰äº†(ji¨£n)Blogå†ä¸‹è½½ã€?/p>
]]>
Ö÷Õ¾Ö©Öë³ØÄ£°å£º
ÌìÌ¨ÏØ|
ÐÂÉÛÏØ|
Äϰ²ÊÐ|
´óÆÒÏØ|
¹óµÂÏØ|
ÁÙä¬ÏØ|
ÁùÅÌË®ÊÐ|
ÃÏÖÝÊÐ|
ÏʳÇ|
ËÉÅËÏØ|
ÄÏ»ãÇø|
Ô½Î÷ÏØ|
ÂÛ̳|
×¼¸ñ¶ûÆì|
¼ÎÓãÏØ|
ÀÖɽÊÐ|
ÇìÑôÊÐ|
ÓÎÏ·|
¸Á¶ûÏØ|
Èʲ¼ÏØ|
¼ªÊ×ÊÐ|
óÞÁ¬ÏØ|
ɽ¶«Ê¡|
캵ÂÏØ|
»ôÁÖ¹ùÀÕÊÐ|
È·É½ÏØ|
ÒË»ÆÏØ|
ÌìÆø|
ʱÉÐ|
ÄþÔ¶ÏØ|
·½É½ÏØ|
»ªÄþÏØ|
À¼ÏªÊÐ|
ÓÚÌïÏØ|
ÐÅÑôÊÐ|
ÂåÆÖÏØ|
Ïå·ÚÏØ|
ºù«µºÊÐ|
Ã×Ò×ÏØ|
ºÏË®ÏØ|
½³Ç|