??xml version="1.0" encoding="utf-8" standalone="yes"?>中国china体内裑精亚洲日本,一本久到久久亚洲综合,亚洲成av人片天堂网老年人http://m.tkk7.com/zhuyuanxiang/category/23748.htmlzh-cnWed, 19 Dec 2018 15:43:56 GMTWed, 19 Dec 2018 15:43:56 GMT60Head First设计模式MW记http://m.tkk7.com/zhuyuanxiang/archive/2018/12/19/433551.htmlp?/dc:creator>p?/author>Wed, 19 Dec 2018 02:22:00 GMThttp://m.tkk7.com/zhuyuanxiang/archive/2018/12/19/433551.htmlhttp://m.tkk7.com/zhuyuanxiang/comments/433551.htmlhttp://m.tkk7.com/zhuyuanxiang/archive/2018/12/19/433551.html#Feedback0http://m.tkk7.com/zhuyuanxiang/comments/commentRss/433551.htmlhttp://m.tkk7.com/zhuyuanxiang/services/trackbacks/433551.html阅读指南Q?/p>

_读一章内容,手工输入一章代码(?Q,与书中描q的思想q行印证Q实在搞不懂放q吧。设计模式绝对不?x)一ơ就看懂的?/p>

q本书对于理解设计模式很有帮助,是例子不太W合中国人的思维模式Q但是坚持下去肯定会(x)搞明白的?/p>

全书_֍Q?/p>

1. Chap12的DucksQ通过一点点重构DucksE序Q将模式一个个加入其中Q帮助对模式的深入理解?/p>

2. Chap12的DJViewQ通过一个完整的MVCE序Q将Observer、Strategy、Composite以及(qing)Adapter模式用架构层面的设计整合hQ不仅可以更好地理解单个模式Q还可以理解MVC模式?/p>

可能对每个模式写出自己的ȝ

  1. StrategyQ策略模式)(j)Q定义一l算法类Q用于运行过E中替换法?
    • 装变化
    • 多用l合Q少用?
    • 多针Ҏ(gu)口编E,针对实现编E?/li>
  2. ObserverQ观察者模式)(j)Q定义一个主题和一l观察者,可以在主题变化时通知订阅?jin)主题的观察者?
    • Strategy装的是函数调用的算法?
    • Observer装的是传递数据的内容?
    • 交互对象之间强内聚、松耦合?/li>
  3. DecoratorQ装饰模式)(j)Q本质不变,外面增加一层层装饰。例如:(x)Stream的包装?
    • 设计的类Q禁止修改,允许扩展?
    • 不采用承的方式来扩展功能?/li>
  4. FactoryQ工厂模式)(j)Q所有的工厂都是用来装对象的创建?
    • Simple FactoryQ简单工厂)(j)Q将业务逻辑与对象创建操作分d?
    • Factory MethodQ工厂方法)(j)Q把对象的创建工作委托给子类的工厂方法?
    • Abstract FactoryQ抽象工厂)(j)Q把对象的创建工作委托给实现?jin)接口的工厂?gu)?
    • 依赖于抽象,而不依赖于具体的cR?/li>
  5. SingletonQ单例模式)(j)Q通过止其他对象对自己实例化Q而改pq?rn)态方法对自己实例化,保一个类只有一个对象?
  6. CommandQ命令模式)(j)Q解耦调用者与执行者之间的关系Q相互之间的联系通过命o(h)对象完成Q调用者只对调用对象的execute()Ҏ(gu)发出h?
  7. 攚w已有系l接口,使异构系l也可透明地相互调用?
    • AdapterQ适配器)(j)Q将一个类的接口{换成客户期望的另一个接口。例Q数据库q接
    • FacadeQ门面模式)(j)Q将一l接口{换成客户期望的单一接口。例Q设备驱动程?
    • 最知识原则:(x)调用其他Ҏ(gu)Ӟ涉及(qing)的对象越越好?
      • 对象调用自己的方?
      • 对象调用作ؓ(f)参数传入的对象的Ҏ(gu)
      • 对象调用自己的方法创建的对象或实例的Ҏ(gu)
        • Q以上三点强调:(x)不要调用其他Ҏ(gu)q回的对象的Ҏ(gu)Q?/li>
      • 对象调用自nlg的方?/li>
  8. TemplateQ模板模式)(j)Q封装算法,在一个方法中定义一个算法的框架Q而将具体的实现委托给子类。框架中调用的方法ؓ(f)钩子Q从而超cL制一切,子类实现钩子{待类调用?
    • 好莱坞原则:(x)别找我,我会(x)L你?/li>
  9. CollectionsQ集合)(j)Q?
    • IteratorQP代器Q:(x)遍历集合而无L露集合的实现
    • CompositeQ组合模式)(j)Q可以将对象的集合和单个对象l合在一赗?
    • cd该只有一个改变的理由?/li>
  10. StateQ状态模式)(j)Q将状态封闭ؓ(f)对象Q将行ؓ(f)装成方法;新的状态生成新对象Q新的行为生成新的方法?
    • 行ؓ(f)不变Q状态改变用State
    • 行ؓ(f)改变Q状态不变用Strategy
  11. ProxyQ代理模式)(j)Q采用创Z理对象的方式控制客户端对具体对象的访问?
    • q程代理理客户端和q程对象之间的交互;
    • 虚拟代理控制实例化开销大的对象Q?
    • 保护代理控制客户端对具体对象的访问?/li>
  12. CompoundQ复合模式)(j)QMVC-ModelQViewQController
    • Model与View之间使用Observer模式。Model是SubjectQView是ObserverQ当Model改变旉知View发生改变。View只从Model中获取数据(例如Q调用Model的getXXX()Ҏ(gu)Q,不修改Model的数据(例如Q不调用Model的SetXXX()Ҏ(gu)Q,不操作Model的行为(例如Q不调用Model的行为方法)(j)?
    • Controller与View之间是Strategy模式。View只对Controller的接口编E,不与具体的Controller实现耦合Q从而可以面对不同的Controller实现不同的行为?
    • View自n使用Composite模式?
    • q可以用Adapter模式Q已经存在的Controller和View与Model适配?/li>

注:(x)

1. 源代码一定要M载,书上的代码内容不够,也可以参考我的代码?/p>

]]>
读过的设计模式的书小l?/title><link>http://m.tkk7.com/zhuyuanxiang/archive/2018/12/18/433550.html</link><dc:creator>p?/dc:creator><author>p?/author><pubDate>Tue, 18 Dec 2018 01:31:00 GMT</pubDate><guid>http://m.tkk7.com/zhuyuanxiang/archive/2018/12/18/433550.html</guid><wfw:comment>http://m.tkk7.com/zhuyuanxiang/comments/433550.html</wfw:comment><comments>http://m.tkk7.com/zhuyuanxiang/archive/2018/12/18/433550.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/zhuyuanxiang/comments/commentRss/433550.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/zhuyuanxiang/services/trackbacks/433550.html</trackback:ping><description><![CDATA[<p>《设计模式:(x)可复用面向对象Y件基?/p> <p>q本书还没看完,但是l对是案头必备,虽然用C++写的代码Qƈ且是四个牛h写的风格Q相关知识背景与E序员(sh)同)(j)Q但是一旦开始理解设计模式以后,再回q头?x)发现这本书的定义和描述最Ҏ(gu)理解和记忆?/p> <p>《Head First设计模式?/p> <p>自学、初学的推荐用书。我也是通过q本书才真正明白设计模式。虽?dng)GoF提出?3个模式,但是Q只要把主要几个搞明白了(jin)Q就入门了(jin)Q其他的模式只有真正实践的时候才?x)需要,否则看了(jin)也就是了(jin)解一下?/p> <p>《Java与模式?/p> <p>十年前,我绝对认为是本好书。因为那个时候可以参考的中国人写的设计模式的书实在太,但是现在我对q本书的评h(hun)只能可以了(jin)。因Z者的举例跟我的项目经验没有重叠,作者对古典文学的运用反而又l我理解设计模式增加?jin)困难,因此q本书不再作为我推荐的书Q只作ؓ(f)看完《Head First设计模式》后的补充阅读,q且不需要太x(chng)书中的代码和那些文学描述Q只看作者关于模式与实际应用的描q就可以?jin)?/p> <p>《设计模式解析?/p> <p>q本书不推荐。除非你有过一些设计模式的理解Qƈ且还有实际项目的设计l验Q否则这本书对初学的帮助不是很大。我的感觉作者应该是用来作ؓ(f)自己上课的教材,因此q本书除非可以跟着作者边学边读,否则自学?x)觉得只讲?jin)些理念上的东西,能够帮助理解模式的项目或者代码是不的?/p> <p>《设计模式初学者指南?/p> <p>W三ơ放弃读q本书,主要是对我不太实用,而且作者的思\也与我不同,读v来不太顺畅。每ơ重M几次才明白作者想表达什么,作者是个好E序员,写的代码也非常漂亮,只是比较x(chng)l节和自我实现过E中的理解,对于l常写代码的JavaE序员可能帮助会(x)更多些,对于只是想了(jin)解概念和思\显得有点啰嗦了(jin)?/p> <p> </p> <p>补充Q理解设计模式最好的Ҏ(gu)是目与代码,q且在不断地重构目和代码中加深理解。对于别的什么例子,看v来似乎对理解有帮助,但是听多?jin)只会(x)更加糊涂?/p><img src ="http://m.tkk7.com/zhuyuanxiang/aggbug/433550.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/zhuyuanxiang/" target="_blank">p?/a> 2018-12-18 09:31 <a href="http://m.tkk7.com/zhuyuanxiang/archive/2018/12/18/433550.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>l束《Java~程思想》(Thinking in JavaQ自学的d感(2017.10.15Q?/title><link>http://m.tkk7.com/zhuyuanxiang/archive/2017/10/15/432858.html</link><dc:creator>p?/dc:creator><author>p?/author><pubDate>Sun, 15 Oct 2017 04:11:00 GMT</pubDate><guid>http://m.tkk7.com/zhuyuanxiang/archive/2017/10/15/432858.html</guid><wfw:comment>http://m.tkk7.com/zhuyuanxiang/comments/432858.html</wfw:comment><comments>http://m.tkk7.com/zhuyuanxiang/archive/2017/10/15/432858.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/zhuyuanxiang/comments/commentRss/432858.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/zhuyuanxiang/services/trackbacks/432858.html</trackback:ping><description><![CDATA[<p>首先划重点:(x)q是一本Java的入门书?/p> <p>自学前需要的条gQ已l具备基本的计算机基?/p> <blockquote> <p>1Q已l对一U编E语a比较熟?zhn)Q?/p> <p>2Q有q四q计机专业学习(fn)Q或者三q以上的软g开发经验,</p></blockquote> <p>自学的方法:(x)</p> <blockquote> <p>1Q完全自学:(x)手工输入代码Q看懂习(fn)题的{案?/p> <p>注:(x)把下载的代码q行通过是不行的Q自行输入代码也是对Java语言的熟(zhn)过E?/p> <p>2Q结伴学?fn)?x)通过讨论深入理解代码Q结伴搞定习(fn)题?/p> <p>3Q前辈指|(x)由前辈帮助搭建编E环境,避过自学q程中需要面对的其他q扰。帮助理解与Java相关的其他计机的知识点Q从而避免遇到因此某些地方不懂而升L(fng)退却心(j)理?/p> <p>ȝQ最完美的的以上三种l合Q但是不基于什么方法,完全的自学都是必ȝ?/p></blockquote> <p>Z么说q是一本Java入门书?</p> <blockquote> <p>因ؓ(f)此书只是全面讲述?jin)在Java~程q程中可能遇到的各种知识点,而对q些知识点ƈ没有展开和深入,d此书后可以对Java~程有个全面的了(jin)解,但是如果在工作中遇到q些问题Ӟ仍然需要去找更加专业的书籍来深入学?fn)?/p></blockquote> <blockquote> <p>例如Qƈ发编E。作者只是介l了(jin)如何用Java~写多线E的E序Q但是对于死锁问题只提供?jin)例子,q没有深入分析,也没有给出更加具体的解决Ҏ(gu)Q因不是此书的关注点?/p></blockquote> <p>Z么很多hq不推荐用来入门Q?/p> <blockquote> <p>我的感觉q本书可能是一本教材,是作者用来培训JavaE序员的Q所以书中对许多知识点ƈ没有l出铺垫Q因本书已经很厚?jin),所以作者只好在译֠上铺垫了(jin)Q。那么过多的计算机方面的知识Q例如:(x)面向对象、设计模式、IO处理、ƈ发编E等{)(j)很容易Z生挫折感而放弃这本很厚很厚的书,甚至攑ּJava语言?/p> <p>因此Q我的经验是如果你没有多q的软g~程l验Q也没有比较全面的计机知识Q那么最好找个前辈指导着学习(fn)Q因为很多时候兴比什么都宝贵?/p></blockquote> <p>后记Q此书值得反复阅读。“书d遍,其义自见。”作者不仅在Java语言斚wQ而且在计机其他领域斚w也有很深的造诣。读透一本书Q就可以充分领?zhn)除这本书以外作者在其他斚w的心(j)得?/p><img src ="http://m.tkk7.com/zhuyuanxiang/aggbug/432858.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/zhuyuanxiang/" target="_blank">p?/a> 2017-10-15 12:11 <a href="http://m.tkk7.com/zhuyuanxiang/archive/2017/10/15/432858.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Thinking in Javapd 文档+代码+?/title><link>http://m.tkk7.com/zhuyuanxiang/archive/2017/08/25/432771.html</link><dc:creator>p?/dc:creator><author>p?/author><pubDate>Fri, 25 Aug 2017 01:30:00 GMT</pubDate><guid>http://m.tkk7.com/zhuyuanxiang/archive/2017/08/25/432771.html</guid><wfw:comment>http://m.tkk7.com/zhuyuanxiang/comments/432771.html</wfw:comment><comments>http://m.tkk7.com/zhuyuanxiang/archive/2017/08/25/432771.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/zhuyuanxiang/comments/commentRss/432771.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/zhuyuanxiang/services/trackbacks/432771.html</trackback:ping><description><![CDATA[<p><font face="微Y雅黑">声明Q本人无意R犯原作者的版权Q这里可下蝲的文档都属于作者自行开放下载的Q统一攄在这里是因ؓ(f)不可预测的原因得原文档和代码不方便下蝲Q故我所攉的内容统一在这里,如果q里的内容R犯了(jin)别hQ请告知我会(x)W一旉删除Q谢谢理解?/font></p> <p><a href="http://m.tkk7.com/Files/zhuyuanxiang/TIJ-1st-edition.zip" target="_blank"><font face="微Y雅黑">Java~程思想Q英文第1版)(j)+源代?/font></a></p> <p><a href="http://m.tkk7.com/Files/zhuyuanxiang/TIJ2-Word.zip" target="_blank"><font face="微Y雅黑">Java~程思想Q英文第2版)(j)</font></a></p> <p><a href="http://m.tkk7.com/Files/zhuyuanxiang/TIJ-3rd-edition4.0.zip" target="_blank"><font face="微Y雅黑">Java~程思想Q英文第3版)(j)+源代?/font></a></p> <p><font face="微Y雅黑">Java~程思想Q英文第4版)(j)</font><a href="http://m.tkk7.com/Files/zhuyuanxiang/TIJ4-PDF.part1.rar" target="_blank"><font face="微Y雅黑">part1</font></a><font face="微Y雅黑"> , </font><a href="http://m.tkk7.com/Files/zhuyuanxiang/TIJ4-PDF.part2.rar" target="_blank"><font face="微Y雅黑">part2</font></a><font face="微Y雅黑">+</font><a href="http://m.tkk7.com/Files/zhuyuanxiang/TIJ4-code.rar" target="_blank"><font face="微Y雅黑">源代?/font></a></p> <p><a href="http://m.tkk7.com/Files/zhuyuanxiang/TIPatterns-0.9.zip" target="_blank">Thinking in Patters v0.9Q中文版Q?/a></p> <p><font face="微Y雅黑">Java~程思想是不是一本好书呢Q当?dng)在书中作者详l解释了(jin)Java的v源和语言的特点,通过学习(fn)q本书可以知ӞJavaQ然也可以知其所以然。读懂这本书后,你不仅仅是个?x)写E序的编码工人,而是成ؓ(f)一个专业的E序员?/font></p> <p><font face="微Y雅黑">q本书可否作为入门书c呢Q其实,作ؓ(f)Java的入门也未尝不可Q只是因为其庞大的块头和相对艰ӆ的内容会(x)使大部分初学者半途而废。如果完全没有编E功底的人,当然׃要以此入门了(jin)Q这l对是自虐?/font></p> <p><font face="微Y雅黑">如何快速学?fn)这本书呢?直接看Java~程思想W?版,跌W?章,从第2章开始所有理论知识都跌Q手工输入所有代码,调试成功Q然后再回过头看相关理论知识Q能看懂多少看多,看不懂的留下来,{以后在实践中碰C(jin)再回头学?fn)?/font></p> <p><font face="微Y雅黑">如何深入学习(fn)q套书呢Q有强大意志力的可以从第1版开始往后看Q看到第4版就可以对Java语言的发展史有个深刻的理解,甚至对于E序设计语言的发展历史也?x)有所?jin)解Q这个很重要Q,因ؓ(f)所有的语言其实都是盔R的。一门语a理解以后Q再学其他语aQ如QC++、Python{)(j)都会(x)明白q个语言的特点在哪里Qؓ(f)何要q样设计语言Q用在什么场合下效果最好。如果这个语a因ؓ(f)设计的需要缺某些特性的时候,可以通过什么方法来解决。例如:(x)Java 1.4以前是没有泛型的Q那么第3版就没有介绍泛型的用,而第4版才引入?jin)泛型,那么通过Ҏ(gu)W?版和W?版,既可以深入理解泛型的好处Q也可以知道如何通过其他手段来解册个问题?/font></p> <p><font face="微Y雅黑"></font></p><img src ="http://m.tkk7.com/zhuyuanxiang/aggbug/432771.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/zhuyuanxiang/" target="_blank">p?/a> 2017-08-25 09:30 <a href="http://m.tkk7.com/zhuyuanxiang/archive/2017/08/25/432771.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaE序设计与数据结构导?-d?/title><link>http://m.tkk7.com/zhuyuanxiang/archive/2017/08/13/432737.html</link><dc:creator>p?/dc:creator><author>p?/author><pubDate>Sun, 13 Aug 2017 09:50:00 GMT</pubDate><guid>http://m.tkk7.com/zhuyuanxiang/archive/2017/08/13/432737.html</guid><wfw:comment>http://m.tkk7.com/zhuyuanxiang/comments/432737.html</wfw:comment><comments>http://m.tkk7.com/zhuyuanxiang/archive/2017/08/13/432737.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/zhuyuanxiang/comments/commentRss/432737.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/zhuyuanxiang/services/trackbacks/432737.html</trackback:ping><description><![CDATA[<p>与我前面所ȝ<a href="http://m.tkk7.com/zhuyuanxiang/archive/2017/08/05/432724.html" target="_blank">《Java7基础教程?/a>相比Q此书不适合自学Q更适合作ؓ(f)教材使用?/p> <p>虽然此书完整覆盖?jin)Java的知识点和数据结构的基础问题Qƈ且对每个部分都做?jin)基本说明。但是因为没有深入展开Q对于以自学的方式阅L书的读者,如果没有基础的会(x)感觉内容太多太杂Q学?fn)过E会(x)觉得怸着头脑Q但是对于基较好的读者又?x)觉得书中的描述有种隔靴搔痒的感觉,d一遍没啥收莗?/p> <p>但是如果作ؓ(f)教材则具有自q优势Q作者从Java语言入手Q一步步推进到数据结构,使Java语言和数据结构的学习(fn)自然的结合在一P从而避免了(jin)在许多学校教学过E中因ؓ(f)分别讄两门评而带来的p问题。例如:(x)许多同学都是先学语言Q再学数据结构。可能会(x)遇到一个学期学Java语言Q另一个学期学数据l构Q结果Java的语法早在考试后还l老师?jin),从而学习(fn)数据l构的过E比较困难。更p糕的是学习(fn)数据l构时用的~程语言不是JavaQ结果就学完数据结构了(jin)依然不会(x)使用Java来解x(chng)据结构中的许多经兔R题?/p> <p>但是Q如果老师使用q个教材Q可以根据自q需要调整讲解的深度和需要展开的内容,q可以帮助学生直接利用Java语言的特性来解决某些数据l构的问题,比如QJava的泛型和集合cL实现数据l构的链表,使学?fn)很有针?gu),也更Ҏ(gu)产生兴趣?/p><img src ="http://m.tkk7.com/zhuyuanxiang/aggbug/432737.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/zhuyuanxiang/" target="_blank">p?/a> 2017-08-13 17:50 <a href="http://m.tkk7.com/zhuyuanxiang/archive/2017/08/13/432737.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java 7 for Absolute Beginners/Java 7基础教程--d?/title><link>http://m.tkk7.com/zhuyuanxiang/archive/2017/08/05/432724.html</link><dc:creator>p?/dc:creator><author>p?/author><pubDate>Sat, 05 Aug 2017 04:33:00 GMT</pubDate><guid>http://m.tkk7.com/zhuyuanxiang/archive/2017/08/05/432724.html</guid><wfw:comment>http://m.tkk7.com/zhuyuanxiang/comments/432724.html</wfw:comment><comments>http://m.tkk7.com/zhuyuanxiang/archive/2017/08/05/432724.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://m.tkk7.com/zhuyuanxiang/comments/commentRss/432724.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/zhuyuanxiang/services/trackbacks/432724.html</trackback:ping><description><![CDATA[<p>1. 很适合部分初学者,因ؓ(f)书中对于JAVA许多Ҏ(gu)都有涉猎,而且也是尝x(chng)。如果读者没有受q专业的~程训练Q那么在阅读此书时不?x)畏惧。因Z中没有充斥着大量的计机理论知识Q虽然作者依然覆盖了(jin)JAVA的重要知识点Q以?qing)许多与~程相关的计机知识点,但是作者ƈ没有展开说明Q只是帮助读者有个初步的认识Q重要的是培训兴。作者本Z非计机专业毕业Q而是通过大量的编E实跉|Z个合格的E序员。因此,作者全书都彰显着实用M的精,无论是语a的选择QJAVAq是C++Q,q是理论的学?fn)(JVM和内存管理)(j)都是能用p?/p> <p>2. 通过我对本书的学?fn),其他读者也像作者一P从实践出发。一定要自己把书中的代码都输入到计算ZQ按照作者的思\熟?zhn)~程工具和JAVA的知识点。在阅读q程中,我发现本书中文版的代码排版有误,那么读者可以根据自q能力q行U错Q通过U错也可以加深对代码的理解,实在搞不定了(jin)再参考作者或者我提供的源代码?/p> <p> </p> <p>重要事情说三遍:(x)一定要自己输入代码?/p> <p>因ؓ(f)代码光看懂是不够的,一定要自己输入、调试和发现问题Q还可以修改代码从而加入自q一些想法,只有通过反复的实跉|能真正理解JAVA的知识点Q也是俗话说的学成自己的东ѝ?/p> <p> </p> <p>3. dq本书,其实q不能帮你立d成ؓ(f)一定合格的JAVAE序员,甚至你还是不太会(x)写程序,但是恭喜你“入门了(jin)”?/p> <p> </p> <p>4.如果惌省时间和_֊Q那p个专业的老师带着你阅诅R因为,旉是金钱Q?/p> <p> </p> <p><a href="http://m.tkk7.com/Files/zhuyuanxiang/java-7-for-absolute-begs-master.zip">原作者的代码</a>Q?a href="http://m.tkk7.com/Files/zhuyuanxiang/Java7Beginners.rar">我自p入和做了(jin)部分修改的代?/a>?/p><img src ="http://m.tkk7.com/zhuyuanxiang/aggbug/432724.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/zhuyuanxiang/" target="_blank">p?/a> 2017-08-05 12:33 <a href="http://m.tkk7.com/zhuyuanxiang/archive/2017/08/05/432724.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java 7 for Absolute Beginners/Java 7基础教程--代码U错http://m.tkk7.com/zhuyuanxiang/archive/2017/08/05/432723.htmlp?/dc:creator>p?/author>Sat, 05 Aug 2017 04:15:00 GMThttp://m.tkk7.com/zhuyuanxiang/archive/2017/08/05/432723.htmlhttp://m.tkk7.com/zhuyuanxiang/comments/432723.htmlhttp://m.tkk7.com/zhuyuanxiang/archive/2017/08/05/432723.html#Feedback0http://m.tkk7.com/zhuyuanxiang/comments/commentRss/432723.htmlhttp://m.tkk7.com/zhuyuanxiang/services/trackbacks/432723.html中文版书中的问题?sh)码记录Q?/p>

