ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>色综合久久精品,一本色道久久综合亚洲二区三区,三级视频网站在线http://www.aygfsteel.com/yangcai/醉里挑灯看剑,梦里吚w›¨å¬é£Ž.仗剑独走天æ„Ó,试问谁与争锋!zh-cnMon, 16 Jun 2025 13:03:47 GMTMon, 16 Jun 2025 13:03:47 GMT60Java¾lå…¸è¯•题及答æ¡?/title><link>http://www.aygfsteel.com/yangcai/archive/2007/03/18/104540.html</link><dc:creator>杨彩</dc:creator><author>杨彩</author><pubDate>Sun, 18 Mar 2007 01:30:00 GMT</pubDate><guid>http://www.aygfsteel.com/yangcai/archive/2007/03/18/104540.html</guid><wfw:comment>http://www.aygfsteel.com/yangcai/comments/104540.html</wfw:comment><comments>http://www.aygfsteel.com/yangcai/archive/2007/03/18/104540.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.aygfsteel.com/yangcai/comments/commentRss/104540.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/yangcai/services/trackbacks/104540.html</trackback:ping><description><![CDATA[ <p>½W¬ä¸€åQŒè°ˆè°ˆfinal, finally, finalize的区别ã€?<br />   final—修饰符åQˆå…³é”®å­—åQ‰å¦‚æžœä¸€ä¸ªç±»è¢«å£°æ˜ŽäØ“finalåQŒæ„å‘³ç€å®ƒä¸èƒ½å†‹z„¡”Ÿå‡ºæ–°çš„子¾c»ï¼Œä¸èƒ½ä½œäؓ父类被ç‘ôæ‰Ñ€‚因此一个类不能既被声明ä¸?abstract的,又被声明为finalçš„ã€‚å°†å˜é‡æˆ–æ–¹æ³•å£°æ˜ŽäØ“finalåQŒå¯ä»¥ä¿è¯å®ƒä»¬åœ¨ä½¿ç”¨ä¸­ä¸è¢«æ”¹å˜ã€‚被声明为final的变量必™åÕdœ¨å£°æ˜Žæ—¶ç»™å®šåˆå€û|¼Œè€Œåœ¨ä»¥åŽçš„引用中只能è¯Õd–åQŒä¸å¯ä¿®æ”V€‚被声明为final的方法也同样只能使用åQŒä¸èƒ½é‡è½½ã€?<br />  finally—再异常处理时提ä¾?finally 块来执行ä»ÖM½•清除操作。如果抛å‡ÞZ¸€ä¸ªå¼‚常,那么相匹配的 catch 子句ž®×ƒ¼šæ‰§è¡ŒåQŒç„¶åŽæŽ§åˆ¶å°±ä¼šè¿›å…?finally 块(如果有的话)ã€?<br />  finalize—方法名。Java æŠ€æœ¯å…è®æ€‹Éç”?finalize() æ–ÒŽ(gu¨©)³•在垃圾收集器ž®†å¯¹è±¡ä»Žå†…存中清除出åŽÖM¹‹å‰åšå¿…要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对˜q™ä¸ªå¯¹è±¡è°ƒç”¨çš„。它是在 Object ¾cÖM¸­å®šä¹‰çš„,因此所有的¾c»éƒ½¾l§æ‰¿äº†å®ƒã€‚子¾c»è¦†ç›?finalize() æ–ÒŽ(gu¨©)³•以整理系¾lŸèµ„源或者执行其他清理工作。finalize() æ–ÒŽ(gu¨©)³•是在垃圾攉™›†å™¨åˆ é™¤å¯¹è±¡ä¹‹å‰å¯¹˜q™ä¸ªå¯¹è±¡è°ƒç”¨çš„ã€?<br />  ½W¬äºŒåQŒAnonymous Inner Class (匿名内部¾c? 是否可以extends(¾l§æ‰¿)其它¾c»ï¼Œæ˜¯å¦å¯ä»¥implements(实现)interface(接口)? <br />  匿名的内部类是没有名字的内部¾c…R€‚不能extends(¾l§æ‰¿) 其它¾c»ï¼Œä½†ä¸€ä¸ªå†…éƒ¨ç±»å¯ä»¥ä½œäØ“ä¸€ä¸ªæŽ¥å£ï¼Œç”±å¦ä¸€ä¸ªå†…éƒ¨ç±»å®žçŽ°ã€?<br />  ½W¬ä¸‰åQŒStatic Nested Class å’?Inner Class的不同,说得­‘Šå¤š­‘Šå¥½(面试题有的很½W¼ç»Ÿ)ã€?<br />  Nested Class åQˆä¸€èˆ¬æ˜¯C++的说法)åQŒInner Class (一般是JAVA的说æ³?。Java内部¾cÖM¸ŽC++嵌套¾cÀLœ€å¤§çš„不同ž®±åœ¨äºŽæ˜¯å¦æœ‰æŒ‡å‘外部的引用上。具体可见http: //www.frontfree.net/articles/services/view.asp?id=704&page=1 </p> <p>   注: 静态内部类åQˆInner ClassåQ‰æ„å‘³ç€1创徏一个static内部¾cȝš„对象åQŒä¸éœ€è¦ä¸€ä¸ªå¤–部类对象åQ?不能从一个static内部¾cȝš„一个对象访问一个外部类对象 <br />  ½W¬å››åQ?amp;å’?amp;&的区别ã€?<br />  &是位˜qç®—½W¦ã€?amp;&是布?y¨­u)®”(d¨¡ng)逻辑˜qç®—½W¦ã€?<br />  ½W¬äº”åQŒHashMapå’ŒHashtable的区别ã€?<br />  都属于Map接口的类åQŒå®žçŽîCº†ž®†æƒŸä¸€é”®æ˜ ž®„到特定的å€ég¸Šã€?<br />   HashMap ¾cÀL²¡æœ‰åˆ†¾cÀLˆ–者排序。它允许一ä¸?null 键和多个 null 倹{€?<br />   Hashtable ¾cÖM¼¼äº?HashMapåQŒä½†æ˜¯ä¸å…è®¸ null 键和 null 倹{€‚它也比 HashMap æ…¢ï¼Œå› äØ“å®ƒæ˜¯åŒæ­¥çš„ã€?<br />  ½W¬å…­åQŒCollection å’?Collections的区别ã€?<br />  Collections是个java.util下的¾c»ï¼Œå®ƒåŒ…含有各种有关集合操作的静态方法ã€?<br />   Collection是个java.util下的接口åQŒå®ƒæ˜¯å„¿Ué›†åˆç»“构的父接口ã€?<br />  ½W¬ä¸ƒåQŒä»€ä¹ˆæ—¶å€™ç”¨assertã€?<br />  断言是一个包含布?y¨­u)®”(d¨¡ng)表辑ּçš„语句,在执行这个语句时假定该表辑ּä?true。如果表辑ּè®¡ç®—ä¸?falseåQŒé‚£ä¹ˆç³»¾lŸä¼šæŠ¥å‘Šä¸€ä¸?Assertionerror。它用于调试目的åQ?<br />   assert(a > 0); // throws an Assertionerror if a <= 0 </p> <p>   断言可以有两¿UåŞ式: <br />   assert Expression1 ; <br />   assert Expression1 : Expression2 ; <br />   Expression1 应该æ€ÀL˜¯äº§ç”Ÿä¸€ä¸ªå¸ƒ?y¨­u)®”(d¨¡ng)倹{€?<br />   Expression2 可以是得å‡ÞZ¸€ä¸ªå€¼çš„ä»ÀL„è¡¨è¾¾å¼ã€‚这个值用于生成显½Cºæ›´å¤šè°ƒè¯•信息的 String 消息ã€?<br />   断言在默认情况下是禁用的。要在编译时启用断言åQŒéœ€è¦ä‹Éç”?source 1.4 标记åQ?<br />   javac -source 1.4 Test.java <br />   要在˜qè¡Œæ—¶å¯ç”¨æ–­­a€åQŒå¯ä½¿ç”¨ -enableassertions 或è€?-ea 标记ã€?<br />   要在˜qè¡Œæ—‰™€‰æ‹©¼›ç”¨æ–­è¨€åQŒå¯ä½¿ç”¨ -da 或è€?-disableassertions 标记ã€?<br />   要系¾lŸç±»ä¸­å¯ç”¨æ–­­a€åQŒå¯ä½¿ç”¨ -esa 或è€?-dsa 标记。还可以在包的基¼‹€ä¸Šå¯ç”¨æˆ–者禁用断­a€ã€?<br />  可以在预计正常情况下不会到达的ä“Q何位¾|®ä¸Šæ”„¡½®æ–­è¨€ã€‚æ–­­a€å¯ä»¥ç”¨äºŽéªŒè¯ä¼ é€’ç»™¿Uæœ‰æ–ÒŽ(gu¨©)³•的参数。不˜q‡ï¼Œæ–­è¨€ä¸åº”该用于验证传递给公有æ–ÒŽ(gu¨©)³•的参敎ͼŒå› äؓ不管是否启用了断­a€åQŒå…¬æœ‰æ–¹æ³•都必须‹‚€æŸ¥å…¶å‚数。不˜q‡ï¼Œæ—¢å¯ä»¥åœ¨å…¬æœ‰æ–ÒŽ(gu¨©)³•中,也可以在非公有方法中利用断言‹¹‹è¯•后置条äšg。另外,断言不应该以ä»ÖM½•方式改变½E‹åºçš„状态ã€?</p> <p> <br />  ½W¬å…«åQŒGC是什ä¹? ä¸ÞZ»€ä¹ˆè¦æœ‰GC? (基础)ã€?<br />  GC是垃圾收集器。Java ½E‹åºå‘˜ä¸ç”¨æ‹…å¿ƒå†…å­˜ç®¡ç†ï¼Œå› äØ“åžƒåœ¾æ”‰™›†å™¨ä¼šè‡ªåЍ˜q›è¡Œ½Ž¡ç†ã€‚要è¯äh±‚垃圾攉™›†åQŒå¯ä»¥è°ƒç”¨ä¸‹é¢çš„æ–ÒŽ(gu¨©)³•之一åQ?<br />   System.gc() <br />   Runtime.getRuntime().gc() <br />  ½W¬ä¹(ji¨¦)åQŒString s = new String("xyz");创徏了几个String Object? <br />  两个对象åQŒä¸€ä¸ªæ˜¯â€œxyxâ€?一个是指向“xyx”的引用对象sã€?<br />  ½W¬ååQŒMath.round(11.5)½{‰æ–¼å¤šå°‘? Math.round(-11.5)½{‰æ–¼å¤šå°‘?<br />  <br />   Math.round(11.5)˜q”回åQˆlongåQ?2åQŒMath.round(-11.5)˜q”回åQˆlongåQ?11; <br />  ½W¬åä¸€åQŒshort s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?</p> <p>  short s1 = 1; s1 = s1 + 1;有错åQŒs1是short型,s1+1是intåž?不能昑ּè½¬åŒ–为short型。可修改为s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正确ã€?<br />  ½W¬åäºŒï¼Œsleep() å’?wait() 有什么区åˆ? 搞线½E‹çš„æœ€çˆ?<br />  sleep()æ–ÒŽ(gu¨©)³•是ä‹É¾U¿ç¨‹åœæ­¢ä¸€ŒD‰|—¶é—´çš„æ–ÒŽ(gu¨©)³•。在sleep æ—‰™—´é—´éš”æœŸæ»¡åŽï¼Œ¾U¿ç¨‹ä¸ä¸€å®šç«‹åÏx¢å¤æ‰§è¡Œã€‚这是因为在那个时刻åQŒå…¶å®ƒçº¿½E‹å¯èƒ½æ­£åœ¨è¿è¡Œè€Œä¸”æ²¡æœ‰è¢«è°ƒåº¦äØ“æ”‘Ö¼ƒæ‰§è¡ŒåQŒé™¤é?a)“醒来”的¾U¿ç¨‹å…ähœ‰æ›´é«˜çš„优先çñ”ã€?/p> <p>   (b)正在˜qè¡Œçš„线½E‹å› ä¸ºå…¶å®ƒåŽŸå› è€Œé˜»å¡žã€?<br />   wait()是线½E‹äº¤äº’æ—¶åQŒå¦‚果线½E‹å¯¹ä¸€ä¸ªåŒæ­¥å¯¹è±¡x 发出一个wait()调用åQŒè¯¥¾U¿ç¨‹ä¼šæš‚停执行,被调对象˜q›å…¥½{‰å¾…状态,直到被唤醒或½{‰å¾…æ—‰™—´åˆ°ã€?<br />  ½W¬åä¸‰ï¼ŒJava有没有goto? <br />  Goto—java中的保留字,现在没有在java中ä‹É用ã€?<br />  ½W¬åå››ï¼Œæ•°ç»„有没有length()˜q™ä¸ªæ–ÒŽ(gu¨©)³•? String有没有length()˜q™ä¸ªæ–ÒŽ(gu¨©)³•åQ?<br />  数组没有length()˜q™ä¸ªæ–ÒŽ(gu¨©)³•åQŒæœ‰length的属性ã€?<br />   String有有length()˜q™ä¸ªæ–ÒŽ(gu¨©)³•ã€?<br />  ½W¬åäº”,Overloadå’ŒOverride的区别。Overloaded的方法是否可以改变返回值的¾cÕdž‹? <br />  æ–ÒŽ(gu¨©)³•的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父¾cÖM¸Žå­ç±»ä¹‹é—´å¤šæ€æ€§çš„一¿Uè¡¨çŽŽÍ¼Œé‡è²Overloading是一个类中多态性的一¿Uè¡¨çŽ°ã€‚å¦‚æžœåœ¨å­ç±»ä¸­å®šä¹‰æŸæ–ÒŽ(gu¨©)³•与其父类有相同的名称和参敎ͼŒæˆ‘们说该æ–ÒŽ(gu¨©)³•被重å†?(Overriding)。子¾cȝš„对象使用˜q™ä¸ªæ–ÒŽ(gu¨©)³•æ—Óž¼Œž®†è°ƒç”¨å­¾cÖM¸­çš„定义,对它而言åQŒçˆ¶¾cÖM¸­çš„定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参æ•îC¸ªæ•°æˆ–有不同的参数¾cÕdž‹åQŒåˆ™¿UîCØ“æ–ÒŽ(gu¨©)³•的重è½?Overloading)。Overloaded的方法是可以改变˜q”回值的¾cÕdž‹ã€?<br />  ½W¬åå…­ï¼ŒSet里的元素是不能重复的åQŒé‚£ä¹ˆç”¨ä»€ä¹ˆæ–¹æ³•来区分重复与否å‘? 是用==˜q˜æ˜¯equals()? 它们有何区别? <br />  Set里的元素是不能重复的åQŒé‚£ä¹ˆç”¨iterator()æ–ÒŽ(gu¨©)³•来区分重复与否。equals()是判è¯ÖM¸¤ä¸ªSet是否相等ã€?<br />   equals()å’?=æ–ÒŽ(gu¨©)³•军_®šå¼•用值是否指向同一对象equals()在类中被覆盖åQŒäؓ的是当两个分¼›Èš„对象的内容和¾cÕdž‹ç›”R…çš„话åQŒè¿”回真倹{€?<br />  ½W¬åä¸ƒï¼Œ¾l™æˆ‘一个你最常见到的runtime exceptionã€?<br />  ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException, DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException, <br />   ImagingOpException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFORMatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException </p> <p>  ½W¬åå…«ï¼Œerrorå’Œexception有什么区åˆ? <br />  error 表示恢复不是不可能但很困隄¡š„情况下的一¿Uä¸¥é‡é—®é¢˜ã€‚比如说内存溢出。不可能指望½E‹åºèƒ½å¤„理这æ ïL(f¨¥ng)š„æƒ…况ã€?<br />   exception 表示一¿Uè®¾è®¡æˆ–实现问题。也ž®±æ˜¯è¯ß_¼Œå®ƒè¡¨½Cºå¦‚果程序运行正常,从不会发生的情况ã€?</p> <p>   ½W¬åä¹?ji¨¦),List, Set, Map是否¾l§æ‰¿è‡ªCollection接口? <br />  ListåQŒSetæ˜?<br />  Map不是 <br />  ½W¬äºŒåï¼Œabstract classå’Œinterface有什么区åˆ? <br />  声明æ–ÒŽ(gu¨©)³•的存在而不åŽÕd®žçŽ°å®ƒçš„ç±»è¢«å«åšæŠ½è±¡ç±»åQˆabstract classåQ‰ï¼Œå®ƒç”¨äºŽè¦åˆ›å¾ä¸€ä¸ªä½“现某些基本行为的¾c»ï¼Œòq¶äؓ该类声明æ–ÒŽ(gu¨©)³•åQŒä½†ä¸èƒ½åœ¨è¯¥¾cÖM¸­å®žçŽ°è¯¥ç±»çš„æƒ…å†üc€‚不能创建abstract ¾cȝš„实例。然而可以创å»ÞZ¸€ä¸ªå˜é‡ï¼Œå…¶ç±»åž‹æ˜¯ä¸€ä¸ªæŠ½è±¡ç±»åQŒåƈ让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract ¾cȝš„子类为它们父¾cÖM¸­çš„æ‰€æœ‰æŠ½è±¡æ–¹æ³•提供实玎ͼŒå¦åˆ™å®ƒä»¬ä¹Ÿæ˜¯æŠ½è±¡¾cÖMؓ。取而代之,在子¾cÖM¸­å®žçŽ°è¯¥æ–¹æ³•ã€‚çŸ¥é“å…¶è¡ŒäØ“çš„å…¶å®ƒç±»å¯ä»¥åœ¨ç±»ä¸­å®žçŽ°è¿™äº›æ–¹æ³•ã€?<br />  接口åQˆinterfaceåQ‰æ˜¯æŠ½è±¡¾cȝš„变体。在接口中,所有方法都是抽象的。多¾l§æ‰¿æ€§å¯é€šè¿‡å®žçް˜q™æ ·çš„æŽ¥å£è€ŒèŽ·å¾—ã€‚æŽ¥å£ä¸­çš„æ‰€æœ‰æ–¹æ³•éƒ½æ˜¯æŠ½è±¡çš„åQŒæ²¡æœ‰ä¸€ä¸ªæœ‰½E‹åºä½“。接口只可以定义static final成员变量。接口的实现与子¾cȝ›¸ä¼û|¼Œé™¤äº†è¯¥å®žçŽ°ç±»ä¸èƒ½ä»ŽæŽ¥å£å®šä¹‰ä¸­¾l§æ‰¿è¡Œäؓ。当¾cÕd®žçŽ°ç‰¹ŒDŠæŽ¥å£æ—¶åQŒå®ƒå®šä¹‰åQˆå³ž®†ç¨‹åºä½“¾l™äºˆåQ‰æ‰€æœ‰è¿™¿UæŽ¥å£çš„æ–ÒŽ(gu¨©)³•。然后,它可以在实现了该接口的类的ä“Q何对象上调用接口的方法。由于有抽象¾c»ï¼Œå®ƒå…è®æ€‹Éç”¨æŽ¥å£åä½œäØ“å¼•ç”¨å˜é‡çš„ç±»åž‹ã€‚é€šå¸¸çš„åŠ¨æ€è”¾~–将生效。引用可以è{换到接口¾cÕdž‹æˆ–从接口¾cÕdž‹è½¬æ¢åQŒinstanceof ˜qç®—½W¦å¯ä»¥ç”¨æ¥å†³å®šæŸå¯¹è±¡çš„类是否实现了接口ã€?<br />  ½W¬äºŒåä¸€åQŒabstractçš„method是否可同时是static,是否可同时是nativeåQŒæ˜¯å¦å¯åŒæ—¶æ˜¯synchronized? <br />  都不èƒ?<br />  ½W¬äºŒåäºŒåQŒæŽ¥å£æ˜¯å¦å¯¾l§æ‰¿æŽ¥å£? 抽象¾cÀL˜¯å¦å¯å®žçް(implements)接口? 抽象¾cÀL˜¯å¦å¯¾l§æ‰¿å®žä½“¾c?concrete class)? <br />  接口可以¾l§æ‰¿æŽ¥å£ã€‚抽象类可以实现(implements)接口åQŒæŠ½è±¡ç±»æ˜¯å¦å¯ç‘ô承实体类åQŒä½†å‰ææ˜¯å®žä½“类必须有明¼‹®çš„æž„造函数ã€?<br />  ½W¬äºŒåä¸‰åQŒå¯åŠ¨ä¸€ä¸ªçº¿½E‹æ˜¯ç”¨run()˜q˜æ˜¯start()? <br />  启动一个线½E‹æ˜¯è°ƒç”¨start()æ–ÒŽ(gu¨©)³•åQŒä‹É¾U¿ç¨‹æ‰€ä»£è¡¨çš„虚拟处理机处于可运行状态,˜q™æ„å‘³ç€å®ƒå¯ä»¥ç”±JVM调度òq¶æ‰§è¡Œã€‚è¿™òq¶ä¸æ„å‘³ç€¾U¿ç¨‹ž®×ƒ¼šç«‹å³˜qè¡Œã€‚run()æ–ÒŽ(gu¨©)³•可以产生必须退出的标志来停止一个线½E‹ã€?<br />  ½W¬äºŒåå››åQŒæž„造器Constructor是否可被override? <br />  构造器Constructor不能被ç‘ô承,因此不能重写OverridingåQŒä½†å¯ä»¥è¢«é‡è½½Overloadingã€?<br />  ½W¬äºŒåäº”åQŒæ˜¯å¦å¯ä»¥ç‘ô承String¾c? <br />  String¾cÀL˜¯final¾cÀL•…不可以ç‘ôæ‰Ñ€?</p> <p>  ½W¬äºŒåå…­åQŒå½“一个线½E‹è¿›å…¥ä¸€ä¸ªå¯¹è±¡çš„一个synchronizedæ–ÒŽ(gu¨©)³•后,其它¾U¿ç¨‹æ˜¯å¦å¯è¿›å…¥æ­¤å¯¹è±¡çš„其它方æ³? <br />  不能åQŒä¸€ä¸ªå¯¹è±¡çš„一个synchronizedæ–ÒŽ(gu¨©)³•只能ç”׃¸€ä¸ªçº¿½E‹è®¿é—®ã€?</p> <p>   ½W¬äºŒåä¸ƒåQŒtry {}里有一个return语句åQŒé‚£ä¹ˆç´§è·Ÿåœ¨˜q™ä¸ªtry后的finally {}里的code会不会被执行åQŒä»€ä¹ˆæ—¶å€™è¢«æ‰§è¡ŒåQŒåœ¨return前还是后? <br />  会执行,在return前执行ã€?</p> <p>   ½W¬äºŒåå…«åQŒç¼–½E‹é¢˜: 用最有效率的æ–ÒŽ(gu¨©)³•½Ž—出2乘以8½{‰æ–¼å‡? <br />  有C背景的程序员特别喜欢问这¿Ué—®é¢˜ã€?<br />  ½W¬äºŒåä¹(ji¨¦)åQŒä¸¤ä¸ªå¯¹è±¡å€¼ç›¸å?x.equals(y) == true)åQŒä½†å´å¯æœ‰ä¸åŒçš„hash codeåQŒè¿™å¥è¯å¯¹ä¸å¯? <br />  不对åQŒæœ‰ç›¸åŒçš„hash codeã€?<br />  ½W¬ä¸‰åï¼Œå½“一个对象被当作参数传递到一个方法后åQŒæ­¤æ–ÒŽ(gu¨©)³•可改变这个对象的属性,òq¶å¯˜q”回变化后的¾l“æžœåQŒé‚£ä¹ˆè¿™é‡Œåˆ°åº•是å€ég¼ é€’还是引用传é€? <br />  是å€ég¼ é€’。Java ¾~–程语言只由å€ég¼ é€’参数。当一个对象实例作ä¸ÞZ¸€ä¸ªå‚数被传递到æ–ÒŽ(gu¨©)³•中时åQŒå‚数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变åQŒä½†å¯¹è±¡çš„引用是永远不会改变的ã€?<br />  ½W¬ä¸‰åä¸€åQŒswtich是否能作用在byte上,是否能作用在long上,是否能作用在Stringä¸? <br />  switchåQˆexpr1åQ‰ä¸­åQŒexpr1是一个整数表辑ּã€‚因此传递给 switch å’?case 语句的参数应该是 intã€?shortã€?char 或è€?byte。long,string 都不能作用于swtichã€?<br />  ½W¬ä¸‰åäºŒåQŒç¼–½E‹é¢˜: 写一个Singleton出来ã€?<br />  Singleton模式主要作用是保证在Java应用½E‹åºä¸­ï¼Œä¸€ä¸ªç±»Class只有一个实例存在ã€?/p> <p> </p> <img src ="http://www.aygfsteel.com/yangcai/aggbug/104540.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/yangcai/" target="_blank">杨彩</a> 2007-03-18 09:30 <a href="http://www.aygfsteel.com/yangcai/archive/2007/03/18/104540.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA代码¾~–写çš?0条徏è®?/title><link>http://www.aygfsteel.com/yangcai/archive/2007/01/29/96605.html</link><dc:creator>杨彩</dc:creator><author>杨彩</author><pubDate>Mon, 29 Jan 2007 12:21:00 GMT</pubDate><guid>http://www.aygfsteel.com/yangcai/archive/2007/01/29/96605.html</guid><wfw:comment>http://www.aygfsteel.com/yangcai/comments/96605.html</wfw:comment><comments>http://www.aygfsteel.com/yangcai/archive/2007/01/29/96605.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.aygfsteel.com/yangcai/comments/commentRss/96605.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/yangcai/services/trackbacks/96605.html</trackback:ping><description><![CDATA[ <p>列ä‹Däº†å¤§é‡æœ‰ç”¨çš„å»ø™®®åQŒå¸®åŠ©å¤§å®¶è¿›è¡Œä½Ž¾U§ç¨‹åºè®¾è®¡ï¼Œòq¶æä¾›äº†ä»£ç ¾~–写的一般性指å¯û|¼š </p> <p>  (1) ¾cÕdé¦–字母应该大写。字ŒDüc€æ–¹æ³•以及对象(句柄åQ‰çš„首字母应ž®å†™ã€‚对于所有标识符åQŒå…¶ä¸­åŒ…å«çš„æ‰€æœ‰å•è¯éƒ½åº”ç´§é åœ¨ä¸€èµøP¼Œè€Œä¸”大写中间单词的首字母。例如: </p> <p>  ThisIsAClassName </p> <p>  thisIsMethodOrFieldName </p> <p>  若在定义中出çŽîCº†å¸¸æ•°åˆå§‹åŒ–å­—½W¦ï¼Œåˆ™å¤§å†™static final基本¾cÕdž‹æ ‡è¯†½W¦ä¸­çš„æ‰€æœ‰å­—母。这样便可标志出它们属于¾~–译期的常数ã€?</p> <p>  Java包(PackageåQ‰å±žäºŽä¸€¿Uç‰¹ŒDŠæƒ…况:它们全都是小写字母,即便中间的单词亦是如此。对于域名扩展名¿UŽÍ¼Œå¦‚comåQŒorgåQŒnet或者edu½{‰ï¼Œå…¨éƒ¨éƒ½åº”ž®å†™åQˆè¿™ä¹Ÿæ˜¯Java 1.1å’ŒJava 1.2的区别之一åQ‰ã€?</p> <p>  (2) ä¸ÞZº†å¸¸è§„用途而创å»ÞZ¸€ä¸ªç±»æ—Óž¼Œè¯·é‡‡å–“经典åŞ式”,òq¶åŒ…含对下述元素的定义: </p> <p>equals() </p> <p>hashCode() </p> <p>toString() </p> <p>clone()åQˆimplement CloneableåQ?</p> <p>implement Serializable </p> <p>  (3) 对于自己创徏的每一个类åQŒéƒ½è€ƒè™‘¾|®å…¥ä¸€ä¸ªmain()åQŒå…¶ä¸­åŒ…含了用于‹¹‹è¯•那个¾cȝš„ä»£ç ã€‚äØ“ä½¿ç”¨ä¸€ä¸ªé¡¹ç›®ä¸­çš„ç±»åQŒæˆ‘们没必要删除‹¹‹è¯•代码。若˜q›è¡Œäº†ä“Q何åŞ式的改动åQŒå¯æ–¹ä¾¿åœ°è¿”回测试。这些代码也可作为如何ä‹É用类的一个示例ä‹É用ã€?</p> <p>  (4) 应将æ–ÒŽ(gu¨©)³•设计成简要的、功能性单元,用它描述和实çŽîC¸€ä¸ªä¸˜qžç®‹çš„类接口部分。理æƒÏxƒ…况下åQŒæ–¹æ³•应½Ž€æ˜Žæ‰¼è¦ã€‚若长度很大åQŒå¯è€ƒè™‘通过某种方式ž®†å…¶åˆ†å‰²æˆè¾ƒçŸ­çš„几个æ–ÒŽ(gu¨©)³•。这样做也便于类内代码的重复使用åQˆæœ‰äº›æ—¶å€™ï¼Œæ–ÒŽ(gu¨©)³•必须非常大,但它们仍应只做同æ ïL(f¨¥ng)š„一件事情)ã€?</p> <p>  (5) 设计一个类æ—Óž¼Œè¯¯‚®¾íw«å¤„åœîCؓ客户½E‹åºå‘˜è€ƒè™‘一下(¾cȝš„使用æ–ÒŽ(gu¨©)³•应该是非常明¼‹®çš„åQ‰ã€‚然后,再设íw«å¤„åœîCØ“½Ž¡ç†ä»£ç çš„äh考虑一下(预计有可能进行哪些åŞ式的修改åQŒæƒ³æƒ³ç”¨ä»€ä¹ˆæ–¹æ³•可把它们变得更½Ž€å•)ã€?</p> <p>  (6) 使类ž®½å¯èƒ½çŸ­ž®ç²¾æ‚(zh¨¨n)ï¼Œè€Œä¸”只解决一个特定的问题。下面是对类设计的一些徏议: </p> <p>  ■一个复杂的开兌™¯­å¥ï¼šè€ƒè™‘采用“多形”机åˆ?</p> <p>  ■数量众多的æ–ÒŽ(gu¨©)³•涉及到类型差别极大的操作åQšè€ƒè™‘用几个类来分别实çŽ?</p> <p>  ■许多成员变量在特征上有很大的差别:考虑使用几个¾c?</p> <p>  (7) 让一切东襉Kƒ½ž®½å¯èƒ½åœ°â€œç§æœ‰â€â€”—private。可使库的某一部分“公共化”(一个方法、类或者一个字ŒD늭‰½{‰ï¼‰åQŒå°±æ°¸è¿œä¸èƒ½æŠŠå®ƒæ‹¿å‡ºã€‚è‹¥å¼ø™¡Œæ‹¿å‡ºåQŒå°±å¯èƒ½ç ´åå…¶ä»–人现有的代码åQŒä‹É他们不得不重新编写和设计。若只公布自己必™åÕd…¬å¸ƒçš„åQŒå°±å¯æ”¾å¿ƒå¤§èƒ†åœ°æ”¹å˜å…¶ä»–ä»ÖM½•东西。在多线½E‹çŽ¯å¢ƒä¸­åQŒéš¿Uæ˜¯ç‰¹åˆ«é‡è¦çš„一个因素——只有private字段才能在非同步使用的情况下受到保护ã€?</p> <p>  (8) 谨惕“巨大对象综合症”。对一些习惯于™åºåº¾~–程思维、且初涉OOP领域的新手,往往喜欢先写一个顺序执行的½E‹åºåQŒå†æŠŠå®ƒåµŒå…¥ä¸€ä¸ªæˆ–两个巨大的对象里。根据编½E‹åŽŸç†ï¼Œå¯¹è±¡è¡¨è¾¾çš„åº”è¯¥æ˜¯åº”ç”¨½E‹åºçš„æ¦‚念,而非应用½E‹åºæœ¬èínã€?</p> <p>  (9) 若不得已˜q›è¡Œä¸€äº›ä¸å¤ªé›…è§‚çš„¾~–程åQŒè‡³ž®‘应该把那些代码¾|®äºŽä¸€ä¸ªç±»çš„内部ã€?</p> <p>  (10) ä»ÖM½•时候只要发现类与类之间¾l“合得非常紧密,ž®±éœ€è¦è€ƒè™‘是否采用内部¾c»ï¼Œä»Žè€Œæ”¹å–„编码及¾l´æŠ¤å·¥ä½œåQˆå‚见第14ç«?4.1.2ž®èŠ‚çš„â€œç”¨å†…éƒ¨¾cÀL”¹˜q›ä»£ç â€ï¼‰ã€?</p> <p>  (11) ž®½å¯èƒ½ç»†è‡´åœ°åŠ ä¸Šæ³¨é‡ŠåQŒåƈ用javadoc注释文档语法生成自己的程序文档ã€?</p> <p>  (12) 避免使用“魔术数字”,˜q™äº›æ•°å­—很难与代码很好地配合。如以后需要修改它åQŒæ— ç–‘ä¼šæˆäØ“ä¸€åœºå™©æ¢¦ï¼Œå› äØ“æ ÒŽ(gu¨©)œ¬ä¸çŸ¥é“â€?00”到底是指“数¾l„大ž®â€è¿˜æ˜¯â€œå…¶ä»–全然不同的东西”。所以,我们应创å»ÞZ¸€ä¸ªå¸¸æ•ŽÍ¼Œòq¶äؓ其ä‹É用具有说服力的描˜q°æ€§å¿UŽÍ¼Œòq¶åœ¨æ•´ä¸ª½E‹åºä¸­éƒ½é‡‡ç”¨å¸¸æ•°æ ‡è¯†½W¦ã€‚这样可使程序更易理解以及更易维护ã€?</p> <p>  (13) 涉及构徏器和异常的时候,通常希望重新丢弃在构建器中捕èŽïL(f¨¥ng)š„ä»ÖM½•异常——如果它造成了那个对象的创徏å¤ÞpÓ|ã€‚è¿™æ ·ä¸€æ¥ï¼Œè°ƒç”¨è€…å°±ä¸ä¼šä»¥äØ“é‚£ä¸ªå¯¹è±¡å·²æ­£¼‹®åœ°åˆ›å¾åQŒä»Žè€Œç›²ç›®åœ°¾l§ç®‹ã€?</p> <p>  (14) 当客æˆïL(f¨¥ng)¨‹åºå‘˜ç”¨å®Œå¯¹è±¡ä»¥åŽåQŒè‹¥ä½ çš„¾c»è¦æ±‚进行ä“Q何清除工作,可考虑ž®†æ¸…除代码置于一个良好定义的æ–ÒŽ(gu¨©)³•里,采用¾cÖM¼¼äºŽcleanup()˜q™æ ·çš„名字,明确表明自己的用途。除此以外,可在¾cÕd†…攄¡½®ä¸€ä¸ªbooleanåQˆå¸ƒ?y¨­u)®”(d¨¡ng))标记åQŒæŒ‡å‡ºå¯¹è±¡æ˜¯å¦å·²è¢«æ¸…除。在¾cȝš„finalize()æ–ÒŽ(gu¨©)³•里,è¯ïL(f¨¥ng)¡®å®šå¯¹è±¡å·²è¢«æ¸…除,òq¶å·²ä¸¢å¼ƒäº†ä»ŽRuntimeException¾l§æ‰¿çš„一个类åQˆå¦‚果还没有的话åQ‰ï¼Œä»Žè€ŒæŒ‡å‡ÞZ¸€ä¸ªç¼–½E‹é”™è¯¯ã€‚在采取象这æ ïL(f¨¥ng)š„æ–ÒŽ(gu¨©)¡ˆä¹‹å‰åQŒè¯·¼‹®å®šfinalize()能够在自å·Þqš„¾pȝ»Ÿä¸­å·¥ä½œï¼ˆå¯èƒ½éœ€è¦è°ƒç”¨System.runFinalizersOnExit(true)åQŒä»Žè€Œç¡®ä¿è¿™ä¸€è¡ŒäØ“åQ‰ã€?</p> <p>  (15) 在一个特定的作用域内åQŒè‹¥ä¸€ä¸ªå¯¹è±¡å¿…™åÀL¸…除(非由垃圾攉™›†æœºåˆ¶å¤„理åQ‰ï¼Œè¯·é‡‡ç”¨ä¸‹˜q°æ–¹æ³•:初始化对象;若成功,则立卌™¿›å…¥ä¸€ä¸ªå«æœ‰finally从句的try块,开始清除工作ã€?</p> <p>  (16) 若在初始化过½E‹ä¸­éœ€è¦è¦†ç›–(取消åQ‰finalize()åQŒè¯·è®îC½è°ƒç”¨super.finalize()åQˆè‹¥Object属于我们的直接超¾c»ï¼Œåˆ™æ— æ­¤å¿…要)。在对finalize()˜q›è¡Œè¦†ç›–的过½E‹ä¸­åQŒå¯¹super.finalize()的调用应属于最后一个行动,而不应是½W¬ä¸€ä¸ªè¡ŒåŠ¨ï¼Œ˜q™æ ·å¯ç¡®ä¿åœ¨éœ€è¦åŸº¼‹€¾cȝ»„件的时候它们依然有效ã€?</p> <p>  (17) 创徏大小固定的对象集合时åQŒè¯·ž®†å®ƒä»¬ä¼ è¾“至一个数¾l„(若准备从一个方法里˜q”回˜q™ä¸ªé›†åˆåQŒæ›´åº”如此操作)。这样一来,我们ž®±å¯äº«å—到数¾l„在¾~–译期进行类型检查的好处。此外,ä¸ÞZ‹Éç”¨å®ƒä»¬ï¼Œæ•°ç»„çš„æŽ¥æ”¶è€…ä¹Ÿè®¸åÆˆä¸éœ€è¦å°†å¯¹è±¡â€œé€ åž‹â€åˆ°æ•°ç»„é‡Œã€?</p> <p>  (18) ž®½é‡ä½¿ç”¨interfacesåQŒä¸è¦ä‹É用abstract¾c…R€‚è‹¥å·²çŸ¥æŸæ ·ä¸œè¥¿å‡†å¤‡æˆäØ“ä¸€ä¸ªåŸº¼‹€¾c»ï¼Œé‚£ä¹ˆ½W¬ä¸€ä¸ªé€‰æ‹©åº”是ž®†å…¶å˜æˆä¸€ä¸ªinterfaceåQˆæŽ¥å£ï¼‰ã€‚只有在不得不ä‹É用方法定义或者成员变量的时候,才需要将其变成一个abstractåQˆæŠ½è±¡ï¼‰¾c…R€‚接口主要描˜qîCº†å®¢æˆ·å¸Œæœ›åšä»€ä¹ˆäº‹æƒ…,而一个类则致力于åQˆæˆ–允许åQ‰å…·ä½“的实施¾l†èŠ‚ã€?</p> <p>  (19) 在构建器内部åQŒåª˜q›è¡Œé‚£äº›ž®†å¯¹è±¡è®¾ä¸ºæ­£¼‹®çŠ¶æ€æ‰€éœ€çš„å·¥ä½œã€‚å°½å¯èƒ½åœ°é¿å…è°ƒç”¨å…¶ä»–æ–¹æ³•ï¼Œå› äØ“é‚£äº›æ–ÒŽ(gu¨©)³•可能被其他äh覆盖或取消,从而在构徏˜q‡ç¨‹ä¸­äñ”生不可预知的¾l“æžœåQˆå‚见第7章的详细说明åQ‰ã€?</p> <p>  (20) 对象不应只是½Ž€å•地容纳一些数据;它们的行ä¸ÞZ¹Ÿåº”得到良好的定义ã€?</p> <p>  (21) 在现成类的基¼‹€ä¸Šåˆ›å»ºæ–°¾cÀL—¶åQŒè¯·é¦–先选择“新建”或“创作”。只有自å·Þqš„设计要求必须¾l§æ‰¿æ—Óž¼Œæ‰åº”考虑˜q™æ–¹é¢çš„问题。若在本来允许新建的场合使用了ç‘ô承,则整个设计会变得没有必要地复杂ã€?</p> <p>  (22) 用ç‘ô承及æ–ÒŽ(gu¨©)³•覆盖来表½Cø™¡Œä¸ºé—´çš„差异,而用字段表示状态间的区别。一个非常极端的例子是通过对不同类的ç‘ô承来表示颜色åQŒè¿™æ˜¯ç»å¯¹åº”该避免的åQšåº”直接使用一个“颜艜y€å­—ŒDüc€?</p> <p>  (23) 为避免编½E‹æ—¶é‡åˆ°éºÈƒ¦åQŒè¯·ä¿è¯åœ¨è‡ªå·Þq±»è·¯å¾„指到的ä“Q何地方,每个名字都仅对应一个类。否则,¾~–译器可能先扑ֈ°åŒåçš„另一个类åQŒåƈ报告出错消息。若怀疑自å·Þq¢°åˆîCº†¾c»èµ\径问题,误‚¯•试在¾c»èµ\径的每一个è“v点,搜烦一下同名的.classæ–‡äšgã€?</p> <p>  (24) 在Java 1.1 AWT中ä‹É用事件“适配器”时åQŒç‰¹åˆ«å®¹æ˜“碰åˆîC¸€ä¸ªé™·é˜±ã€‚若覆盖了某个适配器方法,同时拼写æ–ÒŽ(gu¨©)³•没有特别讲究åQŒæœ€åŽçš„¾l“æžœž®±æ˜¯æ–°æ·»åŠ ä¸€ä¸ªæ–¹æ³•ï¼Œè€Œä¸æ˜¯è¦†ç›–çŽ°æˆæ–¹æ³•ã€‚ç„¶è€Œï¼Œç”׃ºŽ˜q™æ ·åšæ˜¯å®Œå…¨åˆæ³•的,所以不会从¾~–译器或˜qè¡ŒæœŸç³»¾lŸèŽ·å¾—ä“Q何出错提½Cºâ€”â€”åªä¸è¿‡ä»£ç çš„å·¥ä½œå°±å˜å¾—ä¸æ­£å¸æ€º†ã€?</p> <p>  (25) 用合理的设计æ–ÒŽ(gu¨©)¡ˆæ¶ˆé™¤â€œä¼ªåŠŸèƒ½â€ã€‚ä¹Ÿž®±æ˜¯è¯ß_¼Œå‡è‹¥åªéœ€è¦åˆ›å»ºç±»çš„一个对象,ž®×ƒ¸è¦æå‰é™åˆ¶è‡ªå·×ƒ‹É用应用程序,òq¶åŠ ä¸Šä¸€æ¡â€œåªç”Ÿæˆå…¶ä¸­ä¸€ä¸ªâ€æ³¨é‡Šã€‚è¯·è€ƒè™‘ž®†å…¶ž®è£…成一个“独生子”的形式。若在主½E‹åºé‡Œæœ‰å¤§é‡æ•£äؕ的代码,用于创徏自己的对象,误‚€ƒè™‘采纳一¿Uåˆ›é€ æ€§çš„æ–ÒŽ(gu¨©)¡ˆåQŒå°†äº›ä»£ç å°è£…è“v来ã€?</p> <p>  (26) 警惕“分析瘫痪”。请è®îC½åQŒæ— è®ºå¦‚何都要提前了解整个项目的状况åQŒå†åŽ»è€ƒå¯Ÿå…¶ä¸­çš„ç»†èŠ‚ã€‚ç”±äºŽæŠŠæ¡äº†å…¨å±€åQŒå¯å¿«é€Ÿè®¤è¯†è‡ªå·±æœªçŸ¥çš„一些因素,防止在考察¾l†èŠ‚çš„æ—¶å€™é™·å…¥â€œæ­»é€»è¾‘â€ä¸­ã€?</p> <p>  (27) 警惕“过早优化”。首先让它运行è“v来,再考虑变得更快——但只有在自己必™å»è¿™æ ·åšã€è€Œä¸”¾lè¯å®žåœ¨æŸéƒ¨åˆ†ä»£ç ä¸­çš„确存在一个性能瓉™¢ˆçš„æ—¶å€™ï¼Œæ‰åº”˜q›è¡Œä¼˜åŒ–。除非用专门的工具分析瓶颈,否则很有可能是在‹¹ªè´¹è‡ªå·±çš„æ—¶é—´ã€‚性能提升的隐含代ä»äh˜¯è‡ªå·±çš„代码变得难于理解,而且难于¾l´æŠ¤ã€?</p> <p>  (28) 误‚®°ä½ï¼Œé˜…读代码的时间比写代码的旉™—´å¤šå¾—多。思èµ\清晰的设计可获得易于理解的程序,但注释、细致的解释以及一些示例往往å…ähœ‰ä¸å¯ä¼°é‡çš„ä­h(hu¨¢n)倹{€‚无论对你自己,˜q˜æ˜¯å¯¹åŽæ¥çš„人,它们都是相当重要的。如å¯ÒŽ(gu¨©)­¤ä»æœ‰æ€€ç–‘,那么误‚¯•惌™‡ªå·Þp¯•图从联机Java文档里找出有用信息时¼„°åˆ°çš„æŒ«æŠ˜ï¼Œ˜q™æ ·æˆ–许能将你说服ã€?</p> <p>  (29) å¦‚è®¤ä¸ø™‡ªå·±å·²˜q›è¡Œäº†è‰¯å¥½çš„分析、设计或者实施,那么è¯ïL(f¨¥ng)¨å¾®æ›´æ¢ä¸€ä¸‹æ€ç»´è§’度。试试邀请一些外来ähå£«â€”â€”åÆˆä¸ä¸€å®šæ˜¯ä¸“å®¶åQŒä½†å¯ä»¥æ˜¯æ¥è‡ªæœ¬å…¬å¸å…¶ä»–部门的äh。请他们用完全新鲜的眼光考察你的工作åQŒçœ‹çœ‹æ˜¯å¦èƒ½æ‰‘Ö‡ºä½ ä¸€åº¦ç†Ÿè§†æ— ç¹çš„问题。采取这¿Uæ–¹å¼ï¼Œå¾€å¾€èƒ½åœ¨æœ€é€‚合修改的阶ŒD‰|‰¾å‡ÞZ¸€äº›å…³é”®æ€§çš„问题åQŒé¿å…äñ”品发行后再解决问题而造成的金钱及¾_‘ÖŠ›æ–šw¢çš„æŸå¤±ã€?</p> <p>  (30) 良好的设计能带来最大的回报。简­a€ä¹‹ï¼Œå¯¹äºŽä¸€ä¸ªç‰¹å®šçš„问题åQŒé€šå¸¸ä¼šèŠ±è¾ƒé•¿çš„æ—¶é—´æ‰èƒ½æ‰¾åˆîC¸€¿Uæœ€æ°å½“的解å†Ïx–¹æ¡ˆã€‚但一旦找åˆîCº†æ­£ç¡®çš„æ–¹æ³•,以后的工作就è½ÀL¾å¤šäº†åQŒå†ä¹Ÿä¸ç”¨ç»åŽ†æ•°ž®æ—¶ã€æ•°å¤©æˆ–者数月的痛苦挣扎。我们的努力工作会带来最大的回报åQˆç”šè‡Ïx— å¯ä¼°é‡ï¼‰ã€‚而且ç”׃ºŽè‡ªå·±å€¾æ³¨äº†å¤§é‡å¿ƒè¡€åQŒæœ€¾lˆèŽ·å¾—ä¸€ä¸ªå‡ºè‰²çš„è®¾è®¡æ–ÒŽ(gu¨©)¡ˆåQŒæˆåŠŸçš„å¿«æ„Ÿä¹Ÿæ˜¯ä»¤äh心动的。坚持抵制草草完工的诱惑——那样做往往得不偿失ã€?</p> <p>  (31) 可在Web上找到大量的¾~–程参考资源,甚至包括大量新闻¾l„、讨论组、邮寄列表等。     Â?<br /></p> <img src ="http://www.aygfsteel.com/yangcai/aggbug/96605.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/yangcai/" target="_blank">杨彩</a> 2007-01-29 20:21 <a href="http://www.aygfsteel.com/yangcai/archive/2007/01/29/96605.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>æ–‡äšg的所有操ä½?/title><link>http://www.aygfsteel.com/yangcai/archive/2007/01/28/96407.html</link><dc:creator>杨彩</dc:creator><author>杨彩</author><pubDate>Sun, 28 Jan 2007 14:22:00 GMT</pubDate><guid>http://www.aygfsteel.com/yangcai/archive/2007/01/28/96407.html</guid><wfw:comment>http://www.aygfsteel.com/yangcai/comments/96407.html</wfw:comment><comments>http://www.aygfsteel.com/yangcai/archive/2007/01/28/96407.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.aygfsteel.com/yangcai/comments/commentRss/96407.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/yangcai/services/trackbacks/96407.html</trackback:ping><description><![CDATA[/** <br /> * //FileOperate.java<br /> * æ–‡äšg的各¿Uæ“ä½?br /> * 杨彩 <a >http://blog.sina.com.cn/m/yangcai</a><br /> * æ–‡äšg操作 1.0<br /> */ <br /> <br />//package common; <br /> <br />import java.io.*; <br /> <br />public class FileOperate<br />{<br /> static boolean exitnow=false;<br /> static String aa,bb; <br />  public FileOperate() { <br />  } <br /> <br />  /** <br />   * 新徏目录 <br />   */ <br />  public void newFolder(String folderPath) { <br />    try <br />    { <br />      String filePath = folderPath; <br />      filePath = filePath.toString(); <br />      File myFilePath = new File(filePath); <br />      if(!myFilePath.exists()) <br />      { <br />        myFilePath.mkdir();<br />      }<br />      System.out.println("新徏目录操作 成功执行"); <br />    } <br />    catch(Exception e)<br />    { <br />      System.out.println("新徏目录操作出错"); <br />      e.printStackTrace(); <br />    } <br />  } <br /> <br />  /** <br />   * 新徏文äšg <br />   */ <br />  public void newFile(String filePathAndName, String fileContent)<br />  { <br /> <br />    try<br />    { <br />      String filePath = filePathAndName; <br />      filePath = filePath.toString(); <br />      File myFilePath = new File(filePath); <br />      if (!myFilePath.exists())<br />      { <br />        myFilePath.createNewFile(); <br />      } <br />      FileWriter resultFile = new FileWriter(myFilePath); <br />      PrintWriter myFile = new PrintWriter(resultFile); <br />      String strContent = fileContent; <br />      myFile.println(strContent); <br />      resultFile.close(); <br />      System.out.println("新徏文äšg操作 成功执行"); <br />    } <br />    catch (Exception e) { <br />      System.out.println("新徏目录操作出错"); <br />      e.printStackTrace(); <br /> <br />    } <br /> <br />  } <br /> <br />  /** <br />   * 删除文äšg <br />   */ <br />  public void delFile(String filePathAndName) { <br />    try { <br />      String filePath = filePathAndName; <br />      filePath = filePath.toString(); <br />      File myDelFile = new File(filePath); <br />      myDelFile.delete(); <br />      System.out.println("删除文äšg操作 成功执行"); <br />    } <br />    catch (Exception e) { <br />      System.out.println("删除文äšg操作出错"); <br />      e.printStackTrace(); <br /> <br />    } <br /> <br />  } <br /> <br />  /** <br />   * 删除文äšgå¤?<br />   */ <br />  public void delFolder(String folderPath)<br />  { <br />    try<br />    { <br />      delAllFile(folderPath); //删除完里面所有内å®?<br />      String filePath = folderPath; <br />      filePath = filePath.toString(); <br />      File myFilePath = new File(filePath); <br />      myFilePath.delete(); //删除½Iºæ–‡ä»¶å¤¹ <br />      System.out.println("删除文äšgå¤ÒŽ(gu¨©)“ä½?成功执行"); <br />    } <br />    catch (Exception e)<br />    { <br />      System.out.println("删除文äšgå¤ÒŽ(gu¨©)“ä½œå‡ºé”?); <br />      e.printStackTrace(); <br /> <br />    } <br /> <br />  } <br /> <br />  /** <br />   * 删除文äšg多w‡Œé¢çš„æ‰€æœ‰æ–‡ä»?<br />   * @param path String æ–‡äšg夹èµ\å¾?å¦?c:/fqf <br />   */ <br />  public void delAllFile(String path)<br />  { <br />    File file = new File(path); <br />    if(!file.exists())<br />    { <br />      return; <br />    } <br />    if(!file.isDirectory())<br />    { <br />      return; <br />    } <br />    String[] tempList = file.list(); <br />    File temp = null; <br />    for (int i = 0; i < tempList.length; i++)<br />    { <br />      if(path.endsWith(File.separator))<br />      { <br />        temp = new File(path + tempList[i]); <br />      } <br />      else<br />      { <br />        temp = new File(path + File.separator + tempList[i]); <br />      } <br />      if (temp.isFile())<br />      { <br />        temp.delete(); <br />      } <br />      if (temp.isDirectory())<br />      { <br />        delAllFile(path+"/"+ tempList[i]);//先删除文件夹里面的文ä»?<br />        delFolder(path+"/"+ tempList[i]);//再删除空文äšgå¤?<br />      } <br />    }<br />          System.out.println("删除文äšg操作 成功执行");  <br />  } <br /> <br />  /** <br />   * 复制单个文äšg <br />   * @param oldPath String 原文件èµ\å¾?如:c:/fqf.txt <br />   * @param newPath String 复制后èµ\å¾?如:f:/fqf.txt <br />   */ <br />  public void copyFile(String oldPath, String newPath) { <br />    try { <br />      int bytesum = 0; <br />      int byteread = 0; <br />      File oldfile = new File(oldPath); <br />      if (oldfile.exists())<br />      { //æ–‡äšg存在æ—?<br />        InputStream inStream = new FileInputStream(oldPath); //è¯Õd…¥åŽŸæ–‡ä»?<br />        FileOutputStream fs = new FileOutputStream(newPath); <br />        byte[] buffer = new byte[1444]; <br />        int length; <br />        while ( (byteread = inStream.read(buffer)) != -1) { <br />          bytesum += byteread; //字节æ•?æ–‡äšg大小 <br />          System.out.println(bytesum); <br />          fs.write(buffer, 0, byteread); <br />        } <br />        inStream.close(); <br />      }<br />            System.out.println("删除文äšgå¤ÒŽ(gu¨©)“ä½?成功执行");  <br />    } <br />    catch (Exception e) { <br />      System.out.println("复制单个文äšg操作出错"); <br />      e.printStackTrace(); <br /> <br />    } <br /> <br />  } <br /> <br />  /** <br />   * 复制整个文äšg夹内å®?<br />   * @param oldPath String 原文件èµ\å¾?如:c:/fqf <br />   * @param newPath String 复制后èµ\å¾?如:f:/fqf/ff <br />   */ <br />  public void copyFolder(String oldPath, String newPath) { <br /> <br />    try<br />    { <br />      (new File(newPath)).mkdirs(); //如果文äšg夹不存在 则徏立新文äšgå¤?<br />      File a=new File(oldPath); <br />      String[] file=a.list(); <br />      File temp=null; <br />      for (int i = 0; i < file.length; i++)<br />      { <br />        if(oldPath.endsWith(File.separator))<br />        { <br />          temp=new File(oldPath+file[i]); <br />        } <br />        else{ <br />          temp=new File(oldPath+File.separator+file[i]); <br />        } <br /> <br />        if(temp.isFile())<br />        { <br />          FileInputStream input = new FileInputStream(temp); <br />          FileOutputStream output = new FileOutputStream(newPath + "/" + <br />              (temp.getName()).toString()); <br />          byte[] b = new byte[1024 * 5]; <br />          int len; <br />          while ( (len = input.read(b)) != -1)<br />          { <br />            output.write(b, 0, len); <br />          } <br />          output.flush(); <br />          output.close(); <br />          input.close(); <br />        } <br />        if(temp.isDirectory())<br />        {//如果是子文äšgå¤?<br />          copyFolder(oldPath+"/"+file[i],newPath+"/"+file[i]); <br />        } <br />      }<br />            System.out.println("复制文äšgå¤ÒŽ(gu¨©)“ä½?成功执行");  <br />    } <br />    catch (Exception e) { <br />      System.out.println("复制整个文äšg夹内å®ÒŽ(gu¨©)“ä½œå‡ºé”?); <br />      e.printStackTrace(); <br /> <br />    } <br /> <br />  } <br /> <br />  /** <br />   * ¿UÕdŠ¨æ–‡äšg到指定目å½?<br />   * @param oldPath String 如:c:/fqf.txt <br />   * @param newPath String 如:d:/fqf.txt <br />   */ <br />  public void moveFile(String oldPath, String newPath) { <br />    copyFile(oldPath, newPath); <br />    delFile(oldPath); <br /> <br />  } <br /> <br />  /** <br />   * ¿UÕdŠ¨æ–‡äšg到指定目å½?<br />   * @param oldPath String 如:c:/fqf.txt <br />   * @param newPath String 如:d:/fqf.txt <br />   */ <br />  public void moveFolder(String oldPath, String newPath) { <br />    copyFolder(oldPath, newPath); <br />    delFolder(oldPath); <br /> <br />  }<br />  <br />  public static void main(String args[])<br />  {<br />   System.out.println("使用此功能请按[1]  功能一åQšæ–°å»ºç›®å½?);<br />   System.out.println("使用此功能请按[2]  功能二:新徏文äšg");<br />   System.out.println("使用此功能请按[3]  功能三:删除文äšg");<br />   System.out.println("使用此功能请按[4]  功能四:删除文äšgå¤?);<br />   System.out.println("使用此功能请按[5]  功能五:删除文äšg多w‡Œé¢çš„æ‰€æœ‰æ–‡ä»?);<br />   System.out.println("使用此功能请按[6]  功能六:复制文äšg");<br />   System.out.println("使用此功能请按[7]  功能七:复制文äšg夹的所有内å®?);<br />   System.out.println("使用此功能请按[8]  功能八:¿UÕdŠ¨æ–‡äšg到指定目å½?);<br />   System.out.println("使用此功能请按[9]  功能ä¹?ji¨¦):¿UÕdŠ¨æ–‡äšg夹到指定目录");<br />   System.out.println("使用此功能请按[10] 退出程åº?);<br />   <br /> while(!exitnow)<br /> {<br />    FileOperate fo=new FileOperate();<br />    try<br />    {<br />    BufferedReader Bin=new BufferedReader(new InputStreamReader(System.in));<br />    String a=Bin.readLine();<br />    int b=Integer.parseInt(a);<br />    <br />    switch(b) <br />    {<br />     case 1:System.out.println("你选择了功能一  误‚¾“入目录名");  <br />        aa=Bin.readLine();<br />        fo.newFolder(aa);<br />        break;<br />     case 2:System.out.println("你选择了功能二  误‚¾“入文件名");  <br />        aa=Bin.readLine();<br />        System.out.println("误‚¾“入在"+aa+"中的内容");<br />        bb=Bin.readLine();<br />        fo.newFile(aa,bb);<br />        break;<br />     case 3:System.out.println("你选择了功能三  误‚¾“入文件名");  <br />        aa=Bin.readLine();<br />        fo.delFile(aa);<br />        break;<br />     case 4:System.out.println("你选择了功能四  误‚¾“入文件名");  <br />        aa=Bin.readLine();<br />        fo.delFolder(aa);<br />        break;<br />     case 5:System.out.println("你选择了功能五  误‚¾“入文件名");  <br />        aa=Bin.readLine();<br />        fo.delAllFile(aa);<br />        break;   <br />     case 6:System.out.println("你选择了功能六  误‚¾“入文件名");  <br />        aa=Bin.readLine();<br />        System.out.println("误‚¾“入目标文件名"); <br />        bb=Bin.readLine();<br />        fo.copyFile(aa,bb);<br />        break;<br />     case 7:System.out.println("你选择了功能七  误‚¾“入源文äšgå?);  <br />        aa=Bin.readLine();<br />        System.out.println("误‚¾“入目标文件名"); <br />        bb=Bin.readLine();<br />        fo.copyFolder(aa,bb);<br />        break;        <br />     case 8:System.out.println("你选择了功能八  误‚¾“入源文äšgå?);  <br />        aa=Bin.readLine();<br />        System.out.println("误‚¾“入目标文件名"); <br />        bb=Bin.readLine();<br />        fo.moveFile(aa,bb);<br />        break;<br />       case 9:System.out.println("你选择了功能九(ji¨¦)  误‚¾“入源文äšgå?);  <br />        aa=Bin.readLine();<br />        System.out.println("误‚¾“入目标文件名"); <br />        bb=Bin.readLine();<br />        fo.moveFolder(aa,bb);<br />        break;        <br />     case 10:exitnow=true;<br />         System.out.println("½E‹åº¾l“束åQŒè¯·é€€å‡?);<br />        break;<br />     default:System.out.println("输入错误.误‚¾“å…?-10之间的数");               <br />     }<br />    <br />    <br />    System.out.println("请重新选择功能");<br />    <br />    <br />    }<br />    catch(Exception e)<br />    {<br />    System.out.println("输入错误字符或程序出é”?);<br />    }<br />    <br /> }   <br /> } <br />}<br /><br /><br /><img height="431" alt="FileOperate.JPG" src="http://www.aygfsteel.com/images/blogjava_net/yangcai/FileOperate.JPG" width="668" border="0" /><br /><br /><br /><br /><br /><br /><a href="/Files/yangcai/FileOperate_java.rar">http://www.aygfsteel.com/Files/yangcai/FileOperate_java.rar</a><img src ="http://www.aygfsteel.com/yangcai/aggbug/96407.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/yangcai/" target="_blank">杨彩</a> 2007-01-28 22:22 <a href="http://www.aygfsteel.com/yangcai/archive/2007/01/28/96407.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[Java期末‹¹‹è¯•] 动态显½Cºç³»¾lŸæ—¶é—?/title><link>http://www.aygfsteel.com/yangcai/archive/2007/01/16/94221.html</link><dc:creator>杨彩</dc:creator><author>杨彩</author><pubDate>Tue, 16 Jan 2007 07:43:00 GMT</pubDate><guid>http://www.aygfsteel.com/yangcai/archive/2007/01/16/94221.html</guid><wfw:comment>http://www.aygfsteel.com/yangcai/comments/94221.html</wfw:comment><comments>http://www.aygfsteel.com/yangcai/archive/2007/01/16/94221.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.aygfsteel.com/yangcai/comments/commentRss/94221.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/yangcai/services/trackbacks/94221.html</trackback:ping><description><![CDATA[//show.java<br />import java.awt.*;<br />import java.awt.event.*;<br />import javax.swing.*;<br />import javax.swing.event.*;<br />import java.text.*;<br />import java.util.*;<br />public class show extends JFrame implements Runnable<br />{<br /> static JFrame jf;<br /> JLabel jl;<br /> public show()<br /> {<br />  jf=new JFrame("æ—‰™—´æ˜„¡¤º");<br />  jl=new JLabel();<br />  jf.getContentPane().add(jl);<br />  jf.setSize(200,100);  <br /> }<br /> <br /> public void run()<br /> {<br />  while(true)<br />  {<br />   SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");<br />   jl.setText(sdf.format(new Date()));<br />   try<br />   {<br />    Thread.sleep(1000); <br />   }<br />   catch(Exception e)<br />   {<br />    jl.setText("出错错误åQŒè¯·é‡å¯½E‹åº");<br />   }<br />  }  <br /> } <br /> public static void main(String arg[])<br /> {<br />  show t=new show();<br />  Thread thread1=new Thread(t);<br />  thread1.start();  <br />  jf.setVisible(true);  <br /> } <br />}<br /><br /><img height="101" alt="未命å?JPG" src="http://www.aygfsteel.com/images/blogjava_net/yangcai/未命å?JPG" width="204" border="0" /><br /><img height="101" alt="未命å?JPG" src="http://www.aygfsteel.com/images/blogjava_net/yangcai/未命å?JPG" width="204" border="0" /><img src ="http://www.aygfsteel.com/yangcai/aggbug/94221.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/yangcai/" target="_blank">杨彩</a> 2007-01-16 15:43 <a href="http://www.aygfsteel.com/yangcai/archive/2007/01/16/94221.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>孝感学院JAVA成ç‡W½Ž¡ç†¾pȝ»Ÿhttp://www.aygfsteel.com/yangcai/archive/2007/01/13/93586.html杨彩杨彩Sat, 13 Jan 2007 04:25:00 GMThttp://www.aygfsteel.com/yangcai/archive/2007/01/13/93586.htmlhttp://www.aygfsteel.com/yangcai/comments/93586.htmlhttp://www.aygfsteel.com/yangcai/archive/2007/01/13/93586.html#Feedback10http://www.aygfsteel.com/yangcai/comments/commentRss/93586.htmlhttp://www.aygfsteel.com/yangcai/services/trackbacks/93586.html/*  
 *   MyAccess.java
 *  杨彩 http://blog.sina.com.cn/m/yangcai
 *  最后修改于2007.1.15
 *
 */