只记录了(jin)P213后面的错误代码,如果后面发现P213前面的错误代码Q会(x)l箋(hu)补齐。但我提供的代码都是可以正常q行的,如果有用者发C文版书中其他的错误代码请告诉我,方便我在q里补齐Q谢谢?/p>

P213Q重构代码有误,作者在源代码中提供的正代码如下:(x)

public ShootingGalleryTargetRow(Image sprite, int value) {
        targetValue = value;
        newTargetTicker = 0;
        this.sprite = (BufferedImage)sprite;
    }

P220Q函C的System.exit(1)因ؓ(f)前面抛出?jin)异常,所以永q无法执行,直接删除?

public Image getSpriteBySize(int size) {
    ...
    throw new IllegalArgumentException("Unknown Sprite Size: " + size);
    System.exit(1);
    ...
    }

P250Q用泛型GenericRole<String, String>未定义类型?/p>

public class GenericRoleProgram {

    public static void main(String[] args) {
        LinkedList<GenericRole<String,String>> roleMap=new LinkedList<GenericRole<String, String>>();
        ...
    }

原作者的代码Q?a href="http://m.tkk7.com/Files/zhuyuanxiang/Java7Beginners.rar">我自p入和做了(jin)部分修改的代?/a>?/p>

]]>
Eclipse JVM terminated.exit code=13http://m.tkk7.com/zhuyuanxiang/archive/2017/07/09/432651.htmlp?/dc:creator>p?/author>Sun, 09 Jul 2017 13:32:00 GMThttp://m.tkk7.com/zhuyuanxiang/archive/2017/07/09/432651.htmlhttp://m.tkk7.com/zhuyuanxiang/comments/432651.htmlhttp://m.tkk7.com/zhuyuanxiang/archive/2017/07/09/432651.html#Feedback0http://m.tkk7.com/zhuyuanxiang/comments/commentRss/432651.htmlhttp://m.tkk7.com/zhuyuanxiang/services/trackbacks/432651.html今天Q在安装Nomad PIM时碰到这个问题,因ؓ(f)q个应用是基?2位的Eclipseq_开发的Q而我的电(sh)脑是64位的Windows 7Q当然安装的JDK也是64位的Q于是报错?/p>

搜烦(ch)?jin)网上,l了(jin)许多解释Q这个作者的说明q要详尽些:(x)http://blog.csdn.net/czmchen/article/details/6176178

但是Q我个h认ؓ(f)问题是出在32位的Eclipse应用?4位的JDK的冲H上Q因此直接采用上文中提到的第二种Ҏ(gu)Q修改Eclipse.ini文gQ增?/p>

-vm
C:/Java/jdk1.6.0_10/bin/javaw.exe  // q行是32位JDK的安装位|,不同的电(sh)脑可能JDK的位|不?/p>

当然Q也可以在本Z直接安装32位和64位两UJDKQ系l启动时׃(x)自动选择Q但是自动选择׃(x)D刚开始启动时速度有点慢?/p>

]]>
JavaE序设计教程Q第2版)(j)阅读ȝhttp://m.tkk7.com/zhuyuanxiang/archive/2017/07/06/432647.htmlp?/dc:creator>p?/author>Thu, 06 Jul 2017 02:48:00 GMThttp://m.tkk7.com/zhuyuanxiang/archive/2017/07/06/432647.htmlhttp://m.tkk7.com/zhuyuanxiang/comments/432647.htmlhttp://m.tkk7.com/zhuyuanxiang/archive/2017/07/06/432647.html#Feedback0http://m.tkk7.com/zhuyuanxiang/comments/commentRss/432647.htmlhttp://m.tkk7.com/zhuyuanxiang/services/trackbacks/432647.html 

Z(jin)重新拣v对Java的回忆,只好又找?jin)本基础书。由于成都高新图书馆的计机书实在不多,只能扑ֈq本?jin)。简单读?jin)下Java部分Qȝ如下Q?/font>

优点Q虽然本书也是作者编的而不是作者著的,但是可以看出作者编写此书时是有个自q思\的。与10q前的中国h~写的计机书相比,不再是简单的转蝲Q而是手中的资料通过自己的理解诏I在一赗ƈ且书中的内容和练?fn)也有机地结合在一P可以边读边练?fn),增加了(jin)对知识的理解?/font>

~点Q?/font>

  1. 本书不够自完备,如果没有基础q行自学Q会(x)到的不知道的知识点比较多,从而无法流畅地完成全书?
  2. 全书沿用的依然是中国人的学习(fn)思\Q将重要的知识点ȝ在一P方便?jin)解和记忆,但是所有知识点怺之间的关联性不够。也可以说全书的M目标不够明确Q读完后?x)觉得学了(jin)不,但是实践h又觉得能力不?/font>

ȝQ对于已l有一定语a基础Q或者作师上课的教材,本书仍是不错的选择?/font>



]]>
《Java大学教程?amp;mdash;dȝhttp://m.tkk7.com/zhuyuanxiang/archive/2016/10/06/431869.htmlp?/dc:creator>p?/author>Thu, 06 Oct 2016 13:53:00 GMThttp://m.tkk7.com/zhuyuanxiang/archive/2016/10/06/431869.htmlhttp://m.tkk7.com/zhuyuanxiang/comments/431869.htmlhttp://m.tkk7.com/zhuyuanxiang/archive/2016/10/06/431869.html#Feedback0http://m.tkk7.com/zhuyuanxiang/comments/commentRss/431869.htmlhttp://m.tkk7.com/zhuyuanxiang/services/trackbacks/431869.html1.坚持是胜利?/p>

中间启动?jin)许多次Q但又因为各U原因被停。就q闭兛_?fn)期_(d)也多ơ想攑ּQ总觉得太单,最后还是选择?jin)这本书而放弃了(jin)其他书,原因是马上要q(sh)?jin),“书是非借不能读Q”不q,坚持自己最初的选择Q完成了(jin)q本书的学习(fn)q是值得的。因为很多年不碰Java语言?jin),总需要一本书把基拣v来,通过坚持d一本书Q可以从作者的角度对Java有个完整的回。同Ӟ闭关学习(fn)期间Q通过有所攑ּQ才觉得专注做好一件事Q放下对其他事的贪心(j)Q尽量将生活单化真的很舒服?/p>

不过Q这U简单生zMq不Ҏ(gu)适应Q特别是刚开始闭养I当天d完成后就?x)贪心(j)想多看。特别是看到最后几章时Q因?sh)的旉点快C(jin)Q心(j)里莫名的?ch)躁QL额完成dQ结果行Z开始抵触,甚至x(chng)弃不看。最后,只能以结束这本书为目的,每天都以臛_完成当天的Q务ؓ(f)基本要求Q努力坚持到全书看完的那一天?/p>

今天全书的学?fn)结束?jin)Q好像放下一个很重的担子Q这本书其实隑ֺq不可?qing),Z么还是有?j)篏的感觉呢Q?/p>

2.合适就是好书?/p>

q是一本可以推荐给Java初学者的教材书,唯一不是书中的开发工具不是EclipseQ而是JCreatorQ要知道JCreator是要收费的,也不是国内主的开发工P初学者不Ҏ(gu)扑ֈ相关资料。因此对于用此书的初学者要不就需要自q(zhn)JCreatorq个开发工P要不需要自行{换到Eclipse开发工具上。不q,全书涉及(qing)开发工L(fng)地方很少Q{换工作也不太复杂?/p>

当然Q这也不是一本经典的教材Q只是本得不用太qhl典。这本书仍然是作者多q教学实践后撰写的教材,书中有作者自qJava教学思\Qƈ且提供了(jin)许多Ҏ(gu)理解的例子,通过对这本书的学?fn)能够对Java语言建立起一个较为全面的认识?/p>

其实QJava语言的成功不仅仅依赖于语a本n的特Ԍq有其深ȝ语言设计思想和它的Y件开发工具包QSDKQ,q绝对不是几本书p学会(x)的,当然q本书也不具备这个能力?/p>

3.理解源于实践?/p>

做练?fn)是q几q学?fn)数学的q程中才接受的。因Z前看书,总觉得看懂就可以?jin),l习(fn)做来做去都是些重复劳动,只是巩固一下基的知识,收获不大。于是,?j)里Lx(chng)些有看点的书来读。可是读的书不少?jin),仍然觉得无法深入Q好像L些地方书里没说清楚。后来实在没有办法了(jin)Q因为数学书本本都是那么抽象Q对于概忉|多少解释Q只好做?fn)题q可以落实一下那些定理。当?fn)题做到后面的章节,H然发现前面有些不明白的地方豁然开朗了(jin)。于是,以后的学?fn)中都把做练习(fn)作为必选项Q因为在实践的过E中才发觉最初对知识点的理解只是W统的、抽象的Q只有通过做题才能对细节深入,才能把别人写的东西变成自q理解?/p>



]]>
《Java大学教程?amp;mdash;W?4?Java的背?/title><link>http://m.tkk7.com/zhuyuanxiang/archive/2016/10/06/431867.html</link><dc:creator>p?/dc:creator><author>p?/author><pubDate>Thu, 06 Oct 2016 06:31:00 GMT</pubDate><guid>http://m.tkk7.com/zhuyuanxiang/archive/2016/10/06/431867.html</guid><wfw:comment>http://m.tkk7.com/zhuyuanxiang/comments/431867.html</wfw:comment><comments>http://m.tkk7.com/zhuyuanxiang/archive/2016/10/06/431867.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/zhuyuanxiang/comments/commentRss/431867.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/zhuyuanxiang/services/trackbacks/431867.html</trackback:ping><description><![CDATA[<p>本章主要介绍的是Java的背景知识,通过?jin)解历史知道Java与其他语a的区别,以便更好选择在什么场景下使用Java?/p> <p>24.2    语言的尺?br>Java语言短小、紧凑,以C++为基Q放弃了(jin)一些特定的语言特征Q指针和多承)(j)<br>注:(x)需要关注的是ؓ(f)什么放弃这两个特征Q有没有替代Ҏ(gu)Q各自的优缺炏V?/p> <p>24.2.1    指针QpointerQ?br>指针是一U变量,q且变量中包含了(jin)某个存储器地址?br>Java不允怋用指针,因ؓ(f)指针指向的是具体的物理地址Q直接操U늉理地址中的数据Q容易ɽE序出现不可预料的问题?br>Java通过创徏引用Q)(j)来实现对地址的访问。通过引用也可以把地址作ؓ(f)变量传送?/p> <p>24.2.2    多承(multiple inheritanceQ?br>多承允怸个类l承于多个超cR?br>Java不允许多l承Q因为多l承使用不多Q且~程复杂Q容易出错?br>Java允许l承一个基c,实现多个接口的方式实现多l承?/p> <p>24.3    语言的可靠?br>24.3.1    别名QaliasQ?br>别名?x)导致不同的对象变量指向同样的对象?br>因ؓ(f)对象变量中存储的对象地址相同Q从而出C个修改同一对象数据的入口,Ҏ(gu)造成h?br>为此Java提供?jin)两U拷贝机Ӟ(x)深拷贝(对象的数据的拯Q和拷贝(对象的引用的拯Q?br>深拷贝可以保护原始对象不受媄(jing)响,但是需要消耗时间和I间Q用于保护数据安全的领域使用。利用cloneҎ(gu)?br>拷贝提供了(jin)原始对象的地址Q不需要消耗过多的旉和空_(d)但是必须心(j)的用,以免造成不可预料的问题。利用别名机制?/p> <p>24.3.2    重写cloneҎ(gu)<br>protected的方法可以被重写为public的方法,但是public的方法不可以重写为protectedҎ(gu)?br>注:(x)因ؓ(f)已经在父cdl是public的方法,q子类重写为protectedҎ(gu)Q那么访问者依然可以通过父类实现讉KQ所以不容许publicҎ(gu)重写成protectedҎ(gu)?/p> <p>24.3.3    不变对象<br>如果对象中不存在变更它们状态的Ҏ(gu)Q则对象UCؓ(f)不变对象?br>如果对象是不可变的,则不必担?j)创建对象的别名会(x)造成不可预料的问题?/p> <p>24.3.4    使用ObjectcȝcloneҎ(gu)<br>ObjectcȝcloneҎ(gu)复制?jin)分配给对象属性的存储器的内容Q也UCؓ(f)按位拯Qbitwise copyQ。即完全复制?jin)原始类型(primitive typeQ的属性的内容Qƈ且复制了(jin)属性的引用?br>*    如果cȝ属性都是基本类型的Q则重蝲cloneҎ(gu)只需要调用ObjectcȝcloneҎ(gu)Q?br>*    如果cȝ属性有对象cd的,q且q些对象都是不可变的Q则重蝲cloneҎ(gu)只需要调用ObjectcȝcloneҎ(gu)?br>*    如果cȝ属性包含非不可变对象,则无法利用ObjectcȝcloneҎ(gu)q行复制Q必自q写代码来实现cloneҎ(gu)?/p> <p>如果需要用ObjectcȝcloneҎ(gu)Q需要标识类实现?jin)Cloneable接口Q这个接口也是个标识接口Q没有包含Q何方法?/p> <p>24.3.5    垃圾攉<br>Java使用异常处理技术来监视内存耗尽问题Qƈ且可以编写代码来保E序正常地终止?br>Java语言h一U内嵌的垃圾攉功能Q该功能能够释放未被使用的内存。通过搜烦(ch)E序所使用的内存空_(d)释放不再被用的内存?/p> <p>自测题:(x)<br>1.    指针与引用的区别Q?br>指针保存?sh)(jin)地址Qƈ且可以通过代码修改和操U这个地址的数据?br>引用保存?sh)(jin)地址Q但是这个地址不能通过代码修改Q也不能随便改变讉K的类型,例如Q不能按字节讉K地址中的信息?/p> <p>2.    多承:(x)<br>多承允怸个类l承于多个超cR?br>Java不允许多l承Q因为多l承使用不多Q且~程复杂Q容易出错?br>Java允许l承一个基c,实现多个接口的方式实现多l承?/p> <p>3.    Critical.java</p> <p>a)    因ؓ(f)Critical对象存在变更它们状态的Ҏ(gu)Q所以是可变对象?/p> <p>b)    CriticalTest.java</p> <p>c)    Critical.java</p> <p>d)    CriticalTest.java</p> <p>4.<br>a)    Z么方法返回的都是别名Q方便调用的Ҏ(gu)修改里面的数据,对于不可变对象也提高?sh)送数据的效率?br>b)    Z么别名可能有危险Q因用方法的代码可能?x)修改原始数据,造成不可意料的数据错误?br>c)    如何避免别名Q创建cloneҎ(gu)Q返回的对象都采用深拯?/p> <p>5.    垃圾攉功能的优点和~点Q?br>优点Q简化程序员的工作,避免出现内存泄漏或者内存耗尽的问题?br>~点Q降低代码执行的速度Q对于实时应用会(x)H然出现响应不及(qing)时的问题?/p> <p>~程l习(fn)Q?a href="http://m.tkk7.com/Files/zhuyuanxiang/JavaInTwoSemesters.zip">代码附g</a><br>    Critical.java    CriticalTest.java</p><img src ="http://m.tkk7.com/zhuyuanxiang/aggbug/431867.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/zhuyuanxiang/" target="_blank">p?/a> 2016-10-06 14:31 <a href="http://m.tkk7.com/zhuyuanxiang/archive/2016/10/06/431867.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>《Java大学教程?amp;mdash;W?3?Java|络~程http://m.tkk7.com/zhuyuanxiang/archive/2016/10/05/431866.htmlp?/dc:creator>p?/author>Wed, 05 Oct 2016 14:38:00 GMThttp://m.tkk7.com/zhuyuanxiang/archive/2016/10/05/431866.htmlhttp://m.tkk7.com/zhuyuanxiang/comments/431866.htmlhttp://m.tkk7.com/zhuyuanxiang/archive/2016/10/05/431866.html#Feedback0http://m.tkk7.com/zhuyuanxiang/comments/commentRss/431866.htmlhttp://m.tkk7.com/zhuyuanxiang/services/trackbacks/431866.html本章主要x(chng)的是Java的几个应用网l编E的场景Q对于网l编E没有太多深入介l,而Java本来也没有多针对网l编E的Ҏ(gu)?br>虽然Java有个Applet的概念,但是真用q个的开发的场景其实不多?/p>

23.1    引言
服务器(serverQ程序ؓ(f)其他客户端(clientQ程序提供某U类型的服务Q与客户端程序通常位于不同的机器上?br>一个程序可以既是服务器E序也是客户端程序,主要是看它是在ؓ(f)其他E序服务Q还是在使用其他E序的服务?br>甚至q可以整合其他服务器E序上的服务Q打包成自己的服务,提供l客L(fng)E序使用?/p>

23.2    applet
applet是一UJavaE序Q能够从|页中下载ƈ在浏览器中运行。因为Javaq行在虚拟机上,因此可以做到q_独立Q得程序与客户Z的操作系l无兟?/p>

23.3    讉Kq程数据?br>Java数据库连接(Java Database Connectivity, JDBCQ:(x)是Java讉K数据库的通用接口Q数据库理pȝ提供JDBC驱动Q从而保证应用程序不需要关注不同数据库的区别?br>驱动QdriverQ是一UYӞ能够使得两个E序q行通信Q或者帮助Y件与g通信?/p>

23.4    Socket
Socket是一UY件机Ӟ能够帮助E序员隐藏传输数据的l节Q类g高文g处理cd助程序隐藏外部存储器的细节,
使得E序能够Z的方式来处理网l连接上的数据的d?/p>

自测题:(x)
1.    客户--服务器体pȝ构:(x)
服务器(serverQ程序ؓ(f)其他客户端(clientQ程序提供某U类型的服务Q与客户端程序通常位于不同的机器上?br>一个程序可以既是服务器E序也是客户端程序,主要是看它是在ؓ(f)其他E序服务Q还是在使用其他E序的服务?br>甚至q可以整合其他服务器E序上的服务Q打包成自己的服务,提供l客L(fng)E序使用?/p>

2.    applet和应用程序的区别Q?br>applet和应用程序都是一UJavaE序?br>applet是运行在览器的JVM中;而应用程序是q行在操作系l的JVM中?br>applet没有main()Ҏ(gu)Q因为它q行在浏览器中,控制d由浏览器负责Q应用程序则包含main()Ҏ(gu)Qmain()Ҏ(gu)中可以控制程序的所有行为?/p>

3.    专用的appletҎ(gu)Q与paintҎ(gu)一赯行)(j)
initQapplet被浏览器装蝲Q或者重新装载)(j)Ӟ首先调用的方法?br>startQinitҎ(gu)被调用后调用的方法;每一ơ返回页面得applet可见Ӟ也会(x)调用的方法?br>paintQstartҎ(gu)被调用时Q立卌用的Ҏ(gu)?br>stopQ当applet被隐藏时Q选择?jin)浏览器其他面Q,调用的方法?br>destroyQ当applet被抛弃时Q关闭了(jin)览器)(j)Q调用的Ҏ(gu)?/p>

4.    JDBC技?br>Java数据库连接(Java Database Connectivity, JDBCQ:(x)是Java讉K数据库的通用接口Q数据库理pȝ提供JDBC驱动Q从而保证应用程序不需要关注不同数据库的区别?/p>

5.    SocketcdServerSocketcȝ功能和用途?br>Socketcȝ基本功能Q?br>*    q接到远E机器;
*    发送数据;
*    接收数据Q?br>*    关闭一个连接?br>ServerSocketcȝ附加功能Q?br>*    l定一个端口;
*    在绑定的端口上监听进入的数据Q?br>*    在绑定的端口上接受远E客L(fng)的连接;
~程l习(fn)Q?a href="http://m.tkk7.com/Files/zhuyuanxiang/JavaInTwoSemesters.zip">代码附g
1.    ChangingFaceApplet.java
2.    MetricConverterApplet.java    RedCircleApplet.java
3.    ProductQuery.java
4.    挖坑。。?br>5.    JokeServer.java    JokeClient.java    RunJokeServer.java    RunJokeClient.java
6.    挖坑。。?/p>

]]>
注册mySQL到JDBC驱动E序Ҏ(gu)谈http://m.tkk7.com/zhuyuanxiang/archive/2016/10/05/431865.htmlp?/dc:creator>p?/author>Wed, 05 Oct 2016 12:16:00 GMThttp://m.tkk7.com/zhuyuanxiang/archive/2016/10/05/431865.htmlhttp://m.tkk7.com/zhuyuanxiang/comments/431865.htmlhttp://m.tkk7.com/zhuyuanxiang/archive/2016/10/05/431865.html#Feedback0http://m.tkk7.com/zhuyuanxiang/comments/commentRss/431865.htmlhttp://m.tkk7.com/zhuyuanxiang/services/trackbacks/431865.html一、注册方法(4U)(j)

1Q服务提供者框Ӟ(x)

W合JDBC 4.0规范的驱动程序包含了(jin)一个文件META-INF/services/java.sql.DriverQ在q个文g中提供了(jin)JDBC驱动实现的类名?/font>

例如Qmysql-connector-java-5.1.40-bin.jar文g中就可以扑ֈjava.sql.Driver文gQ用文本~辑器打开文g可以看刎ͼ(x)com.mysql.jdbc.DrivercR?/font>

JVM的服务提供者框架在启动应用时就?x)注册服务,例如QmySQL的JDBC驱动׃(x)被注册,而原代码中的Class.forName("com.mysql.jdbc.Driver")仍然可以存在Q但是不?x)v作用?/font>

 

2QClass.forName("com.mysql.jdbc.Driver");

通过对类com.mysql.jdbc.Driver初始化,执行?rn)态初始化代码Q调用DriverManager注册JDBC驱动?/font>

注:(x)通过setProperty的测试,认ccom.mysql.jdbc.Driver也没有加载,那么?rn)态初始化代码肯定被执行了(jin)Q但是如果服务提供者框架已l注册的服务Q这里注册会(x)p|Q编E的预期是这L(fng)Q可是理ZDriverManager.registerDriver可以重复注册的,Z么这里不能重复注册呢Q?/font>

3QSystem.setProperty("jdbc.drivers", "com.mysql.jdbc.Driver";);

讄JVM的系l属性,当JVMW一ơ加载DriverManagercLQ会(x)执行cȝ?rn)态初始化代码Q代码中调用loadInitialDrivers()Ҏ(gu)Q就?x)加载设|的属性对应的c,执行cȝ?rn)态初始化代码完成注册?/font>

注:(x)因ؓ(f)注册的机制无法深入理解,只知道没有加载过的类可以注册成功Q加载过的就不能重复注册?jin)?/font>

注:(x)setProperty必须在DriverManagerW一ơ运行前才有效,说明”服务提供者”框架注册服务时q没有加载类Q因Z旦加载类׃(x)执行cȝ?rn)态初始化代码Q那么注册JDBC驱动׃定会(x)调用DriverManagercȝ?rn)态初始化代码Q那么setProperty׃(x)失效Q所以说明注册服务是不加载类的?/font>

4QDriverManager.registerDriver(new com.mysql.jdbc.Driver());

其实前面?Q和3Q最l都是通过q个Ҏ(gu)注册的,但是q个Ҏ(gu)可以重复注册?/font>

注:(x)对于重复注册后,建立链接时用哪个驱动我׃明白?jin),可以取消注册Q取消的关键字是Z创徏的对象的Q所以就重名也不会(x)出错?/font>

注:(x)q种注册方式没有前面几种好,因ؓ(f)q种注册方式?x)在代码中与需要注册的驱动E序的类l定Q前面都可以通过配置参数实现注册?/font>

二、各自特点:(x)

1Q全自动。只要提供符合规范的JAR文g可以了(jin)?/font>

2Q利用反机Ӟ驱动类注入C码中Q不需要与代码l定?/font>