import java.util.*;
import java.sql.*;
import java.io.*;
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.*;

public class MyAccess extends JFrame implements ActionListener,ListSelectionListener
{
 private static Connection conn;
 private static Statement comm;
 private static ResultSet rs;
 private  static int total=0,k=10,row=0,i=0;
 JLabel jl,jl2;
 JTable jt;
 JTextField jid,jname,jscore,se;
 static JButton go,add,drop,del,jbse,flush;
 JFrame jf;
 JScrollPane s;
 Vector vect=new Vector();
 String[] data = {"学号=","学号>","学号<", "姓名=", "分数=","分数>=","分数<"};
  JComboBox dataList = new JComboBox(data);
 String[] columnNames = {"学号","姓名","分数"};
 AbstractTableModel tm = new AbstractTableModel()
  {
          public int getColumnCount(){ return 3;}
          public int getRowCount(){ return k;}
          public Object getValueAt(int row, int col){ return ((Vector)vect.get(row)).get(col); }
          public String getColumnName(int column){    return columnNames[column];   }
      };
 
 public MyAccess()
 {
  jf=new JFrame("考感学院04¾U§JAVA成ç‡W½Ž¡ç†¾pȝ»Ÿ");
  jf.setSize(490,570);
  jf.locate(200,200);
  jf.setResizable(false);
  jf.getContentPane().setLayout(new FlowLayout()); 
  jl=new JLabel("考感学院04¾U§JAVA成ç‡W");
  jid=new JTextField(6);
  jname=new JTextField(5);
  jscore=new JTextField(3);
  se=new JTextField(9);
  go=new JButton("分数(�>�");
  go.addActionListener(this);
  add=new JButton("æ·ÕdŠ ");
  add.addActionListener(this);
  drop=new JButton("修改");
  drop.addActionListener(this);
  del=new JButton("删除");
  del.addActionListener(this);
  jbse=new JButton("搜烦");
  jbse.addActionListener(this);
  flush=new JButton("åˆäh–°");
  flush.addActionListener(this);
  jl2=new JLabel("");
  jl2.setForeground(Color.red);
  jf.getContentPane().add(jl);
  jt=new JTable(tm);
  jt.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
  this.jt.getSelectionModel().addListSelectionListener(this);

  
  
  s = new JScrollPane(jt);  
  jf.getContentPane().add(s);
  jf.getContentPane().add(new JLabel("学号:"));
  jf.getContentPane().add(jid);
  jf.getContentPane().add(new JLabel("姓名:"));
  jf.getContentPane().add(jname);
  jf.getContentPane().add(new JLabel("分数:"));
  jf.getContentPane().add(jscore);
  jf.getContentPane().add(add);
  jf.getContentPane().add(drop);
  jf.getContentPane().add(del);
  jf.getContentPane().add(new JLabel("搜烦学生:"));
  jf.getContentPane().add(dataList);
  jf.getContentPane().add(se);
  jf.getContentPane().add(jbse);
  jf.getContentPane().add(flush);
  jf.getContentPane().add(go);
  jf.getContentPane().add(jl2);
  
 }
public void exce(String exce)
{
 try
 { this.jt.getSelectionModel().removeListSelectionListener(this);
  rs = execQuery(exce);
  vect.removeAllElements();
  tm.fireTableDataChanged();
  total=0;
  while(rs.next())
  { 
   Vector rec_vector=new Vector();
   rec_vector.addElement(rs.getString(1));
   rec_vector.addElement(rs.getString(2));
   rec_vector.addElement(rs.getString(3));
   vect.addElement(rec_vector);
      total++;     
  }
  k=total;
  this.closeDB();
  System.out.println("vect是面�+total+"记录执行操作");
  System.out.println("成功执行:"+exce);
  this.jt.getSelectionModel().addListSelectionListener(this);  
    
 }
 catch(Exception ee)
 {
  jl2.setText("无法执行,请填入正¼‹®çš„æ•°æ®");
  System.out.println("执行å¤ÞpÓ|,可能查询为空");
  k=0;
  
 }
}

public void excesql(String sql)
{
 try
 {
 conBuild();
 Statement stm=conn.createStatement();
 stm.executeUpdate(sql);
 jf.repaint();
 jl2.setText("操作已执�);
 System.out.println("成功执行:"+sql);
 this.closeDB();
 }
 catch(Exception ee)
 {
  jl2.setText("无法执行,请填入正¼‹®çš„æ•°æ®");
  System.out.println(sql+"无法执行");
 }
} 


public static void regDriver()//register JDBC 桥接 driver
{
      try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();//关键�
      System.out.println("驱动注册成功");
      }
       catch(Exception e)
     {
     System.out.println("无法创徏驱动½E‹åºå®žä½“!");
    }

}
   //建立数据库连æŽ?br />public static void conBuild()//建立JDBC˜qžæŽ¥
  {
   try{
     MyAccess.regDriver();
     conn=DriverManager.getConnection("jdbc:odbc:myDSN","","");//关键�
     conn.setAutoCommit(true);
     System.out.println("成功˜qžæŽ¥æ•°æ®åº?);
     }
     catch(Exception e)
     {
      System.out.println(e.getMessage()) ;
      System.out.println("无法˜qžæŽ¥æ•°æ®åº“Connection!åQŒè¿è¡Œä¹‹å‰è¯·å…ˆè®¾¾|®æ•°æ®æº MyDSN");
     }
}

  public static ResultSet execQuery(String stmt1)//执行查询语句
    {
     try{
     conBuild();
      comm=conn.createStatement();
      rs=comm.executeQuery(stmt1);
      return rs;
     }
     catch(Exception e)
      {
       System.out.println("无法创徏Statement!");return null;
      }
}   


public static void closeDB()
{
        try{
          comm.close();
          conn.close();
          System.out.println("关闭记录集,断开数据�);
          }
          catch(Exception e)
         {
          System.out.println(e.getMessage());
         }
 }

public void actionPerformed(ActionEvent ee)// 实现ActionListener中的唯一æ–ÒŽ(gu¨©)³•
{
 if(ee.getSource()==go)
 {
  try
  {
   
   if(i==0)
   {
    exce("SELECT * FROM 成ç‡W order by 分数");
    i=1; 
    go.setText("分数(�>�");
   }

   else
   {
    exce("SELECT * FROM 成ç‡W order by 分数 desc");
    i=0;
    go.setText("分数(�>�"); 
   }
   
   jl2.setText("已按分数排序");
      
  }
  catch(Exception go)
  {
   System.out.println("出现错误");
   jl2.setText("提示:出现错误");
  }
  

  
 }
 if(ee.getSource()==add)
 {
  this.excesql("insert into 成ç‡W values('"+jid.getText()+"','"+jname.getText()+"','"+jscore.getText()+"')");
  exce("SELECT * FROM 成ç‡W order by 学号");
  jid.setText("");
  jname.setText("");
  jscore.setText("");
  jf.repaint();
    
  System.out.println("执行æ·ÕdŠ æ“ä½œ");
  
   
 }

 if(ee.getSource()==drop)
 {
  this.excesql("update 成ç‡W set 姓名='"+jname.getText()+"' ,分数="+jscore.getText()+" where 学号='"+jid.getText()+"'" );
  exce("SELECT * FROM 成ç‡W order by 学号"); 
 
 }
 if(ee.getSource()==del)
 {
  this.excesql("delete from 成ç‡W where 学号='"+jid.getText()+"'");
  exce("SELECT * FROM 成ç‡W order by 学号");
  jl2.setText("提示:成功删除ID�+jid.getText()+"的数�);
  System.out.println("执行删除操作"); 
   
 }
 if(ee.getSource()==jbse)
 {
  if(dataList.getSelectedIndex()>=4)
  {
     String sql="SELECT *  FROM 成ç‡W WHERE "+dataList.getSelectedItem()+se.getText();
   exce(sql);
  }
  else
  {
   String sql="SELECT *  FROM 成ç‡W WHERE "+dataList.getSelectedItem()+"'"+se.getText()+"'";
   exce(sql);
  }
  jl2.setText("搜烦¾l“æžœ:å…?+k+"条数æ?);
  System.out.println(k+"执行搜烦操作");
  
  jf.repaint();
 }
 
 if(ee.getSource()==flush)
 {
  exce("SELECT * FROM 成ç‡W order by 学号");
  jid.setText("");
  jname.setText("");
  jscore.setText("");
  se.setText("");
  jf.repaint();
  jl2.setText("提示:åˆäh–°æˆåŠŸ");
  
 }
 
}

public void valueChanged(ListSelectionEvent el)  //每当选择值发生更æ”ÒŽ(gu¨©)—¶è°ƒç”¨ã€?
{
  row=0;
  row=jt.getSelectedRow();
  if(row<0) row=0;  
  Object row_id=jt.getValueAt(row,0);
  Object row_name=jt.getValueAt(row,1);
  Object row_score=jt.getValueAt(row,2);
  
  jid.setText(row_id.toString());
  jname.setText(row_name.toString());
  jscore.setText(row_score.toString());
  System.out.println("选择已改�+k+"  "+total);
  
  
}


public static void main(String s[])
      {
     MyAccess ma=new MyAccess();
  ma.exce("SELECT * FROM 成ç‡W order by 学号");
     ma.jf.setVisible(true);
    
      }

}

 



 


url: http://www.aygfsteel.com/Files/yangcai/孝感学院JAVA成ç‡W½Ž¡ç†¾pȝ»Ÿ.rar


杨彩 2007-01-13 12:25 发表评论
]]>
Tcp通信实现两机互相通信http://www.aygfsteel.com/yangcai/archive/2006/12/08/86226.html杨彩杨彩Thu, 07 Dec 2006 23:28:00 GMThttp://www.aygfsteel.com/yangcai/archive/2006/12/08/86226.htmlhttp://www.aygfsteel.com/yangcai/comments/86226.htmlhttp://www.aygfsteel.com/yangcai/archive/2006/12/08/86226.html#Feedback7http://www.aygfsteel.com/yangcai/comments/commentRss/86226.htmlhttp://www.aygfsteel.com/yangcai/services/trackbacks/86226.html//QQ客户�/p>

import java.io.*;
import java.net.*;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;

public class yc extends JFrame
{
 public static JLabel jl1,jl2;
 public static TextArea ta1,ta2;
 public static JButton jb1,jb2;
 public static Container cp1;
  static Socket svr;
 public static PrintWriter out;
 
 
 public static void main(String arg[])
 {
  JFrame jf=new JFrame("与小新聊�-VIP             客户�);
  jf.setSize(500,450);
  jf.setResizable(false);
  jf.locate(100,100);
//  cp1=getContentPane();
  jl1=new JLabel("˜qžæŽ¥ä¸?...");
  ta1=new TextArea();
  ta2=new TextArea();
  jb1=new JButton("发�);
  jb1.addActionListener(new Listener());
  jb2=new JButton("清空");
  jb2.addActionListener(new Listener());
  jf.getContentPane().setLayout(new FlowLayout());
  jf.getContentPane().add(jl1);
   jf.getContentPane().add(ta1);
   jf.getContentPane().add(ta2);
   jf.getContentPane().add(jb1);
   jf.getContentPane().add(jb2);
   
  jf.setVisible(true);
  try
  {
   target2 outmsg2=new target2();
   Thread outthread2=new Thread(outmsg2);
   outthread2.start();
   QQ();

   
   
  }
  catch(Exception e)
  {
   
  }
  
  
 }
 
static void QQ()throws Exception
{
  System.out.println("正在˜qžæŽ¥æœåŠ¡å™?è¯ïL(f¨¥ng)¨å€?..");
  //与指定地址的服务器相连æŽ?br />  svr=new Socket("127.0.0.1",3300);//要连接远½E‹ä¸»æœø™¯·å¡«IP
 //svr=new Socket(InetAddress.getLocalHost(),3300)
  jl1.setText("ä¸?+svr.getInetAddress()+"˜qžæŽ¥æˆåŠŸ!误‚¾“凸™¦ä¼ é€çš„信息...");

 }
 
 
}

 


 class Listener implements ActionListener{
  public void actionPerformed(ActionEvent e)
  {
   
    if(e.getSource()==yc.jb2)
     {
        yc.ta1.setText("");
     }
    
    else
    {
     try
    {
     
     yc.out=new PrintWriter(yc.svr.getOutputStream());
     yc.out.println(yc.ta2.getText());
     yc.out.flush();
     yc.ta1.append("[自己]�\n"+yc.ta2.getText()+"\n");
     yc.ta2.setText("");
 
   
    }
     catch(Exception ee)
     {
      
     }
     
    }
   
    

    
  }
 }
 
 
 
 
class target2 implements Runnable
{
 public void run()
 {
   
    while(true)
    {
     
   try
   {
    
    BufferedReader in=new BufferedReader(new InputStreamReader(yc.svr.getInputStream()));
      String str=in.readLine();
       str="[服务�+yc.svr.getInetAddress()+"]�\n"+str;
       yc.ta1.append(str+"\n");
   }
   
   catch(Exception ee)
   {
    ;
   } 
     
     
     
     }
 }
}
 

 

 

———————————————————————————————�/p>

 

 

//QQ服务�/p>

import java.io.*;
import java.net.*;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;

public class ycserver extends JFrame
{
 public static JLabel jl1;
 public static TextArea ta1,ta2;
 public static JButton jb1,jb2;
 public static Container cp1;
 public static ServerSocket svr; 
 public static Socket clt;
 public static Thread thread;
 public static int i=0;
 


  
 public static void main(String arg[])
 {
  JFrame jf=new JFrame("与杨彩聊�-VIP            服务�);
  jf.setSize(500,450);
  jf.locate(200,200);
  jf.setResizable(false);
  ta1=new TextArea();
  ta2=new TextArea();
  jb1=new JButton("发�);
  jb2=new JButton("清空");
  jl1=new JLabel("½{‰å¾…˜qžæŽ¥");
  jb1.addActionListener(new jb1Listener());
  jb2.addActionListener(new jb1Listener());
  jf.getContentPane().setLayout(new FlowLayout());
  jf.getContentPane().add(jl1);
   jf.getContentPane().add(ta1);
   jf.getContentPane().add(ta2);
   jf.getContentPane().add(jb1);
   jf.getContentPane().add(jb2);
   
  jf.setVisible(true);
  try
  {
   target outmsg=new target();
   Thread outthread=new Thread(outmsg);
   outthread.start();
   
   wait wait1=new wait();
   Thread waitthread=new Thread(wait1);
   waitthread.start();
   
   QQ();

   

  }
  catch(Exception e)
  {
   
  }
  
  
 }
 
 
static void QQ()throws Exception
{/*
 //建立服务器套节字
  svr=new ServerSocket(3300);
  System.out.println("½{‰å¾…˜qžæŽ¥....");
 //½{‰å¾…客户机接å…?br />   clt=svr.accept();
    i++;
    ta1.setText(i+"");
 //获得客户IP地址
  System.out.println("˜qžæŽ¥è¯äh±‚来自:"+clt.getInetAddress());
  jl1.setText("˜qžæŽ¥è¯äh±‚来自:"+clt.getInetAddress());
  //建立I/O‹¹?br />  */

   }
  
 }
 
 


 class jb1Listener implements ActionListener
 {
  public void actionPerformed(ActionEvent e)
  {
   if(e.getSource()==ycserver.jb2)
   {
    ycserver.ta1.setText("");
   }
   
   else
   {
     try
    {
          
    PrintWriter out=new PrintWriter(ycserver.clt.getOutputStream());
    out.println(ycserver.ta2.getText());
    out.flush();
     ycserver.ta1.append("[自己]�\n"+ycserver.ta2.getText()+"\n");
     ycserver.ta2.setText("");
 
   
    }
     catch(Exception ee)
     {
      
     }
   }
  
  }
 }

 

class target implements Runnable
{
 public void run()
 {
   
    while(true)
    {
     
   try
   {    
    BufferedReader in=new BufferedReader(new InputStreamReader(ycserver.clt.getInputStream()));
      String str=in.readLine();
       str="[客户端在"+ycserver.clt.getInetAddress()+"]�\n"+str;
       ycserver.ta1.append(str+"\n");
   }
   
   catch(Exception ee)
   {
    ;
   } 
     
     
     
     }
 }
}

 

class wait implements Runnable
{
 public void run()
 {
   
    while(true)
    {
     
   try
   {    
    //建立服务器套节字
  ycserver.svr=new ServerSocket(3300);
  System.out.println("½{‰å¾…˜qžæŽ¥....");
 //½{‰å¾…客户机接å…?br />   ycserver.clt=ycserver.svr.accept();
    ycserver.i+=2;
    ycserver.ta1.setText(ycserver.i+"");
 //获得客户IP地址
  System.out.println("˜qžæŽ¥è¯äh±‚来自:"+ycserver.clt.getInetAddress());
  ycserver.jl1.setText("˜qžæŽ¥è¯äh±‚来自:"+ycserver.clt.getInetAddress());
  //建立I/O‹¹?br />   }
   
   catch(Exception ee)
   {
    ;
   } 
     
     
     
     }
 }
}

 

 

 

 
 
 
 
 
 
源码下蝲åQ?/div>

]]>Java版中国象‹‚?/title><link>http://www.aygfsteel.com/yangcai/archive/2006/11/15/81131.html</link><dc:creator>杨彩</dc:creator><author>杨彩</author><pubDate>Tue, 14 Nov 2006 16:43:00 GMT</pubDate><guid>http://www.aygfsteel.com/yangcai/archive/2006/11/15/81131.html</guid><wfw:comment>http://www.aygfsteel.com/yangcai/comments/81131.html</wfw:comment><comments>http://www.aygfsteel.com/yangcai/archive/2006/11/15/81131.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.aygfsteel.com/yangcai/comments/commentRss/81131.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/yangcai/services/trackbacks/81131.html</trackback:ping><description><![CDATA[     摘要: /* *中国象棋Java *作è€?yanick *源文ä»?Chess.java *最后修æ”ÒŽ(gu¨©)—¶é—?2006-11-1 *æ·ÕdŠ åŠŸèƒ½:实现了当前棋局的保存Â?Chess.java */ import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.util.*;import java.io.*; //ä¸È±»...  <a href='http://www.aygfsteel.com/yangcai/archive/2006/11/15/81131.html'>阅读全文</a><img src ="http://www.aygfsteel.com/yangcai/aggbug/81131.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/yangcai/" target="_blank">杨彩</a> 2006-11-15 00:43 <a href="http://www.aygfsteel.com/yangcai/archive/2006/11/15/81131.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>比较完整的Java计算å™?/title><link>http://www.aygfsteel.com/yangcai/archive/2006/11/14/81105.html</link><dc:creator>杨彩</dc:creator><author>杨彩</author><pubDate>Tue, 14 Nov 2006 05:35:00 GMT</pubDate><guid>http://www.aygfsteel.com/yangcai/archive/2006/11/14/81105.html</guid><wfw:comment>http://www.aygfsteel.com/yangcai/comments/81105.html</wfw:comment><comments>http://www.aygfsteel.com/yangcai/archive/2006/11/14/81105.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.aygfsteel.com/yangcai/comments/commentRss/81105.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/yangcai/services/trackbacks/81105.html</trackback:ping><description><![CDATA[ <p>import javax.swing.*;<br />import javax.swing.event.*;<br />import java.awt.*;<br />import java.awt.event.*;</p> <p>public class calculator extends JFrame implements ActionListener<br />{//˜q™é‡Œæˆ‘把JFrame写成FrameåQŒè¿™ä¸ªé”™è¯¯æ‰¾äº†å¥½ä¹?br /> JFrame frame;<br /> <br /> private JButton jia=new JButton("+"); <br /> private JButton jian=new JButton("-"); <br /> private JButton cheng=new JButton("*"); <br /> private JButton chu=new JButton("/"); <br /> private JButton qiuyi=new JButton("%"); <br /> private JButton deng=new JButton("="); <br /> private JButton fu=new JButton("+/-");<br /> private JButton dian=new JButton(".");<br /> private JButton kai=new JButton("sqrt");<br /> private JButton diao=new JButton("1/x");<br /> private JButton aa=new JButton("A"); <br /> private JButton bb=new JButton("B"); <br /> private JButton cc=new JButton("C");<br /> private JButton dd=new JButton("D");<br /> private JButton ee=new JButton("E");<br /> private JButton ff=new JButton("F");<br /> <br /> private TextField k1=new TextField(); <br /> private objConversion convert = new objConversion();<br /> <br /> JMenuItem copy,paste,s,t,help,about,me;<br /> JRadioButton sixteen,ten,eight,two;<br /> JButton backspace,ce,c,num0,num1,num2,num3,num4,num5,num6,num7,num8,num9;<br /> Container cp;<br /> <br /> JTextField text;<br /> String copycontent="";<br /> boolean clickable=true,clear=true;<br /> int all=0;<br /> double qian; <br /> String fuhao;<br /> int jin=10,first=1;<br /> <br /> <br /> public calculator() <br /> {<br />  setTitle("计算器-杨彩制作");<br />  setSize(400,300);<br />  setLocation(250,200);<br />  text=new JTextField(25);<br /> // text.setEnabled(false);<br />  text.setText("0.");<br />  text.setHorizontalAlignment(JTextField.RIGHT);//从右到左</p> <p> <br />  JPanel cp1=new JPanel();<br />  JPanel cp2=new JPanel();<br />  JPanel cp3=new JPanel();<br />  </p> <p>  cp=getContentPane();<br />  cp.add(cp1,"North");<br />  cp.add(cp2,"Center");<br />  cp.add(cp3,"South");<br />  <br />  cp1.setLayout(new GridLayout(1,6));<br />  cp2.setLayout(new GridLayout(2,4));<br />  cp3.setLayout(new GridLayout(6,6));<br />  <br />  sixteen=new JRadioButton("十六˜q›åˆ¶");<br />  sixteen.setVisible(false);<br />  ten=new JRadioButton("十进åˆ?,true);<br />  ten.setVisible(false);<br />  eight=new JRadioButton("å…«è¿›åˆ?);<br />  eight.setVisible(false); <br />  two=new JRadioButton("二进åˆ?);<br />  two.setVisible(false);<br />  sixteen.addActionListener(this);<br />  ten.addActionListener(this);<br />  eight.addActionListener(this);<br />  two.addActionListener(this); <br />  ButtonGroup btg=new ButtonGroup();<br />  <br />  btg.add(sixteen); <br />  btg.add(ten); <br />  btg.add(eight); <br />  btg.add(two);<br />  <br />  JTextField t3=new JTextField(25);<br />  cp1.add(text);<br /> // text.setEnabled(false);<br />  text.setEditable(false);<br />  text.setBackground(new Color(255, 255, 255));<br />  <br />  cp2.add(sixteen);<br />  cp2.add(ten);<br />  cp2.add(eight);<br />  cp2.add(two);<br />  <br />  backspace=new JButton("Backspace");<br />  backspace.setForeground(new Color(255,0,0));<br />  backspace.addActionListener(this);<br />  ce=new JButton("CE");<br />  ce.setForeground(new Color(255,0,0));<br />  ce.addActionListener(this);<br />  c=new JButton("C");<br />  c.setForeground(new Color(255,0,0));<br />  c.addActionListener(this);<br />  k1.setVisible(false);<br />  cp2.add(k1);<br />  cp2.add(backspace);<br />  cp2.add(ce);<br />  cp2.add(c);<br />  </p> <p>  num0=new JButton("0"); <br />  num1=new JButton("1"); <br />  num2=new JButton("2"); <br />  num3=new JButton("3"); <br />  num4=new JButton("4"); <br />  num5=new JButton("5"); <br />  num6=new JButton("6"); <br />  num7=new JButton("7"); <br />  num8=new JButton("8"); <br />  num9=new JButton("9"); </p> <p> </p> <p>  cp3.add(num7);<br />  num7.addActionListener(this);<br />  cp3.add(num8);<br />  num8.addActionListener(this);<br />  cp3.add(num9);<br />  num9.addActionListener(this);<br />  cp3.add(chu);<br />  chu.setForeground(new Color(255,0,0));<br />  chu.addActionListener(this);<br />  cp3.add(kai);<br />  kai.addActionListener(this);<br />  cp3.add(num4);<br />  num4.addActionListener(this);<br />  cp3.add(num5);<br />  num5.addActionListener(this);<br />  cp3.add(num6);<br />  num6.addActionListener(this);<br />  cp3.add(cheng);<br />  cheng.setForeground(new Color(255,0,0));<br />  cheng.addActionListener(this);<br />  cp3.add(qiuyi);<br />  qiuyi.addActionListener(this);<br />  cp3.add(num1);<br />  num1.addActionListener(this);<br />  cp3.add(num2);<br />  num2.addActionListener(this);<br />  cp3.add(num3);<br />  num3.addActionListener(this);<br />  cp3.add(jian);<br />  jian.setForeground(new Color(255,0,0));<br />  jian.addActionListener(this);<br />  cp3.add(diao);<br />  diao.addActionListener(this);<br />  cp3.add(num0);<br />  num0.addActionListener(this);<br />  cp3.add(fu);<br />  fu.addActionListener(this);<br />  cp3.add(dian);<br />  dian.addActionListener(this);<br />  cp3.add(jia);<br />  jia.setForeground(new Color(255,0,0));<br />  jia.addActionListener(this);<br />  cp3.add(deng);<br />  deng.setForeground(new Color(255,0,0));<br />  deng.addActionListener(this);<br />  cp3.add(aa);<br />  aa.addActionListener(this);<br />  cp3.add(bb);<br />  bb.addActionListener(this);<br />  cp3.add(cc);<br />  cc.addActionListener(this);<br />  cp3.add(dd);<br />  dd.addActionListener(this);<br />  cp3.add(ee);<br />  ee.addActionListener(this);<br />  cp3.add(ff);<br />  ff.addActionListener(this);<br />  aa.setVisible(false);<br />  bb.setVisible(false);<br />  cc.setVisible(false);<br />  dd.setVisible(false);<br />  ee.setVisible(false);<br />  ff.setVisible(false);</p> <p>     <br />  JMenuBar mainMenu = new JMenuBar();<br />  setJMenuBar(mainMenu); <br />  JMenu editMenu = new JMenu("¾~–辑"); <br />  JMenu viewMenu = new JMenu("查看"); <br />  JMenu helpMenu = new JMenu("帮助");<br />  mainMenu.add(editMenu);<br />  mainMenu.add(viewMenu);<br />  mainMenu.add(helpMenu);<br />  <br />  copy = new JMenuItem(" 复制"); <br />  paste = new JMenuItem(" ¾_˜è„“(chu¨¤ng)"); <br />  KeyStroke copyks=KeyStroke.getKeyStroke(KeyEvent.VK_C,Event.CTRL_MASK);<br />    copy.setAccelerator(copyks);//讄¡½®é€€å‡ø™œå•选项加上快捷é”?br />    KeyStroke pasteks=KeyStroke.getKeyStroke(KeyEvent.VK_V,Event.CTRL_MASK);<br />    paste.setAccelerator(pasteks);//讄¡½®é€€å‡ø™œå•选项加上快捷é”?br />  editMenu.add(copy);<br />  editMenu.add(paste);<br />  copy.addActionListener(this);<br />  paste.addActionListener(this); <br />  <br />  t = new JMenuItem("●标准型"); <br />  s = new JMenuItem("   ¿U‘å­¦åž?); <br />  viewMenu.add(t);<br />  viewMenu.add(s);<br />  t.addActionListener(this);<br />  s.addActionListener(this);<br />    <br />  help = new JMenuItem(" 帮助主题");<br />  about = new JMenuItem(" 关于计算å™?);<br />  me = new JMenuItem(" 作者主™å?);<br />  helpMenu.add(help);<br />  helpMenu.add(about);  <br />  helpMenu.add(me);<br />  help.addActionListener(this);<br />  about.addActionListener(this);<br />  me.addActionListener(this);<br />  <br />  </p> <p>  <br />  <br />  <br />  <br />  <br /> addWindowListener(new WindowDestroyer());//¾l“束½H—口<br /> }<br /> <br /> </p> <p> <br /> <br /> public void actionPerformed(ActionEvent e)<br /> <br /> {//响应动作代码<br />  <br />  if(first==1)<br />  text.setText("");<br />  first=0;//½W¬ä¸€‹Æ¡æŠŠæ–‡æœ¬æ¡?.清空<br /> <br />   Object temp = e.getSource();</p> <p>   if(temp==copy) <br />   { <br />   copycontent = text.getText(); <br />  } <br />  if(temp==paste) <br />   { <br />   text.setText(text.getText()+copycontent);<br />  <br />  } <br />  if(temp==t)<br />  {//标准<br />   <br />   sixteen.setVisible(false);<br />   ten.setVisible(false);<br />   eight.setVisible(false);<br />   two.setVisible(false);<br />   t.setText("●标准型");<br />   s.setText("    ¿U‘å­¦åž?);<br />   aa.setVisible(false);<br />   bb.setVisible(false);<br />   cc.setVisible(false);<br />   dd.setVisible(false);<br />   ee.setVisible(false);<br />   ff.setVisible(false);<br />  }<br />  if(temp==s)<br />  {//¿U‘å­¦<br />   <br />   sixteen.setVisible(true);<br />   ten.setVisible(true);<br />   eight.setVisible(true);<br />   two.setVisible(true);<br />   t.setText("   标准åž?);<br />   s.setText("●科学型");<br />   aa.setVisible(true);<br />   bb.setVisible(true);<br />   cc.setVisible(true);<br />   dd.setVisible(true);<br />   ee.setVisible(true);<br />   ff.setVisible(true);<br />   aa.setEnabled(false);<br />   bb.setEnabled(false);<br />   cc.setEnabled(false);<br />   dd.setEnabled(false);<br />   ee.setEnabled(false);<br />   ff.setEnabled(false);<br />   <br />   <br />  }<br />  if(temp==help)<br />  { //打开¾pȝ»Ÿå¸®åŠ©æ–‡äšg 要查资料<br />   try<br />   {<br />     String filePath = "C:/WINDOWS/Help/calc.chm";<br />      Runtime.getRuntime().exec("cmd.exe /c "+filePath);</p> <p>   <br />   }<br />   catch(Exception eeee)<br />   {<br />    System.out.println("打开¾pȝ»Ÿçš„计½Ž—器出错");    <br />   }<br />  }<br />  if(temp==about)<br />  {<br />   JOptionPane.showMessageDialog(frame,"      Java计算器\n      杨彩 制作\n\n <a 关于计算å™?,JOptionPane.INFORMATION_MESSAGE); ;<br />  }<br />  if(temp==me)<br />  {<br />   try<br />   {<br />    Process p = Runtime.getRuntime().exec("explorer <a );<br />   }<br />   catch(Exception eeee)<br />   {<br />    System.out.println("打开指定¾|‘页出错");    <br />   } <br />  }<br />  <br />  <br />  try<br />  {<br />  if(temp==sixteen)<br />  {<br />   String hex=text.getText();<br />   int inthex=Integer.parseInt(hex,jin);//先把数变ä¸?0˜q›åˆ¶Â Â <br />   text.setText(convert.decHex(inthex)) ;<br />   jin=16;<br />   aa.setEnabled(true);<br />   bb.setEnabled(true);<br />   cc.setEnabled(true);<br />   dd.setEnabled(true);<br />   ee.setEnabled(true);<br />   ff.setEnabled(true);<br />   num2.setEnabled(true);<br />   num3.setEnabled(true);<br />   num4.setEnabled(true);<br />   num5.setEnabled(true);<br />   num6.setEnabled(true);<br />   num7.setEnabled(true);<br />   num8.setEnabled(true);<br />   num9.setEnabled(true);<br /> <br />  }<br />  if(temp==eight)<br />  {<br />   String oct =text.getText();<br />   int intoct=Integer.parseInt(oct,jin);  <br />   text.setText(convert.decOct(intoct)) ;<br />   jin=8;<br />   <br />   aa.setEnabled(false);<br />   bb.setEnabled(false);<br />   cc.setEnabled(false);<br />   dd.setEnabled(false);<br />   ee.setEnabled(false);<br />   ff.setEnabled(false);<br />   num2.setEnabled(true);<br />   num3.setEnabled(true);<br />   num4.setEnabled(true);<br />   num5.setEnabled(true);<br />   num6.setEnabled(true);<br />   num7.setEnabled(true);<br />   num8.setEnabled(false);<br />   num9.setEnabled(false);<br />  }<br />  if(temp==two)<br />  {<br />   String bin=text.getText();<br />   int intbin=Integer.parseInt(bin,jin);<br />   text.setText(convert.decBin(intbin));<br />   jin=2;<br />   <br />   aa.setEnabled(false);<br />   bb.setEnabled(false);<br />   cc.setEnabled(false);<br />   dd.setEnabled(false);<br />   ee.setEnabled(false);<br />   ff.setEnabled(false);<br />   num2.setEnabled(false);<br />   num3.setEnabled(false);<br />   num4.setEnabled(false);<br />   num5.setEnabled(false);<br />   num6.setEnabled(false);<br />   num7.setEnabled(false);<br />   num8.setEnabled(false);<br />   num9.setEnabled(false);<br />  }<br />  if(temp==ten)<br />  {<br />   String dec=text.getText();<br />   int intdec=Integer.parseInt(dec,jin);<br />  // text.setText(convert.decDec(intdec));  //本句会把123变成321<br />   text.setText(intdec+"");<br />   jin=10;<br />   aa.setEnabled(false);<br />   bb.setEnabled(false);<br />   cc.setEnabled(false);<br />   dd.setEnabled(false);<br />   ee.setEnabled(false);<br />   ff.setEnabled(false);<br />   num2.setEnabled(true);<br />   num3.setEnabled(true);<br />   num4.setEnabled(true);<br />   num5.setEnabled(true);<br />   num6.setEnabled(true);<br />   num7.setEnabled(true);<br />   num8.setEnabled(true);<br />   num9.setEnabled(true);<br />  }<br />  }<br />  catch(Exception ee)<br />  {<br />   System.out.println("转换出错,可能你没有输入ä“Q何字½W?);<br />   text.setText("转换出错");<br />   clear=false;<br />  }<br />  <br />  if(temp==backspace)<br />  {//退æ ?br />  String s = text.getText(); <br />  text.setText(""); <br />  for (int i = 0; i < s.length() - 1; i++)<br />  { <br />  char a = s.charAt(i); <br />  text.setText(text.getText() + a); <br />  }<br />  }<br />  <br />  if (temp==ce) <br />  { <br />   text.setText("0."); <br />   clear=true;<br />   first=1;<br />  } <br />  if (temp==c)<br />  { <br />   text.setText("0.");   ;<br />   clear=true;<br />   first=1;<br />  }<br />  <br />  if(temp==num0)<br />   {  <br />    if(clear==false)//判断是否点击了符号位<br />    text.setText("");<br />    text.setText(text.getText()+"0");<br />   }<br />  <br />  if(temp==num1)<br />   {    <br />    if(clear==false)<br />    text.setText("");<br />    text.setText(text.getText()+"1");<br />    clear=true;//½W¬äºŒ‹Æ¡ä¸åœ¨æ¸…½Iºï¼ˆå‰äºŒå¥ï¼‰<br />   }<br />  <br />  if(temp==num2)<br />   {    <br />    if(clear==false)<br />    text.setText("");<br />    text.setText(text.getText()+"2");<br />    clear=true;<br />   }<br />  <br />  if(temp==num3)<br />   {    <br />    if(clear==false)<br />    text.setText("");<br />    text.setText(text.getText()+"3");<br />    clear=true;<br />   }<br />  <br />  if(temp==num4)<br />   {    <br />    if(clear==false)<br />    text.setText("");<br />    text.setText(text.getText()+"4");<br />    clear=true;<br />   }<br />  <br />  if(temp==num5)<br />   {<br />    if(clear==false)<br />    text.setText("");<br />    text.setText(text.getText()+"5");<br />    clear=true;<br />   }<br />  <br />  if(temp==num6)<br />   {<br />    if(clear==false)<br />    text.setText("");<br />    text.setText(text.getText()+"6");<br />    clear=true;<br />   }<br />  if(temp==num7)<br />   {<br />    if(clear==false)<br />    text.setText("");<br />    text.setText(text.getText()+"7");<br />    clear=true;<br />   }<br />  <br />  if(temp==num8)<br />   {<br />    if(clear==false)<br />    text.setText("");<br />    text.setText(text.getText()+"8");<br />    clear=true;<br />   }<br />  <br />  if(temp==num9)<br />   {<br />    if(clear==false)<br />    text.setText("");<br />    text.setText(text.getText()+"9");<br />    clear=true;<br />   }<br />   if(temp==aa)<br />   {<br />    text.setText(text.getText()+"A");<br />   }<br />  if(temp==bb)<br />   {<br />    text.setText(text.getText()+"B");<br />   }<br />  <br />  if(temp==cc)<br />   {<br />    text.setText(text.getText()+"C");<br />   }<br />  <br />  if(temp==dd)<br />   {<br />    text.setText(text.getText()+"D");<br />   }<br />  <br />  if(temp==ee)<br />   {<br />    text.setText(text.getText()+"E");<br />   } <br />  if(temp==ff)<br />   {<br />    text.setText(text.getText()+"F");<br />   }<br />   if(temp==dian)<br />   {<br />    clickable=true;<br />    for (int i = 0; i < text.getText().length(); i++) <br />   if ('.' == text.getText().charAt(i)) <br />   { <br />   clickable=false; <br />   break; <br />   } //½W¬ä¸€å±‚判断是否里面含有小数点;<br />    <br />    if(clickable==true)//½W¬äºŒå›åˆ¤æ–?br />    text.setText(text.getText()+".");<br />    <br />   }<br />   <br />  try<br />  { <br />   if(temp==jia)<br />   {//加法<br />    qian=Double.parseDouble(text.getText());<br />    fuhao="+";<br />    clear=false;<br />   }<br />   if(temp==jian)<br />   {<br />    qian=Double.parseDouble(text.getText());<br />    fuhao="-";<br />    clear=false;<br />    ;<br />    <br />   }<br />   if(temp==cheng)<br />   {<br />    qian=Double.parseDouble(text.getText());<br />    fuhao="*";<br />    clear=false;<br />        <br />   }<br />   if(temp==chu)<br />   {<br />    qian=Double.parseDouble(text.getText());<br />    fuhao="/";<br />    clear=false;<br />        <br />   }<br />   if(temp==deng)<br />   {<br />    double ss=Double.parseDouble(text.getText());<br />    text.setText("");<br />    if(fuhao=="+")<br />    text.setText(qian+ss+"");<br />    if(fuhao=="-")<br />    text.setText(qian-ss+"");<br />    if(fuhao=="*")<br />    text.setText(qian*ss+"");<br />    if(fuhao=="/")<br />    text.setText(qian/ss+"");<br />    clear=false;//要清½Iºå‰ä¸€‹Æ¡çš„æ•°æ®<br />    ;<br />    <br />   }<br />   <br />   if(temp==kai)<br />   {     <br />  String s = text.getText(); <br />  if (s.charAt(0) == '-')<br />  { <br />   text.setText("负数不能开根号"); <br />  } <br />  else <br />  text.setText(Double.toString(java.lang.Math.sqrt(Double.parseDouble(text.getText())))); <br />  clear=false;<br />  }<br />  <br />  if(temp==diao)<br />  {<br />    <br />   if (text.getText().charAt(0) == '0'&&text.getText().length() == 1)<br />    { <br />    text.setText("除数不能为零"); <br />    } <br />  else <br />  { <br />  boolean isDec = true; <br />   int i, j, k; <br />   String s = Double.toString(1 / Double.parseDouble(text.getText())); <br />   for (i = 0; i < s.length(); i++) <br />   if (s.charAt(i) == '.') <br />   break; <br />   for (j = i + 1; j < s.length(); j++) <br />   if (s.charAt(j) != '0')<br />   { <br />   isDec = false; <br />   break; <br />   } <br />   if (isDec == true)<br />   { <br />   String stemp = ""; <br />   for (k = 0; k < i; k++) <br />    stemp += s.charAt(k); <br />    text.setText(stemp); <br />   } <br />   else <br />   text.setText(s); <br />   } <br /> <br />    clear=false;<br />  }<br />  if(temp==qiuyi)<br />  {<br />   text.setText("0");<br />   clear=false;<br />  }<br />  if (temp == fu) <br />  { //导师åQŒæ­¤æ–ÒŽ(gu¨©)³•参考书中例å­?br />   boolean isNumber = true; <br />   String s = text.getText(); <br />   for (int i = 0; i < s.length(); i++) <br />   if (! (s.charAt(i) >= '0' && s.charAt(i) <= '9' || s.charAt(i) == '.' || <br />   s.charAt(i) == '-'))<br />        { <br />     isNumber = false; <br />     break; <br />     } <br />   if (isNumber == true)<br />    { <br />   //如果当前字符串首字母æœ?-'å?代表现在是个负数,再按下时,则将首符号去æŽ?<br />     if (s.charAt(0) == '-') <br />     { <br />     text.setText(""); <br />     for (int i = 1; i < s.length(); i++)<br />         { <br />       char a = s.charAt(i); <br />       text.setText(text.getText() + a); <br />           } <br />     } <br />      //如果当前字符串第一个字½W¦ä¸æ˜¯ç¬¦åøP¼Œåˆ™æ·»åŠ ä¸€ä¸ªç¬¦å·åœ¨é¦–å­—æ¯å¤„ <br />   else <br />   text.setText('-' + s); <br />   } <br />  } <br />  <br /> }<br /> catch(Exception eee)<br /> {<br />  System.out.println("˜qç®—æ—?首先输入数字或字½W?);<br />  text.setText("˜qç®—出错");<br />  clear=false;<br /> }<br />  <br />  <br />   <br /> }</p> <p> </p> <p> class WindowDestroyer extends WindowAdapter<br /> {//退出窗口动ä½?br />  public void windowClosing(WindowEvent e)<br />  {<br />  System.exit(0);<br />  }<br /> }<br /> <br />class objConversion<br />{//导师,本进制类参考了CSMD¾c»è{换例å­?br /> <br /> public void objConversion ()<br /> {<br /> }<br /> <br /> public String decDec (int decNum)<br /> {//10<br />  <br />  String strDecNum = Integer.toString(decNum);<br />  <br />  for (int i = strDecNum.length(); i < 3; i++)<br />  {<br />   strDecNum = "0" + strDecNum;<br />  }<br />  <br /> // return strDecNum;<br />  return invert (strDecNum, 5);<br />  <br /> }<br /> <br /> public String decHex (int decNum)<br /> {//10 to 16<br />  <br />  String strHexNum = "";<br />  int currentNum = 0;<br />  <br />  while (decNum != 0)<br />  {<br />   <br />   if (decNum > 15)<br />   {<br />    <br />    currentNum = decNum % 16;<br />    decNum /= 16;<br />    <br />   }<br />   else<br />   {<br />    <br />    currentNum = decNum;<br />    decNum = 0;<br />    <br />   }<br />   <br />   switch (currentNum)<br />   {<br />    <br />    case 15: strHexNum += "F";<br />       break;<br />    case 14: strHexNum += "E";<br />       break;<br />    case 13: strHexNum += "D";<br />       break;<br />    case 12: strHexNum += "C";<br />       break;<br />    case 11: strHexNum += "B";<br />       break;<br />    case 10: strHexNum += "A";<br />       break;<br />    default: strHexNum += Integer.toString(currentNum);<br />       break;<br />       <br />   }<br />   <br />  }<br />   <br />  return invert (strHexNum, 2);<br />   <br /> }<br />  <br /> public String decOct (int decNum)<br /> {//10 to 8<br />  <br />  String strOctNum = "";<br />  <br />  while (decNum != 0)<br />  {<br />   <br />   if (decNum > 7)<br />   {<br />    <br />    strOctNum += Integer.toString(decNum % 8);<br />    decNum /= 8;<br />    <br />   }<br />   else<br />   {<br />    <br />    strOctNum += Integer.toString(decNum);<br />    decNum = 0;<br />    <br />   }<br />   <br />  }<br />  <br />  return invert (strOctNum, 3);<br />  <br /> }<br /> <br /> public String decBin (int decNum)<br /> {//10 to 2<br />  <br />  String strBinNum = "";<br />  <br />  while (decNum != 0)<br />  {<br />   <br />   if (decNum > 1)<br />   {<br />    <br />    strBinNum += Integer.toString(decNum % 2);<br />    decNum /= 2;<br />    <br />   }<br />   else<br />   {<br />    <br />    strBinNum += Integer.toString(decNum);<br />    decNum = 0;<br />    <br />   }<br />   <br />  }<br />  <br />  return invert (strBinNum, 8);<br />  <br /> }<br /> <br /> private String invert (String strNum, int minLength) //转换长度<br /> {  <br />  <br />  String answer = "";<br />  int length = strNum.length();<br />  <br />  if (length < minLength)<br />  {<br />   <br />   for (int padding = (minLength - length); padding > 0; padding--)<br />   {<br />    answer += "0";<br />   }<br />   <br />  }<br />  <br />  for (int i = length; i > 0; i--)<br />  {<br />   answer += strNum.charAt (i - 1);<br />  }<br />  <br />  return answer;<br />  <br /> }<br /> <br />}<br /> <br /> <br /> public static void main(String arg[])//产生½H—口<br /> {<br />  calculator win = new calculator(); <br />  win.setVisible(true);<br /> }</p> <p> <br />}</p> <img src ="http://www.aygfsteel.com/yangcai/aggbug/81105.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/yangcai/" target="_blank">杨彩</a> 2006-11-14 13:35 <a href="http://www.aygfsteel.com/yangcai/archive/2006/11/14/81105.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> Ö÷Õ¾Ö©Öë³ØÄ£°å£º <a href="http://" target="_blank">äüÄÏÏØ</a>| <a href="http://" target="_blank">´ÈϪÊÐ</a>| <a href="http://" target="_blank">Íû¿üÏØ</a>| <a href="http://" target="_blank">ÆÖ³ÇÏØ</a>| <a href="http://" target="_blank">ÅìºþÏØ</a>| <a href="http://" target="_blank">DZ½­ÊÐ</a>| <a href="http://" target="_blank">Ñô¸ßÏØ</a>| <a href="http://" target="_blank">½ðÕ¯ÏØ</a>| <a href="http://" target="_blank">·îÐÂÏØ</a>| <a href="http://" target="_blank">µ¤°ÍÏØ</a>| <a href="http://" target="_blank">Àó²¨ÏØ</a>| <a href="http://" target="_blank">»ÆÆ½ÏØ</a>| <a href="http://" target="_blank">¸£¹±ÏØ</a>| <a href="http://" target="_blank">ÃÉ×ÔÏØ</a>| <a href="http://" target="_blank">É«´ïÏØ</a>| <a href="http://" target="_blank">ÒËÑôÏØ</a>| <a href="http://" target="_blank">ӥ̶ÊÐ</a>| <a href="http://" target="_blank">ÌÒÔ°ÏØ</a>| <a href="http://" target="_blank">¾«ºÓÏØ</a>| <a href="http://" target="_blank">Ǩ°²ÊÐ</a>| <a href="http://" target="_blank">°¢À­¶ûÊÐ</a>| <a href="http://" target="_blank">Ñ®ÒØÏØ</a>| <a href="http://" target="_blank">²ýÀÖÏØ</a>| <a href="http://" target="_blank">ÑÓ³¤ÏØ</a>| <a href="http://" target="_blank">ÀÖ°²ÏØ</a>| <a href="http://" target="_blank">ÑôÔ­ÏØ</a>| <a href="http://" target="_blank">ϲµÂÏØ</a>| <a href="http://" target="_blank">ÐÂç­ÏØ</a>| <a href="http://" target="_blank">ÆÁ±ß</a>| <a href="http://" target="_blank">°ÔÖÝÊÐ</a>| <a href="http://" target="_blank">ËÉÌÒ</a>| <a href="http://" target="_blank">Ñô¶«ÏØ</a>| <a href="http://" target="_blank">ͨºÓÏØ</a>| <a href="http://" target="_blank">Ã×ÁÖÏØ</a>| <a href="http://" target="_blank">´ó¸ÛÇø</a>| <a href="http://" target="_blank">·ð¸ÔÏØ</a>| <a href="http://" target="_blank">ÐÂÖñÏØ</a>| <a href="http://" target="_blank">ÎýÁÖ¹ùÀÕÃË</a>| <a href="http://" target="_blank">ÁºÆ½ÏØ</a>| <a href="http://" target="_blank">°à¸êÏØ</a>| <a href="http://" target="_blank">½­´ïÏØ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>