3Q基于系l的属性设|方法,驱动类注入C码中Q但是好像只能绑定一个JDBC驱动?/font>

4Q最l的注册机制。会(x)出现重复注册Q但是好像对E序没媄(jing)响,q需要与代码l定Q驱动变?sh)(jin),必须修改代码Q维护成本过高,当然也是灉|性最好,理最方便的?/font>

以下是测试代码:(x)

import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Enumeration;

/**
 * @author p?Tom 试JDBC驱动注册
 */
public class JDBCDriverTest {

    public static void main(String[] args) {
        Driver aDriver;
        Connection connection;
        Enumeration em;
        // “org.gjt.mm.mysql.Driver”是“com.mysql.jdbc.Driver”的子类Q其构造函数就是调用父cȝ构造函数?/span>
        String driverString = "com.mysql.jdbc.Driver";
        // String driverString = "org.gjt.mm.mysql.Driver";
        String url = "jdbc:mysql://localhost/ElectricalStore?useSSL=false";
        String username = "admin";
        String password = "123456";

        try {
           // DriverManager的日志流输出到ConsoleH口中,方便监控
           // DriverManager.setLogStream(System.out);
           // DriverManager.println("------DriverManager logs start!------");

           // 只是讄?jin)一个JVM的系l属性,q不建立JDBC驱动E序?
            // 建立JDBC驱动是依赖系l第一ơ调用DriverManagercLQ执行了(jin)q个cȝ?rn)态初始化代码中的loadInitialDrivers()Q?
            // 加蝲驱动的方法会(x)把设|的jdbc.drivers属性对应的驱动c通过DriverManager.registerDriver注册到JDBC中?
            // 因此Q必L在DriverManager被第一ơ调用之_(d)也就是需要将前面那两行代码注释掉
            System.out.println("1.1> Tried to use setProperty.");
            System.setProperty("jdbc.drivers", driverString);
            System.out.println("---List of all jdbc drivers---");
            em = DriverManager.getDrivers(); // 获取已加载JDBC驱动E序的Enumeration
            if (!em.hasMoreElements()) {
                System.out.println("There is no JDBC drivers");
            } else {
                while (em.hasMoreElements()) {
                    aDriver = (Driver) em.nextElement();
                    System.out.println(aDriver);
                }
            }

            System.out.println("1.2> we tried to use Class.forName");
            // Class.forName(driverString)在JavaSE 6.0后符合JDBC 4.0规范的驱动可以不?
            // Z服务提供机制Q?Service Provider mechanismQ,
            // pȝ?x)自动搜索mysql-connector-java-???-bin.jar中的META-INF/services/java.sql.Driver
            // q个文g?x)包含mysql jdbc驱动E序的入口:(x)com.mysql.jdbc.Driver
            // 应用E序调用Class.forName()也不?x)出错,只是什么都不会(x)执行?
            // 因ؓ(f)Class.forName()是执行?rn)态初始化代码Q已l初始化q的cd无法Ȁz这D代码了(jin)
            // System.setProperty("jdbc.drivers",driverString);与Class.forName()一栗?/span>
            try {
                Class.forName("com.mysql.fabric.jdbc.FabricMySQLDriver");
            } catch (ClassNotFoundException e) {
                System.out.println("Driver not found");
            }

            System.out.println("---List of all jdbc drivers---");
            em = DriverManager.getDrivers(); // 获取已加载JDBC驱动E序的Enumeration
            if (!em.hasMoreElements()) {
                System.out.println("There is no JDBC drivers");
            } else {
                while (em.hasMoreElements()) {
                    aDriver = (Driver) em.nextElement();
                    System.out.println(aDriver);
                }
            }

            System.out.println("1.3> we tried to use DriverManager.registerDriver");
            // 手工注册mySQL的JDBC驱动E序Q也出C(jin)与mySQLl定q紧的问题,如果以后需要更换驱动,需要修改代码?
            // pȝ容许出现重复注册同样的jdbc驱动c?/span>
            DriverManager.registerDriver(new com.mysql.jdbc.Driver());
            DriverManager.registerDriver(new com.mysql.fabric.jdbc.FabricMySQLDriver());
            DriverManager.registerDriver(new com.mysql.jdbc.Driver());

            System.out.println("---List of all jdbc drivers---");
            em = DriverManager.getDrivers(); // 获取已加载JDBC驱动E序的Enumeration
            while (em.hasMoreElements()) {
                aDriver = (Driver) em.nextElement();
                System.out.println(aDriver);
            }

            System.out.println("<1.5> Deregister all JDBC drivers");
            em = DriverManager.getDrivers(); // 获取已加载JDBC驱动E序的Enumeration
            while (em.hasMoreElements()) {
                aDriver = (Driver) em.nextElement();
                DriverManager.deregisterDriver(aDriver); // 已l注册的驱动E序取消注册
            }

            em = DriverManager.getDrivers(); // 获取已加载JDBC驱动E序的Enumeration
            if (!em.hasMoreElements()) {
                System.out.println("2.1> Now, there is no JDBC driver");
            }

            System.out.println("2.2> we tried to use Class.forName again");
            try {
                Class.forName(driverString);
            } catch (ClassNotFoundException e) {
                System.out.println("Driver not found");
            }
            try {
                Class.forName("com.mysql.fabric.jdbc.FabricMySQLDriver");
            } catch (ClassNotFoundException e) {
                System.out.println("Driver not found");
            }
            try {
                Class.forName(driverString);
            } catch (ClassNotFoundException e) {
                System.out.println("Driver not found");
            }

            em = DriverManager.getDrivers(); // 获取已加载JDBC驱动E序的Enumeration
            if (!em.hasMoreElements()) {
                System.out.println("There is no JDBC drivers");
            } else {
                System.out.println("---List of all jdbc drivers---");
                while (em.hasMoreElements()) {
                    aDriver = (Driver) em.nextElement();
                    System.out.println(aDriver);
                }
            }

            System.out.println("2.3> we tried to use setProperty again");
            System.setProperty("jdbc.drivers", "com.mysql.fabric.jdbc.FabricMySQLDriver");

            em = DriverManager.getDrivers(); // 获取已加载JDBC驱动E序的Enumeration
            if (!em.hasMoreElements()) {
                System.out.println("There is no JDBC drivers");
            } else {
                System.out.println("---List of all jdbc drivers---");
                while (em.hasMoreElements()) {
                    aDriver = (Driver) em.nextElement();
                    System.out.println(aDriver);
                }
            }

            System.out.println("2.3> Tried to use DriverManager.registerDriver again");

            DriverManager.registerDriver(new com.mysql.jdbc.Driver());
            DriverManager.registerDriver(new com.mysql.fabric.jdbc.FabricMySQLDriver());
            DriverManager.registerDriver(new com.mysql.jdbc.Driver());

            System.out.println("---List of all jdbc drivers---");
            em = DriverManager.getDrivers(); // 获取已加载JDBC驱动E序的Enumeration
            if (!em.hasMoreElements()) {
                System.out.println("There is no JDBC drivers");
            } else {
                while (em.hasMoreElements()) {
                    aDriver = (Driver) em.nextElement();
                    System.out.println(aDriver);
                }
            }

            System.out.print("3.1> Tried to establish a connection: ");
            connection = DriverManager.getConnection(url, username, password);
            System.out.println(connection);
        } catch (SQLException e) {
            System.out.println("Cannot registered the mysql jdbc driver");
        }

        System.out
                .println("jdbc.drivers property: " + System.getProperty("jdbc.drivers", "nothing"));

    }

}



]]>
《Java大学教程?amp;mdash;W?2?多线E程?/title><link>http://m.tkk7.com/zhuyuanxiang/archive/2016/10/04/431864.html</link><dc:creator>p?/dc:creator><author>p?/author><pubDate>Tue, 04 Oct 2016 08:36:00 GMT</pubDate><guid>http://m.tkk7.com/zhuyuanxiang/archive/2016/10/04/431864.html</guid><wfw:comment>http://m.tkk7.com/zhuyuanxiang/comments/431864.html</wfw:comment><comments>http://m.tkk7.com/zhuyuanxiang/archive/2016/10/04/431864.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/zhuyuanxiang/comments/commentRss/431864.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/zhuyuanxiang/services/trackbacks/431864.html</trackback:ping><description><![CDATA[<p>22.2 q程QprocessQ:(x)P551<br>旉切片Qtime-slicingQ:(x)处理器只是完成了(jin)一个Q务的一部分工作Q然后完成下一个Q务的一部分工作Q?br>因ؓ(f)处理吕每ơ完成工作的旉都非常短Q因此看hq些d是同时完成的?/p> <p>q程Q一个运行的E序通常UCؓ(f)一个进E?br>q发q程Qconcurrent processQ:(x)两个或多个可以同时执行的q程UCؓ(f)q发q程?br>在多个进Eƈ发执行时Q每个进E都有自q存放E序代码和数据的存储I间Qƈ且每个进E的存储I间对于其他q程都是受保护的Q所有这些工作都由操作系l完成?/p> <p>22.3    U程QthreadQ:(x)P552<br>U程Q一个程序执行的多个独立dUCؓ(f)U程。通常线E称量q程Qlightweight processQ,因ؓ(f)也管理进E相比,理U程需要占用较?yu)的pȝ资源?br>U程没有完全独立的存储空_(d)U程之间׃n代码区和存储区?br>理U程的方式也是基于时间切片原则,由JVM和OS协同理?/p> <p>22.4    Threadc?br>l承Threadcd现线E。控制线E用三个Ҏ(gu)Qstart(), run(), finish()<br>主要执行代码在run()Ҏ(gu)中?br>注:(x)run()Ҏ(gu)l束后,q个U程p行结束了(jin)Q不可以再次调用Q必重新创建。原因也可参考图22-2的状态{换图Q线E进入TERMINATE状态中Q无法再ơ启动?/p> <p>22.5    U程的执行与调度<br>份额QquantumQ:(x)每个q程或者线E都可以获得处理器上的一段旉--UCؓ(f)份额Q然后轮转到下一个进E或U程?br>份额内时间没有用完时Q也可以使用sleep()Ҏ(gu)Q强制放弃CPU的占用权Q将CPUq给OSQ从而可以l分配给下一个进E或U程?br>注:(x)sleep()Ҏ(gu)传入的时间间隔(以毫Uؓ(f)单位Q,可能?x)抛出InterruptedException异常Q必d在try...catch代码块中?/p> <p>22.6    Runnable接口<br>创徏一个实现Runnable接口的类Q然后将cȝ实例作ؓ(f)Runnable接口的参C入Thread对象的构造函C?br>后面的工作主要就是操作Thread的对象,与前面扩展ThreadcȝҎ(gu)一样了(jin)?br>注:(x)此处的Thread对象是独立创建的Q前面是对Threadcȝl承?/p> <p>22.7    U程同步QP562<br>异步行ؓ(f)Qasynchronous behaviourQ:(x)<br>    在一般情况下两个或多个ƈ发执行线E的行ؓ(f)q不是协同的Q而且无法预知在某个时间段内哪个线E将?x)占用CPUQ这U非协同的行为称为异步行为?br>互斥讉KQmutual exclusionQ:(x)需要将讉K~冲区的E序D늜作(f)界区Qcritical sectionQ?-卛_M时刻只能被一个进E访问的区域Q实C(f)界区的方式称Z斥访问?br>忙等待(busy waitingQ:(x)被某个线E执行的Ҏ(gu)循环中反复执行,直到满某个条g才能l止。效率太低,可以使用wait()Ҏ(gu)线E挂P直到被其他线E的消息唤醒?br>在Java中创Z个monitor对象Q监视器Q,monitorcȝ所有方法在M时刻都只能被一个线E访问?br>可以在方法的头部使用synchronized修饰W,׃Ҏ(gu)被同?synchronized)Q所以一旦有某个对象调用该方法,那么该方法将被置上一个锁QlockQ,<br>其他对象必须在该Ҏ(gu)执行完成后才能访问它?br>?Qؓ(f)什么要加锁Q是因ؓ(f)你有临界区,对这个(f)界区加锁才是目的?br>因此锁的目的Q当前类Q即this.?rn)态变量)(j)Q当前对象(即this.变量Q,当前对象中创建的对象Q即this.对象变量Q,外部传入到当前对象中的对象?/p> <p>?Q什么可以加锁?对象Q只有对象可以加锁?br>在Java中,每一个对象都拥有一个锁标记QmonitorQ,也称为监视器Q多U程同时讉K某个对象ӞU程只有获取?jin)该对象的锁才能讉K?br>JVM?x)记录ƈ且监这个锁Q当U程获取锁后计数器由0?Q线E若讉K同样锁的其他Ҏ(gu)Q计数器q(sh)(x)l箋(hu)增加Q从而保证线E完全释放这个锁后才?x)允许其他线E访问?br>所以基本数据类型的变量是不能作Z(f)界区的,也就不能被加锁?/p> <p>?Q怎么样加锁?使用synchronized寚w(rn)态方法、方法、对象变量加锁?br>static synchronized aStaticMethod(){...}        //        “当前类Q即this.?rn)态变量)(j)”加?br>synchronized aMethod(){...}        //        “当前对象(即this.变量Q”加?br>synchronized (aObjectVariable){...}        //        “当前对象中创徏的对象(即this.对象变量Q”或“外部传入到当前对象中的对象”加锁?/p> <p>22.8    U程状态:(x)P563<br>状态{换图Q图22-2 一个线E的状态{换图<br>start()启动一个线E?->U程q入readyQ就l)(j)状态?br>dispatch()调度一个线E?->U程q入runningQ运行)(j)状态?br>U程q行旉时、yield()强制一个线E放弃CPU-->U程q入readyQ就l)(j)状态?br>sleep()睡眠一个线E?->U程q入sleepingQ睡眠)(j)状?->睡眠旉时-->U程q入readyQ就l)(j)状态?br>wait()-->U程q入waitingQ等待)(j)状?->获得其他U程notify()或notifyAll()Ҏ(gu)通知-->U程q入readyQ就l)(j)状态?br>׃{待输入或等待外部设备可?->U程处于blockedQ阻塞)(j)状?->d旉时或设备正?->U程q入readyQ就l)(j)状态?br>run()Ҏ(gu)完成后,U程被终止?/p> <p>22.10    Timerc:(x)调度U程<br>在固定时间间隔内生成ActionEvents对象。因此,必须一个Timer对象兌C个ActionListener对象?br>只要Timer对象生成一个ActionEvent对象Q都?x)执行与Timer对象相关的ActionListener对象的actionPerformed()Ҏ(gu)?/p> <p>自测题:(x)<br>1.    如何通过旉切片实现q发QP552<br>旉切片Qtime-slicingQ:(x)处理器只是完成了(jin)一个Q务的一部分工作Q然后完成下一个Q务的一部分工作Q?br>因ؓ(f)处理吕每ơ完成工作的旉都非常短Q因此看hq些d是ƈ发完成的?/p> <p>2.    q程与线E的区别QP552<br>每个q程都有完全独立的存储空_(d)用于存放E序的代码和数据Qƈ且每个进E的存储I间对于其他q程都是受保护的Q所有这些工作都由操作系l完成?br>每个U程没有完全独立的存储空_(d)U程之间׃nE序的代码和数据Q线E的调度由JVM和操作系l协同完成?/p> <p>3.    异步U程执行和同步线E执行的区别QP562<br>异步执行U程Q无法预知某个时间段内哪个线E将?x)占用CPUQ也无法估计E序执行的结果?br>同步执行U程Q确保线E对于(f)界区是互斥访问的Q当某个U程执行同步代码Ӟ其他U程无法再调用同步代码,必须{待前面执行的进E解锁?/p> <p>4.    临界区和互斥的概念:(x)P562<br>讉K~冲区的E序D늜作(f)界区Qcritical sectionQ?-卛_M时刻只能被一个进E访问的区域?br>实现临界区的方式UCؓ(f)互斥讉KQmutual exclusionQ?br>Jav提供?jin)在多线E程序中实现互斥的机Ӟx(chng)个对象都有一个monitorQ监视器Q,monitorcȝ所有方法在M时刻都只能被一个线E访问?br>只需要在Ҏ(gu)的头部用synchronized修饰W,׃Ҏ(gu)被同步,所以一旦有某个对象调用该方法,那么q个Ҏ(gu)׃(x)被上锁,其他对象如果同时惌问就必须{待?/p> <p>5.    如何在JavaE序中避免忙{待QP562<br>使用wait()Ҏ(gu)线E的执行挂vQ直到它收到另一个进E的消息它唤醒。就可以避免出现忙等待?/p> <p>6.    Threads6.java    RunThreads6.java</p> <p>~程l习(fn)Q?a href="http://m.tkk7.com/Files/zhuyuanxiang/JavaInTwoSemesters.zip">代码附g</a><br>3.    CounterVersionFour.java    RunCounterVersion.java    CounterThread.java</p><img src ="http://m.tkk7.com/zhuyuanxiang/aggbug/431864.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/zhuyuanxiang/" target="_blank">p?/a> 2016-10-04 16:36 <a href="http://m.tkk7.com/zhuyuanxiang/archive/2016/10/04/431864.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>《Java大学教程?amp;mdash;W?9?改进用户界面http://m.tkk7.com/zhuyuanxiang/archive/2016/10/02/431857.htmlp?/dc:creator>p?/author>Sun, 02 Oct 2016 08:10:00 GMThttp://m.tkk7.com/zhuyuanxiang/archive/2016/10/02/431857.htmlhttp://m.tkk7.com/zhuyuanxiang/comments/431857.htmlhttp://m.tkk7.com/zhuyuanxiang/archive/2016/10/02/431857.html#Feedback0http://m.tkk7.com/zhuyuanxiang/comments/commentRss/431857.htmlhttp://m.tkk7.com/zhuyuanxiang/services/trackbacks/431857.html用户与程序交互的媒介UCؓ(f)用户界面Quser interfaceQ或人机界面Qhuman-computer interfaceQ?/p>

19.2    Border接口
8个实现Border接口的标准边框类Q?br>*    BevelBorder
*    SoftBevelBorder
*    LineBorder
*    EtchedBorder
*    TitledBorder
*    MatteBorder
*    CompoundBorder
*    EmptyBorder

19.3    Icon接口

19.5    对话框窗?br>*    选项Q显CZpd按钮供用户选择一个选项?br>*    输入Q允许用户通过文本域或列表输入数据?br>*    消息Q显CZ条消息和一个OK按钮?br>*    认Q询问用户一个问题,qؓ(f){案提供认与否的按钮?/p>

消息cdQ?br>*    PLAIN_MESSAGE                            不显CZQ何图?br>*    INFORMATION_MESSAGE                昄提示图标
*    ERROR_MESSAGE                            昄错误图标
*    QUESTION_MESSAGE                    昄问题图标
*    WARNING_MESSAGE                    昄警告图标


自测题:(x)
1.    创徏下面的对话框H口Q?br>

JOptionPane.showMessageDialog(null, "Have a nice day", "Happy Message", JOptionPane.PLAIN_MESSAGE);
JOptionPane.showInputDialog(null, "Write the words \"I have made a stupid mistake\" below", "Silly Mistake", JOptionPane.ERROR_MESSAGE);
JOptionPane.showConfirmDialog(null, "Are you here?", "Silly Question", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);

2.    屏幕上颜色的创徏规则Q?br>三种基本颜色Q红、绿、蓝Q按不同比例混合q三U基本颜色就可以得到其他颜色。屏q上颜色是按照q三U颜色的不同亮度混合得到其他颜色的?/p>

3.    使用CardLayout理器的场景Q?br>适用于需要将界面分成不同的区域,q且每次只显CZ个区域的使用场景?/p>

4.    良好用户界面创徏的基本原则:(x)
保持z:(x)颜色要少、字体要、菜单不过三层?br>注意用户的特征Q针对具体的使用者设计用界面?br>考虑有障用L(fng)需求?/p>

5.    设计E序界面Ӟ为有障碍人士需要考虑的内容:(x)
视觉障碍Q需要颜色对比强烈,注意提供语音提示?br>听觉障碍Q(不知道,自己没这个感受,也没扑ֈ相关资料。)(j)

~程l习(fn)Q?a href="http://m.tkk7.com/Files/zhuyuanxiang/JavaInTwoSemesters.zip">代码附g
1.    BorderTester.java
3.    PasswordFieldTester.java
注:(x)RunTest.java试该章的所有程序?/p>

]]>
《Java大学教程?amp;mdash;W?8?高囑Ş~程http://m.tkk7.com/zhuyuanxiang/archive/2016/10/01/431854.htmlp?/dc:creator>p?/author>Sat, 01 Oct 2016 09:14:00 GMThttp://m.tkk7.com/zhuyuanxiang/archive/2016/10/01/431854.htmlhttp://m.tkk7.com/zhuyuanxiang/comments/431854.htmlhttp://m.tkk7.com/zhuyuanxiang/archive/2016/10/01/431854.html#Feedback0http://m.tkk7.com/zhuyuanxiang/comments/commentRss/431854.htmlhttp://m.tkk7.com/zhuyuanxiang/services/trackbacks/431854.html自测题:(x)
1.    在图形应用程序中为用h供选择的多U方式:(x)P433
下拉菜单Qpull-down menuQ、弹出式菜单Qpop-up menuQ、对话框H口Qdialogue windowQ、单选按钮(radio buttonQ、组合框Qcombo boxQ?/p>

2.    使用JMenuBarcRJMenucdJMenuItemcLZ拉菜单:(x)
创徏一个菜单需要有三方面内容:(x)端的菜单栏Qmenu barQ、不同的菜单QmenuQ以?qing)每个菜单都有各自的菜单(menu itemQ列表?br>菜单项d到菜单中Q再菜单添加到菜单栏中Q最后将菜单栏添加到框架中?/p>

3.    模式对话框与非模式对话框的区别:(x)P445
模式对话框处于可见状态时Q用户不可以与原框架q行交互Q只有先关闭模式对话框后才能与原框架交互?br>非模式对话框处于可见状态时Q用户仍可以与原框架q行交互Q甚臛_以直接关闭原框架Q非模式对话框也?x)与原框架一起关闭?/p>

4.    下拉菜单与弹出式菜单的用场景区别:(x)
下拉菜单适用于全局环境Q弹出式菜单适用于特定环境?/p>

5.    弹出式菜单与对话框窗口的区别QP442
不希望原框架或窗体的一部分L用于交互可使用对话框窗口?/p>

6.    多个单选按钮如何一起工作?P445
创徏一个ButtonGroup对象Q将单选按钮一个个加入到该l中Q就可以一起工作了(jin)?/p>

7.    FilecȝgetNameҎ(gu)与getPathҎ(gu)的区别:(x)P453
getName只提供了(jin)文g的名UͼgetPath提供?jin)文件的完整路径和名U?/p>

8.    如何判断JComboBox对象中的选中条目Q?br>getSelectedItem()函数可q回被选中的条目内宏V?/p>

9.    调用Notepad.exe的代码:(x)

try {
    Runtime.getRuntime().exec("C:\\Windows\\notepad.exe");
} catch (IOException ioe) {
    System.out.println(ioe);
}

       
10.    JSlider的默认范_(d)(x)默认的最值和最大值分别是0?00 ?/p>

~程l习(fn)Q?a href="http://m.tkk7.com/Files/zhuyuanxiang/JavaInTwoSemesters.zip">代码附g
1.    都实C(jin)Q没啥想修改的?br>2.    DiaglogModalDemo.java    RunDiaglogModalDemo.java
3.    囑Ş界面的就先不做了(jin)?br>4.    SliderRectangleDemo.java    RunSliderRectangleDemo.java
5.    DrawFigure.java RunDrawFigure.java
注:(x)基本的几个交互组仉已经在DrawFigure中用了(jin)Q不再做6题(sh)(jin)Q图形界面太花时间?/p>

]]>
《Java大学教程?amp;mdash;W?7?Java聚焦cL?/title><link>http://m.tkk7.com/zhuyuanxiang/archive/2016/10/01/431853.html</link><dc:creator>p?/dc:creator><author>p?/author><pubDate>Sat, 01 Oct 2016 09:12:00 GMT</pubDate><guid>http://m.tkk7.com/zhuyuanxiang/archive/2016/10/01/431853.html</guid><wfw:comment>http://m.tkk7.com/zhuyuanxiang/comments/431853.html</wfw:comment><comments>http://m.tkk7.com/zhuyuanxiang/archive/2016/10/01/431853.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/zhuyuanxiang/comments/commentRss/431853.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/zhuyuanxiang/services/trackbacks/431853.html</trackback:ping><description><![CDATA[<p>由所有聚焦类构成Q在java.util包中Q包含三个重要接口:(x)<br>*    List列表Q元素ؓ(f)单个对象Q元素在列表中是有序、可重复<br>*    Set集合Q元素ؓ(f)单个对象Q元素在集合中无序、不可重?br>*    Map映射Q元素ؓ(f)成对对象Q第一个对象是关键字,W二个对象是|(j)Q元素在映射中无序,关键字不可重?br>注:(x)JCF不能存储基本数据cd?/p> <p>17.2 List接口和ArrayListc?br>*    ArrayListc?br>*    LinkedListc?/p> <p>17.2.1    泛型QgenericsQ:(x)允许讑֮存在在特定聚焦类对象中的对象cd。可以将一个或多个cd作ؓ(f)参数发送到一个类Q或接口Q中Q亦被称为参数化cd?br>优点Q允许编译检查类型;不必q行对象cd转换Q避免生ClassCastException异常?/p> <p>17.2.2    使用接口cd代替实现cd作ؓ(f)函数的Ş?br>允许来修改实现的方式而不必修改Ş参中对象的类型?/p> <p>17.2.3    List接口的方?br>操作Q增加(addQ❶元素插在列表的末尾Q❷元素插入到列表中指定的位置?br>注:(x)使用索引插入参数到列表中Ӟ必须保证索引是当前列表中的有效位|?br>修改QsetQ、删除(deleteQ?br>列表Q显C(toStringQ、LQsizeQ、是否空QisEmptyQ?br>元素Q位|(indexOfQ返回指定对象在列表中第一ơ出现时的烦(ch)引?br>获取QgetQ、存在(containsQ?/p> <p>17.3    增强的for循环Q数l、List接口、Set接口<br>不能用于修改或删除原始集合中的元素,因ؓ(f)~译可以通过Q但是有可能DE序l果不可预测?/p> <p>17.4    Set接口和HashSetc?br>*    HashSetc?br>*    TreeSetc?/p> <p>17.4.1    Set接口的方?br>操作Q增加和修改QaddQ、删除(removeQ?br>列表Q显C(toStringQ、LQsizeQ、是否空QisEmptyQ?br>元素Q获取(getQ、存在(containsQ?/p> <p>17.4.3    Iterator接口Q用于修改和删除Set中的元素<br>使用Set对象中提供的Iterator对象?/p> <p>17.5    Map接口和HashMapc?br>*    HashMapc?br>*    TreeMapc?/p> <p>Map接口的方法:(x)<br>操作Q增加和修改QputQ、删除(removeQ?br>元素Q关键字存在QcontainsKeyQ、值存在(containsValueQ、D取(getQ?/p> <p>17.6    JCF中用自定义c?br>Ҏ(gu)重写QtoString();    equals();    hashCode()</p> <p>自测题:(x)<br>1. 三种接口的区别:(x)<br>*    List列表Q元素ؓ(f)单个对象Q元素在列表中是有序、可重复<br>*    Set集合Q元素ؓ(f)单个对象Q元素在集合中无序、不可重?br>*    Map映射Q元素ؓ(f)成对对象Q第一个对象是关键字,W二个对象是|(j)Q元素在映射中无序,关键字不可重?/p> <p>2.    Map<String, Student> javaStudents = new HashMap<String, Student>();<br>a)    允许来修改实现的方式而不必修改Ş参中对象的类型?/p> <p>b)    可以一个或多个cd作ؓ(f)参数发送到一个类Q或接口Q中Q亦被称为参数化cd?br>优点Q允许编译检查类型;不必q行对象cd转换Q避免生ClassCastException异常?/p> <p>c)    javaStudents.put("U0012345","Fadi");<br>javaStudents定义的是StudentcdQ不能接收Stringcd的数据?/p> <p>3.    StockItemc?br>a)    <br> <div id="xzptnbr" class="cnblogs_code" style="border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; border-bottom: #cccccc 1px solid; padding-bottom: 5px; padding-top: 5px; padding-left: 5px; border-left: #cccccc 1px solid; padding-right: 5px; background-color: #f5f5f5"><pre><span style="color: #0000ff">public</span><span style="color: #000000"> String toString(){ </span><span style="color: #0000ff">return</span> "("+stockNumber+","+name+","+price+","+totalStock+")\n"<span style="color: #000000">; }</span></pre></div></p> <p>b)<br> <div id="jbxrlzx" class="cnblogs_code" style="border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; border-bottom: #cccccc 1px solid; padding-bottom: 5px; padding-top: 5px; padding-left: 5px; border-left: #cccccc 1px solid; padding-right: 5px; background-color: #f5f5f5"><pre><span style="color: #0000ff">public</span> <span style="color: #0000ff">boolean</span><span style="color: #000000"> equals(Object objIn){ StockItem st </span>=<span style="color: #000000"> (StockItem) objIn; </span><span style="color: #0000ff">return</span><span style="color: #000000"> stockNumber.equals(st.stockNumber); ?/span></pre></div></p> <p>c)<br> <div id="pzlnhnn" class="cnblogs_code" style="border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; border-bottom: #cccccc 1px solid; padding-bottom: 5px; padding-top: 5px; padding-left: 5px; border-left: #cccccc 1px solid; padding-right: 5px; background-color: #f5f5f5"><pre><span style="color: #0000ff">public</span> <span style="color: #0000ff">int</span><span style="color: #000000"> hashCode(){ </span><span style="color: #0000ff">return</span><span style="color: #000000"> stockNumber.hashCode(); }</span></pre></div></p> <p>4.<br>a)<br> <div id="prjnzxn" class="cnblogs_code" style="border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; border-bottom: #cccccc 1px solid; padding-bottom: 5px; padding-top: 5px; padding-left: 5px; border-left: #cccccc 1px solid; padding-right: 5px; background-color: #f5f5f5"><pre><span style="color: #000000">String tmpString; </span><span style="color: #0000ff">boolean</span> first=<span style="color: #0000ff">true</span><span style="color: #000000">; </span><span style="color: #0000ff">if</span> (regNums.size()==0<span style="color: #000000">){ tmpString</span>="{}"<span style="color: #000000">; } </span><span style="color: #0000ff">else</span><span style="color: #000000"> { StringBuilder sb </span>= <span style="color: #0000ff">new</span><span style="color: #000000"> StringBuilder(); </span><span style="color: #0000ff">for</span><span style="color: #000000"> (String item: regNums){ </span><span style="color: #0000ff">if</span><span style="color: #000000"> (first) { sb.append(</span>"{"+<span style="color: #000000">item); first </span>= <span style="color: #0000ff">false</span><span style="color: #000000">; } </span><span style="color: #0000ff">else</span><span style="color: #000000"> { sb.append(</span>","+<span style="color: #000000">item); } } sb.append(</span>"}"<span style="color: #000000">); System.out.println(sb);</span></pre></div><br>b)<br> <div id="prbnpvd" class="cnblogs_code" style="border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; border-bottom: #cccccc 1px solid; padding-bottom: 5px; padding-top: 5px; padding-left: 5px; border-left: #cccccc 1px solid; padding-right: 5px; background-color: #f5f5f5"><pre>Iterator<String> elements =<span style="color: #000000"> regNums.iterator(); </span><span style="color: #0000ff">while</span><span style="color: #000000">(elements.hasNext()){ String item </span>=<span style="color: #000000"> elements.next(); </span><span style="color: #0000ff">if</span> (item.charAt(item.length()-1)=='S'<span style="color: #000000"> elements.remove(); }</span></pre></div></p> <p>~程l习(fn)Q?a href="http://m.tkk7.com/Files/zhuyuanxiang/JavaInTwoSemesters.zip">代码附g</a><br>1.    NameStack.java    NameStackException.java    NameStackTest.java<br>a)    因ؓ(f)需要可变大的存储I间Q而存储的对象必须是有序的Q但是是可以重复的?/p> <p>2.    CarRegister.java    CarRegisterException.java        CarRegisterTest.java<br>a)    因ؓ(f)需要可变大的存储I间Q而存储的对象可以是无序的Q但是必L一?/p> <p>3.    Book.java        Library.java    LibraryTest.java</p> <p>4.    Bank.java        BankAccount.java        BankTest.java<br>a)    HashMapc适合代替数组实现BankcR因为其可以满成对对象集合的需要,q可以确定关键字?/p><img src ="http://m.tkk7.com/zhuyuanxiang/aggbug/431853.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/zhuyuanxiang/" target="_blank">p?/a> 2016-10-01 17:12 <a href="http://m.tkk7.com/zhuyuanxiang/archive/2016/10/01/431853.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Eclipse使用q程中的l验ȝhttp://m.tkk7.com/zhuyuanxiang/archive/2016/10/01/431852.htmlp?/dc:creator>p?/author>Sat, 01 Oct 2016 07:33:00 GMThttp://m.tkk7.com/zhuyuanxiang/archive/2016/10/01/431852.htmlhttp://m.tkk7.com/zhuyuanxiang/comments/431852.htmlhttp://m.tkk7.com/zhuyuanxiang/archive/2016/10/01/431852.html#Feedback0http://m.tkk7.com/zhuyuanxiang/comments/commentRss/431852.htmlhttp://m.tkk7.com/zhuyuanxiang/services/trackbacks/431852.html

1.Eclipse中如何配|JDK的Documents和SourcesQ?/p>

“Windows”?gt; “Preferences”?gt; “Java”?gt; “Installed JREs?/p>

选中需要配|的JREQ点 “Edit”,选中 “JRE system libraries”中需要配|的JAR文g?/p>

也可以点中其中一个,?“Ctrl+A”全选?/p>

* 在Eclipse中按F1看API的帮助:(x)

?“Javadoc Location…”?gt; “Javadoc in archive”?gt; “External File”,

?“Archive path:”中配置下蝲的压~文Ӟ

?“Path within archive”中输入 “docs/api”,

然后?“Validate…”验证一下,最后点 “OK”?/p>

* 在Eclipse中看JDK的源代码Q?/p>

?“Source Attachment…”?gt; “External Location”,

?“Path:”中输入源代码压~文件所在的目录Q最后点 “OK”?/p>

]]>
《Java大学教程?amp;mdash;W?6?二维数组http://m.tkk7.com/zhuyuanxiang/archive/2016/09/29/431849.htmlp?/dc:creator>p?/author>Thu, 29 Sep 2016 13:56:00 GMThttp://m.tkk7.com/zhuyuanxiang/archive/2016/09/29/431849.htmlhttp://m.tkk7.com/zhuyuanxiang/comments/431849.htmlhttp://m.tkk7.com/zhuyuanxiang/archive/2016/09/29/431849.html#Feedback0http://m.tkk7.com/zhuyuanxiang/comments/commentRss/431849.htmlhttp://m.tkk7.com/zhuyuanxiang/services/trackbacks/431849.html多维QMulti-dimensionalQ数l维数由索引个数军_?br>常用的数l:(x)一l_(d)one-dimensionalQ数l、二l_(d)two-dimensionalQ数l?/p>

16.2    创徏二维数组
索引?开始,创徏成表|W一个烦(ch)引是行烦(ch)引,W二个烦(ch)引是列烦(ch)引?br>length属性:(x)W一个烦(ch)引的长度?/p>

16.3    初始化二l数l:(x)数值用逗号分隔Q行用大括号分隔?/p>

16.4    不规则数l(ragged arrayQ:(x)可变列数的二l数l?br>如果只声明但不初始化不规则二l数l,必须声明行数Q第一索引Q,可以不声明列敎ͼW二索引Q?br>问:(x)不规则数l只能是二维吗?
{:(x)不规则数l可以是多维Qƈ且都是必d明第一索引可以了(jin)?/p>

自测题:(x)
1. 考虑下列数组声明语句Q该数组用于存储学生成W的集?br>

char [][] grades=new char[4][20];

a)    该数l有几个l度Q?br>2?/p>

b)    grades.length的值是多少Q?br>4

c)    grades[0].length的值是多少Q?br>20

d)    W一l第一个学生的成W为B

grades[0][0]='B';

2.    声明合适的数组
a)    q球敎ͼ(x)20个球队,38场比?br>

int scores[20][38];

b)    座位Q?0行位,每行20个?br>boolean seats[70][20];

3.    记录火R晚点情况
a)    一q中W几周,每周中第几天晚点ơ数

int late[52][7];

b)

int daysNum=0;
for (int i=0;i<52;i++)
    for (int j=0;j<7;j++)
        if (late[i][j]==2)
            daysNum++;

4.
a)    规则二维数组与不规则二维数组的区别:(x)P390
列数Q第二烦(ch)引)(j)是固定的q是可变的?

b)    不规则二l数ltriangle

int [][] triangle = new int[4][];
for (int i=0;i<4;i++)
    triangle[i]=new int[i+1];

c)    triangle中的最大?br>

int biggestNum;
biggestNum=triangle[0][0];
for (int i=1;i<4;i++)
    for (int j=0;j<triangle[i].length;j++)
        if (biggestNum < triangle[i][j])
            biggestNum=triangle[i][j];

           
5.    |格布局{略QP397
允许为将要添加的元素讑֮行数和列数。排列方式由pȝ讑֮Q默认ؓ(f)从左到右Q从上到下?

~程l习(fn)Q?a href="http://m.tkk7.com/Files/zhuyuanxiang/JavaInTwoSemesters.zip">代码附g
1.    VarNoughtsAndCrosses.java        RunVarNoughtsAndCrosses.java
2.    CheckTrain.java        CheckTrainTest.java    InvalidDateException.java
3.    TimeTable.java        TimeTableException.java    TimeTableTest.java   
    TimeTableGUI.java    RunTimeTableGUI.java        做界面太消耗时间了(jin)Q暂时不做了(jin)?/p>

]]>
《Java大学教程?amp;mdash;W?5?异常http://m.tkk7.com/zhuyuanxiang/archive/2016/09/03/431737.htmlp?/dc:creator>p?/author>Sat, 03 Sep 2016 14:46:00 GMThttp://m.tkk7.com/zhuyuanxiang/archive/2016/09/03/431737.htmlhttp://m.tkk7.com/zhuyuanxiang/comments/431737.htmlhttp://m.tkk7.com/zhuyuanxiang/archive/2016/09/03/431737.html#Feedback0http://m.tkk7.com/zhuyuanxiang/comments/commentRss/431737.htmlhttp://m.tkk7.com/zhuyuanxiang/services/trackbacks/431737.html自测题:(x)
1.    什么是异常QP357
异常是在E序生命周期内出现的事gQ它?x)导致程序行Z可靠?/p>

2. 已检查异常和未检查异常的区别是什么?P359
在编译器允许E序被编译通过前,要求E序员必ȝ写代码,告诉~译器如何处理由特定指o(h)产生的已(g)查异常?br>但是~译器对可能产生的未(g)查异常ƈ不认为存在潜在的错误可能Q也׃?x)要求程序员必须~写代码处理Q只是希望程序员在编写代码时尽量避免出现这cd常?/p>

已检查异常:(x)FileNotFoundException, IOException, Exception
未检查异常:(x)NegativeArraySizeException, NumberFormatException, ArrayIndexOutOfBoundsException, RuntimeException

3.
a)    抛出异常QP357 每种D异常的事件类型都对应Java中一个预定义的异常类。当出现某个事gӞJavaq行环境?yu)׃?x)判断出现异常的类型,
q且生成一个该异常cȝ对象。这个过E称为抛?throwing)异常?/p>

b)    声明异常QP361 是指为给定的Ҏ(gu)做一个标讎ͼ含义是该Ҏ(gu)可能?x)生成一个异常类的对象?/p>

c)    捕捉异常QP364 在某个位|可以控制异常对象,而不是仅仅抛出它们。在Java中,q个q程UCؓ(f)捕捉异常(catching an exception)?/p>

4.    finally语句的作用是什么?P367
无论tryE序块中发生M情况Q都希望在程序终止运行前执行一些特别的指o(h)Q处理一些清理工作,因此需要在try...catchE序块的最后部分声明finallyE序块?/p>

5.
a)    不会(x)~译错误
b)    Integer.parseInt()和arrayIn[posIn]?x)抛出异?br>c)    输入字母Q导致NumberFormatExceptionQ输入超q数l边界的C(x)DArrayIndexOutOfBoundsException?/p>

6.    什么情况下需要定义自q异常c?P378QP380
从构造函C报告错误的唯一Ҏ(gu)是用异常。但是抛出异帔R用异常对象Ҏ(gu)使程序无法通过名称知道问题的原因,
q需要借助于getMessageҎ(gu)来补充信息;q且用于处理特定异常对象的catch语句却将捕捉所有被抛出的异常,
因ؓ(f)所有的异常都是从通用异常c?Exception)z的。ؓ(f)?jin)希望用与处理构造函数异怸同的方式来处理其他异常,
因此得创徏自己的异常类?/p>

~程l习(fn)Q?a href="http://m.tkk7.com/Files/zhuyuanxiang/JavaInTwoSemesters.zip">代码附g
1.    ExceptionQ5.java

2.   
a)    ScannerTester.java
b)    EasyScannerPlus.java
c)    EasyScannerPlusTester.java

3.    Hostel.java,    ObjectList.java,    Payment.java,    PaymentList.java,    Tenant.java,    TenantList.java,    NegativeSizeException.java



]]>
《Java大学教程?amp;mdash;W?3?E序?/title><link>http://m.tkk7.com/zhuyuanxiang/archive/2016/09/02/431735.html</link><dc:creator>p?/dc:creator><author>p?/author><pubDate>Fri, 02 Sep 2016 15:23:00 GMT</pubDate><guid>http://m.tkk7.com/zhuyuanxiang/archive/2016/09/02/431735.html</guid><wfw:comment>http://m.tkk7.com/zhuyuanxiang/comments/431735.html</wfw:comment><comments>http://m.tkk7.com/zhuyuanxiang/archive/2016/09/02/431735.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/zhuyuanxiang/comments/commentRss/431735.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/zhuyuanxiang/services/trackbacks/431735.html</trackback:ping><description><![CDATA[<p>接下来,是第二学期的内容Q也是相Ҏ(gu)入的Java学习(fn)?/p> <p> </p> <p>自测题:(x)<br>1.    在类的开发过E中Q程序包的作用是什么?P321<br>E序包是Z(jin)方便定位和部|类Q还可以避免来cM间出现名U冲H?/p> <p>2.    哪些import语句合法Q哪些非法?<br> <div id="nfzjndj" class="cnblogs_code" style="border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; border-bottom: #cccccc 1px solid; padding-bottom: 5px; padding-top: 5px; padding-left: 5px; border-left: #cccccc 1px solid; padding-right: 5px; background-color: #f5f5f5"><pre><span style="color: #0000ff">import</span> java.*; <span style="color: #008000">//</span><span style="color: #008000"> 书上说错Q代码中承认正确。因为java是个包,只是一个没有Q何类的包?/span> <span style="color: #0000ff">import</span> java.swing.*; <span style="color: #008000">//</span><span style="color: #008000"> 错。java下没有swingq个包?/span> <span style="color: #0000ff">import</span> java.awt.JButton; <span style="color: #008000">//</span><span style="color: #008000"> 错。java.awt包下没有JButtoncR?/span> <span style="color: #0000ff">import</span> javax.swing.JButton; <span style="color: #008000">//</span><span style="color: #008000"> 寏V?/span> <span style="color: #0000ff">import</span> javaa.text.*.*; <span style="color: #008000">//</span><span style="color: #008000"> 错。不能有两个*</span> <span style="color: #0000ff">import</span> javax.swing.*; <span style="color: #008000">//</span><span style="color: #008000"> 寏V?/span></pre></div> <p>3.    package作用域的含义。P323<br>对类所在程序包中的其他cd见?/p> <p>4.<br>a)    三种Ҏ(gu)如下Q?br>(1)    import javax.swing.*;<br>(2)    import javax.swing.JButton;<br>(3)    private javax.swing.JButton myButton;<br>b)<br> <div id="prtpzxv" class="cnblogs_code" style="border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; border-bottom: #cccccc 1px solid; padding-bottom: 5px; padding-top: 5px; padding-left: 5px; border-left: #cccccc 1px solid; padding-right: 5px; background-color: #f5f5f5"><pre><span style="color: #0000ff">package</span><span style="color: #000000"> gameApp; </span><span style="color: #0000ff">import</span><span style="color: #000000"> javax.swing.JButton; </span><span style="color: #0000ff">class</span><span style="color: #000000"> GameController { </span><span style="color: #0000ff">private</span><span style="color: #000000"> JButton myButton; </span><span style="color: #008000">//</span><span style="color: #008000"> more code here</span> }</pre></div> <p>5.    所有程序包到javaBook目录?br>a)    set classpath=c:\jCreator\myProjects\javaBook<br>b)    java -cp c:jCreator\myProjects\javaBook</p> <p>~程l习(fn)Q?a href="http://m.tkk7.com/Files/zhuyuanxiang/JavaInTwoSemesters.zip">代码附g</a><br>1. package hostelApp;<br>注:(x)已经使用包了(jin)Q就不再修改Q只l出处理Ҏ(gu)?/p> <p>2. RunHostelFromPackage.java</p> <p>3.    LotteryNumber.java</p><img src ="http://m.tkk7.com/zhuyuanxiang/aggbug/431735.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/zhuyuanxiang/" target="_blank">p?/a> 2016-09-02 23:23 <a href="http://m.tkk7.com/zhuyuanxiang/archive/2016/09/02/431735.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>《Java大学教程?amp;mdash;W?4?抽象、承和接口http://m.tkk7.com/zhuyuanxiang/archive/2016/09/02/431733.htmlp?/dc:creator>p?/author>Fri, 02 Sep 2016 15:17:00 GMThttp://m.tkk7.com/zhuyuanxiang/archive/2016/09/02/431733.htmlhttp://m.tkk7.com/zhuyuanxiang/comments/431733.htmlhttp://m.tkk7.com/zhuyuanxiang/archive/2016/09/02/431733.html#Feedback0http://m.tkk7.com/zhuyuanxiang/comments/commentRss/431733.htmlhttp://m.tkk7.com/zhuyuanxiang/services/trackbacks/431733.html自测题:(x)
1.    解释抽象和抽象数据类型的概念。P333
抽象的概忉|仅仅x(chng)对象可以完成什么工作,而不必担?j)如何完成工作的l节?br>cL杉K常被称为抽象数据类型。因cL据暴露给用户的所有信息仅仅是Ҏ(gu)的描qͼ输入、输出和行ؓ(f)Q和数据的相关信息(属性)(j)?/p>

2.    动态(q行Ӟ(j)l定和静(rn)态(~译Ӟ(j)l定的区别。P335
~译时绑?compile-time binding)或静(rn)态绑?static binding)技术:(x)
当一个类的代码被~译后,该类的每个方法的代码都会(x)随之~译Q编译器确保该cȝ对象接收一个调用其Ҏ(gu)的消息时Q?br>E序都会(x)跌{到该Ҏ(gu)的代码的存储位置--该方法的指o(h)会(x)被执行,之后E序返回最初的位置?/p>

q行时绑?run-time binding)或动态绑?dynamic binding)技术:(x)
每次创徏一个新的对象时Q必记录其Ҏ(gu)存储位置的信息;q样对于调用哪个Ҏ(gu)的决定可以推q到q行时决定?/p>

3.
a)    解释Java中接口和适配器的区别?br>接口Q?P336)是一个类的所有方法都声明为抽象方法。因此实现接口时必须接口的所有方法编码?br>适配器:(x)(adapter,P348)是一个特D的c,实现?jin)接口的所有方法,扮演cM接口之间的中介角Ԍl承适配器类׃必ؓ(f)所有的Ҏ(gu)~码?/p>

b)

public interface SomeInterface{
    public void method1();
    public int method2();
}

public SomeAdapter extends SomeInterface{
    public void method1(){    }
    pupblic int method2(){    }
}

4.    解释内部cȝ作用Q描q内部类的用方法。P349
在Java中一个类只允许承一个超c,不能l承多个类Q多l承Qmultiple inheritanceQ。ؓ(f)?jin)承业务类Q又能够使用适配器类Q可以借助内部cL实现?br>卛_其他cȝ内部创徏一个类Q这个内部类l承适配器类。这个内部类不能为程序中其他cL务,从而实现更好地装?/p>

5.    W?章的OblongcȝtoStringҎ(gu)?br>

public String toString(){
    return "Length:"+length+",\t"+"Height:"+height;
}

~程l习(fn)Q?a href="http://m.tkk7.com/Files/zhuyuanxiang/JavaInTwoSemesters.zip">代码附g
1.    RedCircle.java

2.
a)    Checkable.java
b)    BankAccount.java   
c)    RunAccount.java       
d)    Oblong.java        OblongTester.java
注:(x)length和heigth属性本w就定义为doubleQؓ(f)何还要整数呢Q所以我只考虑?jin)非负的问题?/p>

3.    DrawRectangle.java            DrawRectangleWithAdapter.java
    RunDrawRectangle.java        RanDrawRectangleWithAdapter.java

4.    SomeGraphicsClass.java    // q个cMؓ(f)?jin)给W?题服务,部分代码修改?jin),有些专属部分攑֜子类中定义?br>    Question4.java
   
5.    Question5.java



]]>
《Java大学教程?amp;mdash;W?2?案例研究--W?部分http://m.tkk7.com/zhuyuanxiang/archive/2016/09/01/431725.htmlp?/dc:creator>p?/author>Thu, 01 Sep 2016 15:09:00 GMThttp://m.tkk7.com/zhuyuanxiang/archive/2016/09/01/431725.htmlhttp://m.tkk7.com/zhuyuanxiang/comments/431725.htmlhttp://m.tkk7.com/zhuyuanxiang/archive/2016/09/01/431725.html#Feedback0http://m.tkk7.com/zhuyuanxiang/comments/commentRss/431725.htmlhttp://m.tkk7.com/zhuyuanxiang/services/trackbacks/431725.html本章是上一章的延箋(hu)Q主要是用GUI实现?jin)控制界面?/p>

~程l习(fn)Q?a href="http://m.tkk7.com/Files/zhuyuanxiang/JavaInTwoSemesters.zip">代码附g
Hostel.java
1.    正确q行
2.    Runhostel.java
3.    searchButton



]]>
《Java大学教程?amp;mdash;W?1?案例研究--W?部分http://m.tkk7.com/zhuyuanxiang/archive/2016/09/01/431724.htmlp?/dc:creator>p?/author>Thu, 01 Sep 2016 15:06:00 GMThttp://m.tkk7.com/zhuyuanxiang/archive/2016/09/01/431724.htmlhttp://m.tkk7.com/zhuyuanxiang/comments/431724.htmlhttp://m.tkk7.com/zhuyuanxiang/archive/2016/09/01/431724.html#Feedback0http://m.tkk7.com/zhuyuanxiang/comments/commentRss/431724.htmlhttp://m.tkk7.com/zhuyuanxiang/services/trackbacks/431724.html自测题:(x)
1.    ?1-1的UML设计中各个类之间的关pR?br>Hostel与TenantList是关联关p;
TenantList和PaymentList与ObjectList是泛化关pRTenantList和PaymentList是ObjectList的子c;
TenantList与Tenant是聚合关p;
PaymentList与Payment是聚合关p;
Tenant与PaymentList是关联关pR?/p>

注:(x)不太明白什么时候描q关p,可能用来描述的还是业务上的关pR?/p>

2.    Z么开发一个通用的ObjectListcR?br>该系l需要开发两U列表,PaymentList和TenantListQؓ(f)?jin)避免重复开发代码,因此开发了(jin)一个通用的ObjectListc,
然后通过l承Ҏ(gu)分别为PaymentList和TenantListd特定的属性和Ҏ(gu)?/p>

3.    在UMLcd中如何记录类的属性?
cd性的语法Q?br>[可见性]属性名[Q类型][=初始值][{属性字W串}]
Q?Q可见性:(x)cM属性的可见性主要包括公有(PublicQ、私有(PrivateQ和受保护(ProtectedQ?br>在UML中,用?”表辑օ有类型,用?”表辄有类型,而用?”表辑֏保护cd。UML的类中不存在默认的可见性,
如果没有昄M一U符PpC没有定义该属性的可见性?br>Q?Q属性名Q每个属性都必须有一个名字以区别于类中的其他属性,是类的一个特性。属性名由描q所属类
的特性的名词或名词短语组成。按照UML的约定,单字属性名写。如果属性名包含多个单词Q这些单词要合ƈQ?br>且除?jin)第一个单词外其余单词的首字母要大写?br>Q?Q类型:(x)说明属性的数据cd。在cȝ图标里,可以指定每个属性值的cd。可能的cd包括字符?br>QstringQ、Q点型QfloatQ、整型(intQ和布尔型(booleanQ,以及(qing)其他的枚丄型。指明类型时Q需要在
属性值后面加上类型名Q中间用冒号隔开。还可以为属性指定一个默认倹{?br>Q?Q初始|(x)Z(jin)保护pȝ的完整性,防止漏掉取值或被非法的值破坏系l的完整性,可以讑֮属性的初始倹{?br>Q?Q属性字W串Q属性字W串用来指定关于属性的其他信息Q例如,某个属性应该是怹的。Q何希望添?br>在属性定义字W串g又没有合适地方可以加入的规则Q都可以攑֜属性字W串里?/p>

4.    如何改进本章案例研究中开发的应用E序?br>Q?Q用图形化用户界面。下章会(x)完成?br>Q?Q其他可以改的地方太多了(jin)Q就不扩展了(jin)?/p>

~程l习(fn)Q?a href="http://m.tkk7.com/Files/zhuyuanxiang/JavaInTwoSemesters.zip">代码附g
1.    PaymentTester.java
2.    PaymentTester.java
3.    TenantTester.java
4.    TenantListTester.java
5.    TenantListTester.java
6.    ...



]]>
《Java大学教程?amp;mdash;W?0?囑Ş和事仉动程?/title><link>http://m.tkk7.com/zhuyuanxiang/archive/2016/08/30/431711.html</link><dc:creator>p?/dc:creator><author>p?/author><pubDate>Tue, 30 Aug 2016 13:38:00 GMT</pubDate><guid>http://m.tkk7.com/zhuyuanxiang/archive/2016/08/30/431711.html</guid><wfw:comment>http://m.tkk7.com/zhuyuanxiang/comments/431711.html</wfw:comment><comments>http://m.tkk7.com/zhuyuanxiang/archive/2016/08/30/431711.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/zhuyuanxiang/comments/commentRss/431711.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/zhuyuanxiang/services/trackbacks/431711.html</trackback:ping><description><![CDATA[<p>10.2 SwingE序?br>AWT(Abstract Window Toolkit): 抽象H口工具集?br>依赖于本地操作系l的lg被称为重量(Heavy Weight)lgQ因为它们都?x)大量用系l资源?br>lg名称有Frame(框架)、Button(按钮)、Label(标签){?/p> <p>Swing: ZAWTcL建?br>几乎所有的lg都用Java~写Q而且所有代码都是SwingE序包的一部分。用Java语言~写的组件称量(Light Weight)lg?br>lg名称都以J开_(d)如JFrame、JButton、JLabel{?/p> <p>SwingE序包和AWTE序包都是Java基础c?Java Foundation Class, JFC)中的一部分?/p> <p>补充说明Q首先轻量与重量是一个相对的概念Q主要是对应用框架用方便性和所提供服务Ҏ(gu)等斚w做比较的?br>轻量U组仉是纯Java代码开发的Q具有良好的q_UL性,不依赖于操作pȝ的支持,在所有的q_上表CP不直接用操作系l的资源Q?br>当然操作pȝ的资源依然是要占用的Q只是系l资源的理都由lg完成Q用组件的E序员(sh)直接与操作系l的资源打交道?br>重量U组件则每个c都?x)与操作pȝ中的一个对{资源相对应?/p> <p>10.4 Java中的事g处理机制(event-handling)<br>事g处理?event-handler)</p> <p><br>自测题:(x)<br>1。轻量lg与重量lg的不同?br>依赖于本地操作系l的lg被称为重量lgQ因为它们都?x)大量用系l资源?br>全部使用Java语言~写的组件称量lgQ它们透过AWT使用pȝ资源Q不?x)直接管理系l资源?/p> <p>2。布局理器的作用</p> <p>3。FlowLayout理器与BorderLayout理器的不同</p> <p>4?br>a)    JFramelg的布局{略</p> <p>b)    JPanellg的布局{略</p> <p>5。一个名为SomeClass的类h两个按钮lgQ这两个按钮lg被按下时会(x)采取特定的动作?br>a)    必要的import语句?br>import java.awt.*;<br>import java.awt.event.*;</p> <p>import javax.swing.*;</p> <p>b)    正确的头部语句?br>public class SomeClass extends JFrame implements ActionListener</p> <p>c)    创徏按钮需要的Swinglg?br>JButton</p> <p>d)    Ҏ(gu)钮监听鼠标单M件?br>button1.addActionListener(this);</p> <p>e)    哪个Ҏ(gu)可以军_鼠标单击按钮旉取行动?br>public void actionPerformed(ActionEvent e)</p> <p>注:(x) 实现可以参看PushMe.java</p> <p>~程l习(fn)Q?a href="http://m.tkk7.com/Files/zhuyuanxiang/JavaInTwoSemesters.zip">代码附g</a><br>1.    PushMe.java    RunPushMe.java<br>2.    ChangingFacesGUI.java    <br> q个我用的是Swing Designer完成的界面设?手工修改?jin)部分代码?br> 优点Q比原始版本z?br> ~点Q用了(jin)anoynomous classQ本书到q里q没有讲解;q用?jin)enumcdQ也是要C的后面才Ԍq样做就是ؓ(f)?jin)更好的?gu)学习(fn)<br>3.    MetricConverterGUI.java<br> 实现?jin)摄氏温度与华氏温度的{?br> 最后加?jin)两个Panel是ؓ(f)?jin)对齐前面的Panel<br>4.    ReactorTesterGUI.java<br> 也是采用Swing Designer完成的界面设计,q增加了(jin)MessageBox的用?br> <br> 补充1QMessageBox需要一个父lgQ而ReactorTesterGUIq没有在构造函C实例化,所以不能用?br> 而能使用的是contentPaneQ这个是在构造函C实例化了(jin)Qƈ且在使用之前已经声明?jin)?br> 父组件是Z定MessageBox昄的位|,l果是MessageBox?x)显C在父组件的中间位置?br> <br> 补充2Q因为ReactorTesterGUI在构造函C是无法实例化的,所以生成的lgq没有直接放在frame的panel中,而是攑֜contentPane中?br> contentPane是在ReactorTesterGUI的类中声明了(jin)Q再在构造函C用setContentPane(contentPane)来替换JFrame自己的rootPane?/p><img src ="http://m.tkk7.com/zhuyuanxiang/aggbug/431711.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/zhuyuanxiang/" target="_blank">p?/a> 2016-08-30 21:38 <a href="http://m.tkk7.com/zhuyuanxiang/archive/2016/08/30/431711.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>《Java大学教程?amp;mdash;W??软g质量http://m.tkk7.com/zhuyuanxiang/archive/2016/08/30/431710.htmlp?/dc:creator>p?/author>Tue, 30 Aug 2016 13:37:00 GMThttp://m.tkk7.com/zhuyuanxiang/archive/2016/08/30/431710.htmlhttp://m.tkk7.com/zhuyuanxiang/comments/431710.htmlhttp://m.tkk7.com/zhuyuanxiang/archive/2016/08/30/431710.html#Feedback0http://m.tkk7.com/zhuyuanxiang/comments/commentRss/431710.htmlhttp://m.tkk7.com/zhuyuanxiang/services/trackbacks/431710.html软g质量Q可l护性、可靠性、健壮性、可用性?/p>

9.3 可维护?br>pȝl护(maintaining)是指Ҏ(gu)需求的变化更新现有pȝ的过E?/p>

9.3.1    装的重要?br>q锁反应Q对pȝ某一部分的改变可能会(x)对系l的其余部分产生影响Q导致系l错误?br>面向对象的封装原则保证了(jin)面向蝗程序易于维护,因ؓ(f)装原则减弱?jin)连锁反应的影响Q?br>每个对象都应该在对象内部包含工作的全部细节;所有的数据都应该隐藏在对象内部Q保证对象的M改变都不?x)?jing)响到pȝ的其余部分?/p>

9.3.2    文档
在开发面向对象程序的时候,设计文档应该包含以下内容Q?br>*    完整的类?br>*    清晰的方法定义(参数和返回类型,必要时包含伪代码Q?/p>

代码内文档应当包含以下信息:(x)
*    用以描述代码含义的注释信?br>*    有意义的数据名称
*    用常量替换固定的数字
*    一致清晰的~排格式

9.3.3    JavaDoc
常用标签Q@author, @version, @param, @return

9.4        可靠?br>~译旉?compile-time error)Q没有按照语法规则编写合法的E序?br>q行旉?run-time error)Q程序没有完成指定的工作。可能是需求不W,可能是逻辑错误Q或者两者兼而有之?br>试错误Q从单元试开始,然后q行集成试?/p>

9.4.1    单元试(unit testingQ测试独立的c?
不要在原始类中添加mainҎ(gu)q行试Q而是单独构造一个包含mainҎ(gu)的类UCؓ(f)原始cȝ驱动?driver)Q?br>q个驱动器类只是完成对特定类的操作,不会(x)q扰的类?br>如果要进行单元测试的cM赖于其他的类Q而被依赖的类当前无法获得Q那么可以开发一个哑元类(dummy class)用于替换无法获得的类?br>哑元cLZ(jin)完成试而开发的模拟真实cȝcR?/p>

9.4.2    集成试(integrating testingQ测试组成应用的所有的c?
在完成程序中每个cȝ独立试后,需要将它们l合Q进行综合测试,目的是保证类之间的接口可以正常地工作?br>Z(jin)q行接口试需要对所有类q行重编译。防止类间的接口不一致?/p>

9.4.3    黑盒试(black box testing)
把测试组件看作不透明的盒子,卛_略组件的代码l节Q构造测试的输入数据时可以分成多个等L(fng)?/p>

9.4.4    白盒试(white box testing)
把测试组件看作透明的盒子,构造测试集Q尽可能覆盖lg所有可能的执行路径?/p>

9.4.5    试日志
试日志是记录系l开发过E中q行试的文档?/p>

9.5        健壮?br>一个程序意外地l止q行被称为崩?crash)?br>组件推向极限的试Ҏ(gu)UCؓ(f)压力试(stress testing)?br>当违反规则时E序?x)报告异?exception)Q报告异常的q程UCؓ(f)抛出异常(throwing exception)?/p>

9.6        可用?usability)
E序的可用性是指应用程序的使用者与E序交互q程的容易度?/p>

9.6.1    文本格式?br>转义W:(x)\n, \t, \", \', \\

9.6.2    囑Ş用户界面
?友好的,易于用户操作的?/p>

自测题:(x)
1。解释什么是l承Q?br>l承是指在类之间׃n属性和Ҏ(gu)。承关pL一U层ơ关p,也被UCؓ(f)a-kind-of关系?/p>

2。在UMLcd中如何描q承关p?
用空?j)的三角形表C承关p,三角形的指的是基类?/p>

3。在Java中,使用哪个关键字声明一个类是另一个类的子c?
class 子类 extends 基类Q用extends关键字代表承关pR?/p>

4。区分方法重写和Ҏ(gu)重蝲的不同?br>多态性的实现Q方法重载和Ҏ(gu)重写?br>Ҏ(gu)重蝲指同一cM可以存在h相同名称的不同方法,通过它们的参数列表加以区分?br>Ҏ(gu)重写指超cM的方法,可以在子cM重写?br>不同的方法的怺区分Q在Ҏ(gu)重蝲中通过不同的参数列表相互区分,在方法重写中通过隶属的对象的不同怺区分?/p>

5。解释什么是cd转换Qƈ描述Java中类型{换是如何实现的?br>强制cd转换(typecast)Q强制一个数据从一U数据类型{换ؓ(f)另一U数据类型?br>通过在待转换的数据前加一对含有新cd名称的括号实现?/p>

6。解释abstract和final修饰W分别应用于cdҎ(gu)时的作用?br>abstract class表示q个cMؓ(f)抽象c,不能创徏对象Q只能作为其他类的基cR?br>abstract method表示q个Ҏ(gu)是抽象方法,没有实现Q子cd果要实例化,必须重写q个Ҏ(gu)?br>final class表示q个cMؓ(f)最l类Q不能被l承?br>final method表示q个Ҏ(gu)是最l的Ҏ(gu)Q子cM能重写?/p>

~程l习(fn)Q?a href="http://m.tkk7.com/Files/zhuyuanxiang/JavaInTwoSemesters.zip">代码附g
1.    QualityQ2.java
2.    Reactor.java
3.    EscapeSequence.java
4.    FindCost3.java
b)    说实话,q么单的输出Q真不知道还需要怎样改善信息的布局?nbsp;      



]]>
《Java大学教程?amp;mdash;W??通过l承扩展c?/title><link>http://m.tkk7.com/zhuyuanxiang/archive/2016/08/30/431709.html</link><dc:creator>p?/dc:creator><author>p?/author><pubDate>Tue, 30 Aug 2016 13:36:00 GMT</pubDate><guid>http://m.tkk7.com/zhuyuanxiang/archive/2016/08/30/431709.html</guid><wfw:comment>http://m.tkk7.com/zhuyuanxiang/comments/431709.html</wfw:comment><comments>http://m.tkk7.com/zhuyuanxiang/archive/2016/08/30/431709.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/zhuyuanxiang/comments/commentRss/431709.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/zhuyuanxiang/services/trackbacks/431709.html</trackback:ping><description><![CDATA[<p>8.2    l承(inheritance)Q?br>l承是指在类之间׃n属性和Ҏ(gu)。承关pL一U层ơ关pR在l承关系中位于顶部的cȝc(或基c?Q位于下面的cȝ为子c(或派生类Q?br>cd转换(type casting)Q是强制一个数据从一U类型{换ؓ(f)另一U类型。方法是通过在待转换的数据前加一对含有新cd名称的括号实现?/p> <p>8.4    Ҏ(gu)重写(method overriding)<br>多态性的实现Q方法重载和Ҏ(gu)重写?br>Ҏ(gu)重蝲指同一cM可以存在h相同名称的不同方法,通过它们的参数列表加以区分?br>Ҏ(gu)重写指超cM的方法,可以在子cM重写?/p> <p>不同的方法:(x)在方法重载中通过不同的参数列表相互区分,在方法重写中通过隶属的对象的不同怺区分?/p> <p>8.5    abstract<br>抽象c?abstract class)Q不可以创徏其对象,仅能作ؓ(f)创徏其他cȝ基类?br>抽象Ҏ(gu)(abstract method)Q强制所有的子类必须实现该方法?br>注:(x)如果子类声明成abstract classQ那么从类l承来的abstract method也可以不实现?/p> <p>8.6 final<br>(final class)Q该cM能被l承?br>(final method)Q该Ҏ(gu)不能被重写?br>注:(x)(final variable)Q就是常量,与面向对象无兟?/p> <p>8.8    包装cdautoboxing<br>对于每个基本cdQJava都有一个对应的c,q个cd数据cd包装其中Q称为包装类?/p> <p><br>自测题:(x)<br>1。解释什么是l承Q?br>l承是指在类之间׃n属性和Ҏ(gu)。承关pL一U层ơ关p,也被UCؓ(f)a-kind-of关系?/p> <p>2。在UMLcd中如何描q承关p?<br>用空?j)的三角形表C承关p,三角形的指的是基类?/p> <p>3。在Java中,使用哪个关键字声明一个类是另一个类的子c?<br>class 子类 extends 基类Q用extends关键字代表承关pR?/p> <p>4。区分方法重写和Ҏ(gu)重蝲的不同?br>多态性的实现Q方法重载和Ҏ(gu)重写?br>Ҏ(gu)重蝲指同一cM可以存在h相同名称的不同方法,通过它们的参数列表加以区分?br>Ҏ(gu)重写指超cM的方法,可以在子cM重写?br>不同的方法的怺区分Q在Ҏ(gu)重蝲中通过不同的参数列表相互区分,在方法重写中通过隶属的对象的不同怺区分?/p> <p>5。解释什么是cd转换Qƈ描述Java中类型{换是如何实现的?br>强制cd转换(typecast)Q强制一个数据从一U数据类型{换ؓ(f)另一U数据类型?br>通过在待转换的数据前加一对含有新cd名称的括号实现?/p> <p>6。解释abstract和final修饰W分别应用于cdҎ(gu)时的作用?br>abstract class表示q个cMؓ(f)抽象c,不能创徏对象Q只能作为其他类的基cR?br>abstract method表示q个Ҏ(gu)是抽象方法,没有实现Q子cd果要实例化,必须重写q个Ҏ(gu)?br>final class表示q个cMؓ(f)最l类Q不能被l承?br>final method表示q个Ҏ(gu)是最l的Ҏ(gu)Q子cM能重写?/p> <p>~程l习(fn)Q?a href="http://m.tkk7.com/Files/zhuyuanxiang/JavaInTwoSemesters.zip">代码附g</a><br>1.    ExtendedOblong.java    ExtendedOblongTester.java<br>2.    Vehicle.java        SecondHandVehicle.java        </p><img src ="http://m.tkk7.com/zhuyuanxiang/aggbug/431709.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/zhuyuanxiang/" target="_blank">p?/a> 2016-08-30 21:36 <a href="http://m.tkk7.com/zhuyuanxiang/archive/2016/08/30/431709.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>《Java大学教程?amp;mdash;W??cȝ实现http://m.tkk7.com/zhuyuanxiang/archive/2016/08/30/431708.htmlp?/dc:creator>p?/author>Tue, 30 Aug 2016 13:31:00 GMThttp://m.tkk7.com/zhuyuanxiang/archive/2016/08/30/431708.htmlhttp://m.tkk7.com/zhuyuanxiang/comments/431708.htmlhttp://m.tkk7.com/zhuyuanxiang/archive/2016/08/30/431708.html#Feedback0http://m.tkk7.com/zhuyuanxiang/comments/commentRss/431708.htmlhttp://m.tkk7.com/zhuyuanxiang/services/trackbacks/431708.htmll一建模语言QUMLQ?br>用方框代表类。方框被分成3部分Q第一部分是类名,W二部分是类的属性,W三部分是类的方法?br>cȝ属性(属性名Uͼ(x)属性类型)(j)Q?br>cȝҎ(gu)Q方法名Uͼ参数cdQ:(x)q回值类型)(j)?br>?rn)态的cȝ属性和Ҏ(gu)名习(fn)惯加下划Uѝ?/p>

属性的权限Q?br>*    public:        属性或Ҏ(gu)可以从外部被讉KQ?br>*    private:    属性或Ҏ(gu)不可以被其他cȝҎ(gu)讉KQ只能在cȝ内部被访问,从而实现数据封装?/p>

7.3 static关键?br>声明为static的属性ؓ(f)cȝ属性。对该属性的M改变都是对类的对象的改变?br>声明为static的方法ؓ(f)cȝҎ(gu)。可以不类实例化ؓ(f)对象时就可以讉K?/p>

7.6 传递对象参?br>对象可以作ؓ(f)参数传递,实际上是把对象的引用传递给Ҏ(gu)Q从而可以通过引用修改对象的倹{?/p>

7.7 聚集c?br>包含许多相同cd的数据项时称?collection)cR?br>当一个对象本w又包含其他对象ӞUCؓ(f)聚合关系(aggregation)。聚合关p通常指部分与整体之间的关p,在UML中用I心(j)菱Ş表示?br>l成(composition)是一U更强的聚合关系。通常指整体实际上依赖于部分,在UML中用实心(j)菱Ş表示?/p>

自测题:(x)
1. UML图中Q各部分表示的内容?
{:(x)A是类名;B是属性名U和属性类型;C是方法名U、参数类型和q回值类型?/p>

2。解释public和private在访问属性和Ҏ(gu)上的区别?br>{:(x)public属性和Ҏ(gu)可以从类的外部访问;private属性和Ҏ(gu)只能在类的内部访问?/p>

3。static的作用是什么?
{:(x)static属性表CZؓ(f)cȝ属性,可以直接使用cd讉KQ对所有的对象都是共有的?br>staticҎ(gu)表示为类的方法,可以不实例化cMؓ(f)对象时就可以讉K?/p>

4。代码输出结?br>{:(x)
20
100

~程l习(fn)Q?a href="http://m.tkk7.com/Files/zhuyuanxiang/JavaInTwoSemesters.zip">代码附g
1.    Student.java StudentTester.java
2.    StockItem.java StockItemTester.java
3.    Bank.java BankAccount.java BankProgram.java
4.    StudentList.java StudentListTester.java
    注:(x)StudentList的UML图中remove(int)和getItem(int)的参数类型不该是int型,搜烦(ch)的是学生的学P应该是string?br>5.    EasyScanner.java



]]>
《Java大学教程?amp;mdash;W??cd对象http://m.tkk7.com/zhuyuanxiang/archive/2016/08/30/431707.htmlp?/dc:creator>p?/author>Tue, 30 Aug 2016 13:29:00 GMThttp://m.tkk7.com/zhuyuanxiang/archive/2016/08/30/431707.htmlhttp://m.tkk7.com/zhuyuanxiang/comments/431707.htmlhttp://m.tkk7.com/zhuyuanxiang/archive/2016/08/30/431707.html#Feedback0http://m.tkk7.com/zhuyuanxiang/comments/commentRss/431707.htmlhttp://m.tkk7.com/zhuyuanxiang/services/trackbacks/431707.html6.2 对象Q结构化~程-->数据-->装Q聚合,信息隐藏Q?->对象Q方法及(qing)其操作的数据都聚合在一个单元中Q作为更高层的组l单元)(j)-->c(创徏对象的模板)(j)
6.3 c:(x)
*    要存储的数据-->属?br>*    要完成的d-->Ҏ(gu)
6.7 对象数组Q没有实例化Q只有引用)(j)

自测题:(x)
1。如何理解面向对象程序开发的含义QP119
{:(x)面向对象开发技术也可以UCؓ(f)快速应用程序开发技术,因ؓ(f)它允许程序设计h员在分析和设计过E中q稳地过渡?br>此外Q由于封?encapsulation)和信息隐?information-hiding)技术,面向对象技术允许构建更安全的系l?/p>

2。封装的含义是什么?P123
{:(x)在面向对象方法中Q一个类中的Ҏ(gu)通常避免直接讉K其他cM的数据,q样不容易对数据造成破坏。这一重要原则被称为封装和信息隐藏?/p>

3。区分类和对象。P121
{:(x)在面向对象方法中Q方法及(qing)其操作的数据都聚合在一个单元中。这U更高层的组l单元被UCؓ(f)对象?br>而类是创建对象的模板Q对象是q生成的?/p>

4。构造函数的作用是什么?P123
构造函?constructor)永远与类同名。当创徏一个新对象Ӟq个Ҏ(gu)的方法M(x)被调用;该方法的作用是在计算机的存储器中保留_的空间存储需要的对象Q?br>当然q可以完成更多的功能Q例如:(x)初始化变量、申L(fng)l资源等。构造函数可以被重蝲Q因为可以创建需要的构造函数?/p>

5。如何从其他cȝҎ(gu)中调用一个类的方法?P126
首先Q需要创建对象,q个q程通常UCؓ(f)实例?instantiation)q程Q因也创Z(jin)cȝ一个实例?br>其次Q当初次创徏引用旉常赋空?null)Q空DC没有分配存储空间。需要将实例化的对象的地址赋给引用Q才能正调用对象的Ҏ(gu)?/p>

6。对象数l与基本数据cd数组有何区别QP136
基本数据cd数组一旦创建就?x)随之创建存储过E,而对象数l创建时q没有在存储器中创徏对象数组的存储空_(d)而是创徏?jin)该对象数组的引?Q?br>q且没有具体的对象赋值给引用Ӟ引用默认gؓ(f)null?/p>

~程l习(fn)Q?a href="http://m.tkk7.com/Files/zhuyuanxiang/JavaInTwoSemesters.zip">代码附g
1.    Olong.java    BankAccount.java均在Chap7
2.    StringComp.java
3.    StringComp.java
4.    BankTester.java



]]>
《Java大学教程?amp;mdash;W??数组http://m.tkk7.com/zhuyuanxiang/archive/2016/08/30/431706.htmlp?/dc:creator>p?/author>Tue, 30 Aug 2016 13:26:00 GMThttp://m.tkk7.com/zhuyuanxiang/archive/2016/08/30/431706.htmlhttp://m.tkk7.com/zhuyuanxiang/comments/431706.htmlhttp://m.tkk7.com/zhuyuanxiang/archive/2016/08/30/431706.html#Feedback0http://m.tkk7.com/zhuyuanxiang/comments/commentRss/431706.htmlhttp://m.tkk7.com/zhuyuanxiang/services/trackbacks/431706.html5.6 增强的for循环Q访问整个数l,d数组元素Q不Z数据下列
5.7 数组Ҏ(gu)Q最大倹{求和、成员访问、查?/p>

1。答QP92
存储固定个数相同数据cd的一l元素?/p>

2。答QP92
所有存储在一个特定数l里的元素必L同一cdQ但是ƈ没有限制是哪一cd。甚臌可以存储对象?/p>

3。答QP104
当满以下几U情冉|能应用增强的for循环Q?br>* 需要访问整个数据(不是数组的一部分Q;
* 需要读取数l中的元素,而不是个性它们;
* 不需要用数l完成其他处理过E?/p>

4。答Q?br>a) someArray.length的值是5Q?br>b) someArray[2]的值是1
c) 如果讉KsomeArray[6]Q程序会(x)报错Q超出数l的索引边界Q?/p>

d)
int[] someArray=new int[5];
someArray[0]=2;
someArray[1]=5;
someArray[2]=1;
someArray[3]=9;
someArray[4]=11;

e)
for (int i=0;i<5;i++)
{someArray[i]=someArray[i]*2;}

f)因ؓ(f)需要修Ҏ(gu)l中的|增加for循环不能实现修改数组的需求?/p>

5。答Q?br>a)
    private static int[] getExamMarks()
    {
        Scanner sc=new Scanner(System.in);
        System.out.println("Please input the student number: ");
        int studentNumber=sc.nextInt();
        int[] students=new int[studentNumber];
        for (int i=0;i<studentNumber;i++){
            System.out.println("Plase input "+(i+1)+" student mark: ");
            students[i]=sc.nextInt();
        }
        return students;
    }
   
b)
    private static void increaseMarks(int[] studentsIn) {
        for (int i = 0; i < studentsIn.length; i++) {
            studentsIn[i] = studentsIn[i] + 5;
        }
    }
   
c)
    private static boolean allHavePassed(int[] studentsIn){
        boolean result=true;
        for (int item:studentsIn)
        {
            result=result&&(item>40);
        }
        return result;
    }

~程l习(fn)Q?a href="http://m.tkk7.com/Files/zhuyuanxiang/JavaInTwoSemesters.zip">代码附g
1. TemperatureReadings3.java
2. Lottery.java
3. ExchangeRate.java
4. ExchangeRate.java
5. SomeUsefulArrayMethods.java



]]>
վ֩ģ壺 ɫaAV| 츾AVӰ| ĻСۺ| ˳ɾƷƵ| AVվþþƷ| 99þۺϾƷ| ˳Ƶ߹ۿƵ| δav| Ļѵַ߹ۿ| ҹС˵69| ޹v߹ۿ| ۺϼ޵һҳ| ŮڵƵ| Ʒרһ| ƷۺһƵ| պƵ| þþƷƷް| þƵһ| ޹һҳwww| jyzzjyzz鶹 | ˾Ʒձ| jjzz߲Ź| ߲ŹƵ| ޾Ʒ| ˳߹ۿ69ʽСƵ| Ʒ޹| jizzjizzƵȫ| xxxxձ߲Ѳ| ˵߲| avվëƬ| ƷAV鶹| ˳վۿ| 91鶹˳ѹۿ| ޹Ʒþþϼ1| ޾Ʒ˳3d| պ뾫Ʒþһ| һɫþۺ޾Ʒ| Ѵվ߹| ϺƷAV߲| AVɫ߹ۿ | Ůվ߿|