??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲精品成人区在线观看,亚洲精品午夜国产va久久,亚洲天堂电影在线观看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吧。设计模式绝对不会一ơ就看懂的?/p>

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

全书_֍Q?/p>

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

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

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

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

注:

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>《设计模式:可复用面向对象Y件基?/p> <p>q本书还没看完,但是l对是案头必备,虽然用C++写的代码Qƈ且是四个牛h写的风格Q相关知识背景与E序员不同)Q但是一旦开始理解设计模式以后,再回q头会发现这本书的定义和描述最Ҏ理解和记忆?/p> <p>《Head First设计模式?/p> <p>自学、初学的推荐用书。我也是通过q本书才真正明白设计模式。虽ӞGoF提出?3个模式,但是Q只要把主要几个搞明白了Q就入门了Q其他的模式只有真正实践的时候才会需要,否则看了也就是了解一下?/p> <p>《Java与模式?/p> <p>十年前,我绝对认为是本好书。因为那个时候可以参考的中国人写的设计模式的书实在太,但是现在我对q本书的评h只能可以了。因Z者的举例跟我的项目经验没有重叠,作者对古典文学的运用反而又l我理解设计模式增加了困难,因此q本书不再作为我推荐的书Q只作ؓ看完《Head First设计模式》后的补充阅读,q且不需要太x书中的代码和那些文学描述Q只看作者关于模式与实际应用的描q就可以了?/p> <p>《设计模式解析?/p> <p>q本书不推荐。除非你有过一些设计模式的理解Qƈ且还有实际项目的设计l验Q否则这本书对初学的帮助不是很大。我的感觉作者应该是用来作ؓ自己上课的教材,因此q本书除非可以跟着作者边学边读,否则自学会觉得只讲了些理念上的东西,能够帮助理解模式的项目或者代码是不的?/p> <p>《设计模式初学者指南?/p> <p>W三ơ放弃读q本书,主要是对我不太实用,而且作者的思\也与我不同,读v来不太顺畅。每ơ重M几次才明白作者想表达什么,作者是个好E序员,写的代码也非常漂亮,只是比较xl节和自我实现过E中的理解,对于l常写代码的JavaE序员可能帮助会更多些,对于只是想了解概念和思\显得有点啰嗦了?/p> <p> </p> <p>补充Q理解设计模式最好的Ҏ是目与代码,q且在不断地重构目和代码中加深理解。对于别的什么例子,看v来似乎对理解有帮助,但是听多了只会更加糊涂?/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>首先划重点:q是一本Java的入门书?/p> <p>自学前需要的条gQ已l具备基本的计算机基?/p> <blockquote> <p>1Q已l对一U编E语a比较熟悉Q?/p> <p>2Q有q四q计机专业学习Q或者三q以上的软g开发经验,</p></blockquote> <p>自学的方法:</p> <blockquote> <p>1Q完全自学:手工输入代码Q看懂习题的{案?/p> <p>注:把下载的代码q行通过是不行的Q自行输入代码也是对Java语言的熟悉过E?/p> <p>2Q结伴学习:通过讨论深入理解代码Q结伴搞定习题?/p> <p>3Q前辈指|由前辈帮助搭建编E环境,避过自学q程中需要面对的其他q扰。帮助理解与Java相关的其他计机的知识点Q从而避免遇到因此某些地方不懂而升L退却心理?/p> <p>ȝQ最完美的的以上三种l合Q但是不基于什么方法,完全的自学都是必ȝ?/p></blockquote> <p>Z么说q是一本Java入门书?</p> <blockquote> <p>因ؓ此书只是全面讲述了在Java~程q程中可能遇到的各种知识点,而对q些知识点ƈ没有展开和深入,d此书后可以对Java~程有个全面的了解,但是如果在工作中遇到q些问题Ӟ仍然需要去找更加专业的书籍来深入学习?/p></blockquote> <blockquote> <p>例如Qƈ发编E。作者只是介l了如何用Java~写多线E的E序Q但是对于死锁问题只提供了例子,q没有深入分析,也没有给出更加具体的解决ҎQ因不是此书的关注点?/p></blockquote> <p>Z么很多hq不推荐用来入门Q?/p> <blockquote> <p>我的感觉q本书可能是一本教材,是作者用来培训JavaE序员的Q所以书中对许多知识点ƈ没有l出铺垫Q因本书已经很厚了,所以作者只好在译֠上铺垫了Q。那么过多的计算机方面的知识Q例如:面向对象、设计模式、IO处理、ƈ发编E等{)很容易Z生挫折感而放弃这本很厚很厚的书,甚至攑ּJava语言?/p> <p>因此Q我的经验是如果你没有多q的软g~程l验Q也没有比较全面的计机知识Q那么最好找个前辈指导着学习Q因为很多时候兴比什么都宝贵?/p></blockquote> <p>后记Q此书值得反复阅读。“书d遍,其义自见。”作者不仅在Java语言斚wQ而且在计机其他领域斚w也有很深的造诣。读透一本书Q就可以充分领悟除这本书以外作者在其他斚w的心得?/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统一攄在这里是因ؓ不可预测的原因得原文档和代码不方便下蝲Q故我所攉的内容统一在这里,如果q里的内容R犯了别hQ请告知我会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版)+源代?/font></a></p> <p><a href="http://m.tkk7.com/Files/zhuyuanxiang/TIJ2-Word.zip" target="_blank"><font face="微Y雅黑">Java~程思想Q英文第2版)</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版)+源代?/font></a></p> <p><font face="微Y雅黑">Java~程思想Q英文第4版)</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当Ӟ在书中作者详l解释了Java的v源和语言的特点,通过学习q本书可以知ӞJavaQ然也可以知其所以然。读懂这本书后,你不仅仅是个会写E序的编码工人,而是成ؓ一个专业的E序员?/font></p> <p><font face="微Y雅黑">q本书可否作为入门书c呢Q其实,作ؓJava的入门也未尝不可Q只是因为其庞大的块头和相对艰ӆ的内容会使大部分初学者半途而废。如果完全没有编E功底的人,当然׃要以此入门了Q这l对是自虐?/font></p> <p><font face="微Y雅黑">如何快速学习这本书呢?直接看Java~程思想W?版,跌W?章,从第2章开始所有理论知识都跌Q手工输入所有代码,调试成功Q然后再回过头看相关理论知识Q能看懂多少看多,看不懂的留下来,{以后在实践中碰C再回头学习?/font></p> <p><font face="微Y雅黑">如何深入学习q套书呢Q有强大意志力的可以从第1版开始往后看Q看到第4版就可以对Java语言的发展史有个深刻的理解,甚至对于E序设计语言的发展历史也会有所了解Q这个很重要Q,因ؓ所有的语言其实都是盔R的。一门语a理解以后Q再学其他语aQ如QC++、Python{)都会明白q个语言的特点在哪里Qؓ何要q样设计语言Q用在什么场合下效果最好。如果这个语a因ؓ设计的需要缺某些特性的时候,可以通过什么方法来解决。例如:Java 1.4以前是没有泛型的Q那么第3版就没有介绍泛型的用,而第4版才引入了泛型,那么通过Ҏ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更适合作ؓ教材使用?/p> <p>虽然此书完整覆盖了Java的知识点和数据结构的基础问题Qƈ且对每个部分都做了基本说明。但是因为没有深入展开Q对于以自学的方式阅L书的读者,如果没有基础的会感觉内容太多太杂Q学习过E会觉得怸着头脑Q但是对于基较好的读者又会觉得书中的描述有种隔靴搔痒的感觉,d一遍没啥收莗?/p> <p>但是如果作ؓ教材则具有自q优势Q作者从Java语言入手Q一步步推进到数据结构,使Java语言和数据结构的学习自然的结合在一P从而避免了在许多学校教学过E中因ؓ分别讄两门评而带来的p问题。例如:许多同学都是先学语言Q再学数据结构。可能会遇到一个学期学Java语言Q另一个学期学数据l构Q结果Java的语法早在考试后还l老师了,从而学习数据l构的过E比较困难。更p糕的是学习数据l构时用的~程语言不是JavaQ结果就学完数据结构了依然不会使用Java来解x据结构中的许多经兔R题?/p> <p>但是Q如果老师使用q个教材Q可以根据自q需要调整讲解的深度和需要展开的内容,q可以帮助学生直接利用Java语言的特性来解决某些数据l构的问题,比如QJava的泛型和集合cL实现数据l构的链表,使学习很有针Ҏ,也更Ҏ产生兴趣?/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. 很适合部分初学者,因ؓ书中对于JAVA许多Ҏ都有涉猎,而且也是尝x。如果读者没有受q专业的~程训练Q那么在阅读此书时不会畏惧。因Z中没有充斥着大量的计机理论知识Q虽然作者依然覆盖了JAVA的重要知识点Q以及许多与~程相关的计机知识点,但是作者ƈ没有展开说明Q只是帮助读者有个初步的认识Q重要的是培训兴。作者本Z非计机专业毕业Q而是通过大量的编E实跉|Z个合格的E序员。因此,作者全书都彰显着实用M的精,无论是语a的选择QJAVAq是C++Q,q是理论的学习(JVM和内存管理)都是能用p?/p> <p>2. 通过我对本书的学习,其他读者也像作者一P从实践出发。一定要自己把书中的代码都输入到计算ZQ按照作者的思\熟悉~程工具和JAVA的知识点。在阅读q程中,我发现本书中文版的代码排版有误,那么读者可以根据自q能力q行U错Q通过U错也可以加深对代码的理解,实在搞不定了再参考作者或者我提供的源代码?/p> <p> </p> <p>重要事情说三遍:一定要自己输入代码?/p> <p>因ؓ代码光看懂是不够的,一定要自己输入、调试和发现问题Q还可以修改代码从而加入自q一些想法,只有通过反复的实跉|能真正理解JAVA的知识点Q也是俗话说的学成自己的东ѝ?/p> <p> </p> <p>3. dq本书,其实q不能帮你立d成ؓ一定合格的JAVAE序员,甚至你还是不太会写程序,但是恭喜你“入门了”?/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入和做了部分修改的代?/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中文版书中的问题代码记录Q?/p>

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

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

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

P220Q函C的System.exit(1)因ؓ前面抛出了异常,所以永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入和做了部分修改的代?/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时碰到这个问题,因ؓq个应用是基?2位的Eclipseq_开发的Q而我的电脑是64位的Windows 7Q当然安装的JDK也是64位的Q于是报错?/p>

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

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

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

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

]]>
JavaE序设计教程Q第2版)阅读ȝ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重新拣v对Java的回忆,只好又找了本基础书。由于成都高新图书馆的计机书实在不多,只能扑ֈq本了。简单读了下Java部分Qȝ如下Q?/font>

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

~点Q?/font>

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

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

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

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

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

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

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

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

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

做练习是q几q学习数学的q程中才接受的。因Z前看书,总觉得看懂就可以了,l习做来做去都是些重复劳动,只是巩固一下基的知识,收获不大。于是,心里Lx些有看点的书来读。可是读的书不少了,仍然觉得无法深入Q好像L些地方书里没说清楚。后来实在没有办法了Q因为数学书本本都是那么抽象Q对于概忉|多少解释Q只好做习题q可以落实一下那些定理。当习题做到后面的章节,H然发现前面有些不明白的地方豁然开朗了。于是,以后的学习中都把做练习作为必选项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的背景知识,通过了解历史知道Java与其他语a的区别,以便更好选择在什么场景下使用Java?/p> <p>24.2    语言的尺?br>Java语言短小、紧凑,以C++为基Q放弃了一些特定的语言特征Q指针和多承)<br>注:需要关注的是ؓ什么放弃这两个特征Q有没有替代ҎQ各自的优缺炏V?/p> <p>24.2.1    指针QpointerQ?br>指针是一U变量,q且变量中包含了某个存储器地址?br>Java不允怋用指针,因ؓ指针指向的是具体的物理地址Q直接操U늉理地址中的数据Q容易ɽE序出现不可预料的问题?br>Java通过创徏引用Q)来实现对地址的访问。通过引用也可以把地址作ؓ变量传送?/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>别名会导致不同的对象变量指向同样的对象?br>因ؓ对象变量中存储的对象地址相同Q从而出C个修改同一对象数据的入口,Ҏ造成h?br>为此Java提供了两U拷贝机Ӟ深拷贝(对象的数据的拯Q和拷贝(对象的引用的拯Q?br>深拷贝可以保护原始对象不受媄响,但是需要消耗时间和I间Q用于保护数据安全的领域使用。利用cloneҎ?br>拷贝提供了原始对象的地址Q不需要消耗过多的旉和空_但是必须心的用,以免造成不可预料的问题。利用别名机制?/p> <p>24.3.2    重写cloneҎ<br>protected的方法可以被重写为public的方法,但是public的方法不可以重写为protectedҎ?br>注:因ؓ已经在父cdl是public的方法,q子类重写为protectedҎQ那么访问者依然可以通过父类实现讉KQ所以不容许publicҎ重写成protectedҎ?/p> <p>24.3.3    不变对象<br>如果对象中不存在变更它们状态的ҎQ则对象UCؓ不变对象?br>如果对象是不可变的,则不必担心创建对象的别名会造成不可预料的问题?/p> <p>24.3.4    使用ObjectcȝcloneҎ<br>ObjectcȝcloneҎ复制了分配给对象属性的存储器的内容Q也UCؓ按位拯Qbitwise copyQ。即完全复制了原始类型(primitive typeQ的属性的内容Qƈ且复制了属性的引用?br>*    如果cȝ属性都是基本类型的Q则重蝲cloneҎ只需要调用ObjectcȝcloneҎQ?br>*    如果cȝ属性有对象cd的,q且q些对象都是不可变的Q则重蝲cloneҎ只需要调用ObjectcȝcloneҎ?br>*    如果cȝ属性包含非不可变对象,则无法利用ObjectcȝcloneҎq行复制Q必自q写代码来实现cloneҎ?/p> <p>如果需要用ObjectcȝcloneҎQ需要标识类实现了Cloneable接口Q这个接口也是个标识接口Q没有包含Q何方法?/p> <p>24.3.5    垃圾攉<br>Java使用异常处理技术来监视内存耗尽问题Qƈ且可以编写代码来保E序正常地终止?br>Java语言h一U内嵌的垃圾攉功能Q该功能能够释放未被使用的内存。通过搜烦E序所使用的内存空_释放不再被用的内存?/p> <p>自测题:<br>1.    指针与引用的区别Q?br>指针保存了地址Qƈ且可以通过代码修改和操U这个地址的数据?br>引用保存了地址Q但是这个地址不能通过代码修改Q也不能随便改变讉K的类型,例如Q不能按字节讉K地址中的信息?/p> <p>2.    多承:<br>多承允怸个类l承于多个超cR?br>Java不允许多l承Q因为多l承使用不多Q且~程复杂Q容易出错?br>Java允许l承一个基c,实现多个接口的方式实现多l承?/p> <p>3.    Critical.java</p> <p>a)    因ؓCritical对象存在变更它们状态的ҎQ所以是可变对象?/p> <p>b)    CriticalTest.java</p> <p>c)    Critical.java</p> <p>d)    CriticalTest.java</p> <p>4.<br>a)    Z么方法返回的都是别名Q方便调用的Ҏ修改里面的数据,对于不可变对象也提高传送数据的效率?br>b)    Z么别名可能有危险Q因用方法的代码可能会修改原始数据,造成不可意料的数据错误?br>c)    如何避免别名Q创建cloneҎQ返回的对象都采用深拯?/p> <p>5.    垃圾攉功能的优点和~点Q?br>优点Q简化程序员的工作,避免出现内存泄漏或者内存耗尽的问题?br>~点Q降低代码执行的速度Q对于实时应用会H然出现响应不及时的问题?/p> <p>~程l习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的是Java的几个应用网l编E的场景Q对于网l编E没有太多深入介l,而Java本来也没有多针对网l编E的Ҏ?br>虽然Java有个Applet的概念,但是真用q个的开发的场景其实不多?/p>

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

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

23.3    讉Kq程数据?br>Java数据库连接(Java Database Connectivity, JDBCQ:是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>

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

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

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

4.    JDBC技?br>Java数据库连接(Java Database Connectivity, JDBCQ:是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的连接;
~程l习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序Ҏ谈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)

1Q服务提供者框Ӟ

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

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

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

 

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

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

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

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

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

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

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

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

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

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

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

二、各自特点:

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

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

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

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

以下是测试代码:

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!------");

           // 只是讄了一个JVM的系l属性,q不建立JDBC驱动E序?
            // 建立JDBC驱动是依赖系l第一ơ调用DriverManagercLQ执行了q个cȝ静态初始化代码中的loadInitialDrivers()Q?
            // 加蝲驱动的方法会把设|的jdbc.drivers属性对应的驱动c通过DriverManager.registerDriver注册到JDBC中?
            // 因此Q必L在DriverManager被第一ơ调用之_也就是需要将前面那两行代码注释掉
            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ȝ会自动搜索mysql-connector-java-???-bin.jar中的META-INF/services/java.sql.Driver
            // q个文g会包含mysql jdbc驱动E序的入口:com.mysql.jdbc.Driver
            // 应用E序调用Class.forName()也不会出错,只是什么都不会执行?
            // 因ؓClass.forName()是执行静态初始化代码Q已l初始化q的cd无法Ȁz这D代码了
            // 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与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:P551<br>旉切片Qtime-slicingQ:处理器只是完成了一个Q务的一部分工作Q然后完成下一个Q务的一部分工作Q?br>因ؓ处理吕每ơ完成工作的旉都非常短Q因此看hq些d是同时完成的?/p> <p>q程Q一个运行的E序通常UCؓ一个进E?br>q发q程Qconcurrent processQ:两个或多个可以同时执行的q程UCؓq发q程?br>在多个进Eƈ发执行时Q每个进E都有自q存放E序代码和数据的存储I间Qƈ且每个进E的存储I间对于其他q程都是受保护的Q所有这些工作都由操作系l完成?/p> <p>22.3    U程QthreadQ:P552<br>U程Q一个程序执行的多个独立dUCؓU程。通常线E称量q程Qlightweight processQ,因ؓ也管理进E相比,理U程需要占用较的pȝ资源?br>U程没有完全独立的存储空_U程之间׃n代码区和存储区?br>理U程的方式也是基于时间切片原则,由JVM和OS协同理?/p> <p>22.4    Threadc?br>l承Threadcd现线E。控制线E用三个ҎQstart(), run(), finish()<br>主要执行代码在run()Ҏ中?br>注:run()Ҏl束后,q个U程p行结束了Q不可以再次调用Q必重新创建。原因也可参考图22-2的状态{换图Q线E进入TERMINATE状态中Q无法再ơ启动?/p> <p>22.5    U程的执行与调度<br>份额QquantumQ:每个q程或者线E都可以获得处理器上的一段旉--UCؓ份额Q然后轮转到下一个进E或U程?br>份额内时间没有用完时Q也可以使用sleep()ҎQ强制放弃CPU的占用权Q将CPUq给OSQ从而可以l分配给下一个进E或U程?br>注:sleep()Ҏ传入的时间间隔(以毫Uؓ单位Q,可能会抛出InterruptedException异常Q必d在try...catch代码块中?/p> <p>22.6    Runnable接口<br>创徏一个实现Runnable接口的类Q然后将cȝ实例作ؓRunnable接口的参C入Thread对象的构造函C?br>后面的工作主要就是操作Thread的对象,与前面扩展ThreadcȝҎ一样了?br>注:此处的Thread对象是独立创建的Q前面是对Threadcȝl承?/p> <p>22.7    U程同步QP562<br>异步行ؓQasynchronous behaviourQ:<br>    在一般情况下两个或多个ƈ发执行线E的行ؓq不是协同的Q而且无法预知在某个时间段内哪个线E将会占用CPUQ这U非协同的行为称为异步行为?br>互斥讉KQmutual exclusionQ:需要将讉K~冲区的E序D늜作界区Qcritical sectionQ?-卛_M时刻只能被一个进E访问的区域Q实C界区的方式称Z斥访问?br>忙等待(busy waitingQ:被某个线E执行的Ҏ循环中反复执行,直到满某个条g才能l止。效率太低,可以使用wait()Ҏ线E挂P直到被其他线E的消息唤醒?br>在Java中创Z个monitor对象Q监视器Q,monitorcȝ所有方法在M时刻都只能被一个线E访问?br>可以在方法的头部使用synchronized修饰W,׃Ҏ被同?synchronized)Q所以一旦有某个对象调用该方法,那么该方法将被置上一个锁QlockQ,<br>其他对象必须在该Ҏ执行完成后才能访问它?br>?Qؓ什么要加锁Q是因ؓ你有临界区,对这个界区加锁才是目的?br>因此锁的目的Q当前类Q即this.静态变量)Q当前对象(即this.变量Q,当前对象中创建的对象Q即this.对象变量Q,外部传入到当前对象中的对象?/p> <p>?Q什么可以加锁?对象Q只有对象可以加锁?br>在Java中,每一个对象都拥有一个锁标记QmonitorQ,也称为监视器Q多U程同时讉K某个对象ӞU程只有获取了该对象的锁才能讉K?br>JVM会记录ƈ且监这个锁Q当U程获取锁后计数器由0?Q线E若讉K同样锁的其他ҎQ计数器q会l箋增加Q从而保证线E完全释放这个锁后才会允许其他线E访问?br>所以基本数据类型的变量是不能作Z界区的,也就不能被加锁?/p> <p>?Q怎么样加锁?使用synchronized寚w态方法、方法、对象变量加锁?br>static synchronized aStaticMethod(){...}        //        “当前类Q即this.静态变量)”加?br>synchronized aMethod(){...}        //        “当前对象(即this.变量Q”加?br>synchronized (aObjectVariable){...}        //        “当前对象中创徏的对象(即this.对象变量Q”或“外部传入到当前对象中的对象”加锁?/p> <p>22.8    U程状态:P563<br>状态{换图Q图22-2 一个线E的状态{换图<br>start()启动一个线E?->U程q入readyQ就l)状态?br>dispatch()调度一个线E?->U程q入runningQ运行)状态?br>U程q行旉时、yield()强制一个线E放弃CPU-->U程q入readyQ就l)状态?br>sleep()睡眠一个线E?->U程q入sleepingQ睡眠)状?->睡眠旉时-->U程q入readyQ就l)状态?br>wait()-->U程q入waitingQ等待)状?->获得其他U程notify()或notifyAll()Ҏ通知-->U程q入readyQ就l)状态?br>׃{待输入或等待外部设备可?->U程处于blockedQ阻塞)状?->d旉时或设备正?->U程q入readyQ就l)状态?br>run()Ҏ完成后,U程被终止?/p> <p>22.10    Timerc:调度U程<br>在固定时间间隔内生成ActionEvents对象。因此,必须一个Timer对象兌C个ActionListener对象?br>只要Timer对象生成一个ActionEvent对象Q都会执行与Timer对象相关的ActionListener对象的actionPerformed()Ҏ?/p> <p>自测题:<br>1.    如何通过旉切片实现q发QP552<br>旉切片Qtime-slicingQ:处理器只是完成了一个Q务的一部分工作Q然后完成下一个Q务的一部分工作Q?br>因ؓ处理吕每ơ完成工作的旉都非常短Q因此看hq些d是ƈ发完成的?/p> <p>2.    q程与线E的区别QP552<br>每个q程都有完全独立的存储空_用于存放E序的代码和数据Qƈ且每个进E的存储I间对于其他q程都是受保护的Q所有这些工作都由操作系l完成?br>每个U程没有完全独立的存储空_U程之间׃nE序的代码和数据Q线E的调度由JVM和操作系l协同完成?/p> <p>3.    异步U程执行和同步线E执行的区别QP562<br>异步执行U程Q无法预知某个时间段内哪个线E将会占用CPUQ也无法估计E序执行的结果?br>同步执行U程Q确保线E对于界区是互斥访问的Q当某个U程执行同步代码Ӟ其他U程无法再调用同步代码,必须{待前面执行的进E解锁?/p> <p>4.    临界区和互斥的概念:P562<br>讉K~冲区的E序D늜作界区Qcritical sectionQ?-卛_M时刻只能被一个进E访问的区域?br>实现临界区的方式UCؓ互斥讉KQmutual exclusionQ?br>Jav提供了在多线E程序中实现互斥的机Ӟx个对象都有一个monitorQ监视器Q,monitorcȝ所有方法在M时刻都只能被一个线E访问?br>只需要在Ҏ的头部用synchronized修饰W,׃Ҏ被同步,所以一旦有某个对象调用该方法,那么q个Ҏ׃被上锁,其他对象如果同时惌问就必须{待?/p> <p>5.    如何在JavaE序中避免忙{待QP562<br>使用wait()Ҏ线E的执行挂vQ直到它收到另一个进E的消息它唤醒。就可以避免出现忙等待?/p> <p>6.    Threads6.java    RunThreads6.java</p> <p>~程l习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ؓ用户界面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ؓ{案提供认与否的按钮?/p>

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


自测题:
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.    良好用户界面创徏的基本原则:
保持z:颜色要少、字体要、菜单不过三层?br>注意用户的特征Q针对具体的使用者设计用界面?br>考虑有障用L需求?/p>

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

~程l习Q?a href="http://m.tkk7.com/Files/zhuyuanxiang/JavaInTwoSemesters.zip">代码附g
1.    BorderTester.java
3.    PasswordFieldTester.java
注: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自测题:
1.    在图形应用程序中为用h供选择的多U方式:P433
下拉菜单Qpull-down menuQ、弹出式菜单Qpop-up menuQ、对话框H口Qdialogue windowQ、单选按钮(radio buttonQ、组合框Qcombo boxQ?/p>

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

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

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

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

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

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

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

9.    调用Notepad.exe的代码:

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

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

~程l习Q?a href="http://m.tkk7.com/Files/zhuyuanxiang/JavaInTwoSemesters.zip">代码附g
1.    都实CQ没啥想修改的?br>2.    DiaglogModalDemo.java    RunDiaglogModalDemo.java
3.    囑Ş界面的就先不做了?br>4.    SliderRectangleDemo.java    RunSliderRectangleDemo.java
5.    DrawFigure.java RunDrawFigure.java
注:基本的几个交互组仉已经在DrawFigure中用了Q不再做6题了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包含三个重要接口:<br>*    List列表Q元素ؓ单个对象Q元素在列表中是有序、可重复<br>*    Set集合Q元素ؓ单个对象Q元素在集合中无序、不可重?br>*    Map映射Q元素ؓ成对对象Q第一个对象是关键字,W二个对象是|Q元素在映射中无序,关键字不可重?br>注:JCF不能存储基本数据cd?/p> <p>17.2 List接口和ArrayListc?br>*    ArrayListc?br>*    LinkedListc?/p> <p>17.2.1    泛型QgenericsQ:允许讑֮存在在特定聚焦类对象中的对象cd。可以将一个或多个cd作ؓ参数发送到一个类Q或接口Q中Q亦被称为参数化cd?br>优点Q允许编译检查类型;不必q行对象cd转换Q避免生ClassCastException异常?/p> <p>17.2.2    使用接口cd代替实现cd作ؓ函数的Ş?br>允许来修改实现的方式而不必修改Ş参中对象的类型?/p> <p>17.2.3    List接口的方?br>操作Q增加(addQ❶元素插在列表的末尾Q❷元素插入到列表中指定的位置?br>注:使用索引插入参数到列表中Ӟ必须保证索引是当前列表中的有效位|?br>修改QsetQ、删除(deleteQ?br>列表Q显C(toStringQ、LQsizeQ、是否空QisEmptyQ?br>元素Q位|(indexOfQ返回指定对象在列表中第一ơ出现时的烦引?br>获取QgetQ、存在(containsQ?/p> <p>17.3    增强的for循环Q数l、List接口、Set接口<br>不能用于修改或删除原始集合中的元素,因ؓ~译可以通过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接口的方法:<br>操作Q增加和修改QputQ、删除(removeQ?br>元素Q关键字存在QcontainsKeyQ、值存在(containsValueQ、D取(getQ?/p> <p>17.6    JCF中用自定义c?br>Ҏ重写QtoString();    equals();    hashCode()</p> <p>自测题:<br>1. 三种接口的区别:<br>*    List列表Q元素ؓ单个对象Q元素在列表中是有序、可重复<br>*    Set集合Q元素ؓ单个对象Q元素在集合中无序、不可重?br>*    Map映射Q元素ؓ成对对象Q第一个对象是关键字,W二个对象是|Q元素在映射中无序,关键字不可重?/p> <p>2.    Map<String, Student> javaStudents = new HashMap<String, Student>();<br>a)    允许来修改实现的方式而不必修改Ş参中对象的类型?/p> <p>b)    可以一个或多个cd作ؓ参数发送到一个类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="sm4ygq4" 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="8ikq44s" 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="egq8ys8" 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="844semy" 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="4uymcsk" 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习Q?a href="http://m.tkk7.com/Files/zhuyuanxiang/JavaInTwoSemesters.zip">代码附g</a><br>1.    NameStack.java    NameStackException.java    NameStackTest.java<br>a)    因ؓ需要可变大的存储I间Q而存储的对象必须是有序的Q但是是可以重复的?/p> <p>2.    CarRegister.java    CarRegisterException.java        CarRegisterTest.java<br>a)    因ؓ需要可变大的存储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的帮助:

?“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:一l_one-dimensionalQ数l、二l_two-dimensionalQ数l?/p>

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

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

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

自测题:
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球敎ͼ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)    规则二维数组与不规则二维数组的区别:P390
列数Q第二烦引)是固定的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默认ؓ从左到右Q从上到下?

~程l习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        做界面太消耗时间了Q暂时不做了?/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自测题:
1.    什么是异常QP357
异常是在E序生命周期内出现的事gQ它会导致程序行Z可靠?/p>

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

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

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

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

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

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

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

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

~程l习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也是相Ҏ入的Java学习?/p> <p> </p> <p>自测题:<br>1.    在类的开发过E中Q程序包的作用是什么?P321<br>E序包是Z方便定位和部|类Q还可以避免来cM间出现名U冲H?/p> <p>2.    哪些import语句合法Q哪些非法?<br> <div id="iic44yg" 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)    三种Ҏ如下Q?br>(1)    import javax.swing.*;<br>(2)    import javax.swing.JButton;<br>(3)    private javax.swing.JButton myButton;<br>b)<br> <div id="846484i" 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习Q?a href="http://m.tkk7.com/Files/zhuyuanxiang/JavaInTwoSemesters.zip">代码附g</a><br>1. package hostelApp;<br>注:已经使用包了Q就不再修改Q只l出处理Ҏ?/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自测题:
1.    解释抽象和抽象数据类型的概念。P333
抽象的概忉|仅仅x对象可以完成什么工作,而不必担心如何完成工作的l节?br>cL杉K常被称为抽象数据类型。因cL据暴露给用户的所有信息仅仅是Ҏ的描qͼ输入、输出和行ؓQ和数据的相关信息(属性)?/p>

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

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

3.
a)    解释Java中接口和适配器的区别?br>接口Q?P336)是一个类的所有方法都声明为抽象方法。因此实现接口时必须接口的所有方法编码?br>适配器:(adapter,P348)是一个特D的c,实现了接口的所有方法,扮演cM接口之间的中介角Ԍl承适配器类׃必ؓ所有的Ҏ~码?/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。ؓ了承业务类Q又能够使用适配器类Q可以借助内部cL实现?br>卛_其他cȝ内部创徏一个类Q这个内部类l承适配器类。这个内部类不能为程序中其他cL务,从而实现更好地装?/p>

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

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

~程l习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
注:length和heigth属性本w就定义为doubleQؓ何还要整数呢Q所以我只考虑了非负的问题?/p>

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

4.    SomeGraphicsClass.java    // q个cMؓ了给W?题服务,部分代码修改了,有些专属部分攑֜子类中定义?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本章是上一章的延箋Q主要是用GUI实现了控制界面?/p>

~程l习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自测题:
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>

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

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

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

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

~程l习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因为它们都会大量用系l资源?br>lg名称有Frame(框架)、Button(按钮)、Label(标签){?/p> <p>Swing: ZAWTcL建?br>几乎所有的lg都用Java~写Q而且所有代码都是SwingE序包的一部分。用Java语言~写的组件称量(Light Weight)lg?br>lg名称都以J开_如JFrame、JButton、JLabel{?/p> <p>SwingE序包和AWTE序包都是Java基础c?Java Foundation Class, JFC)中的一部分?/p> <p>补充说明Q首先轻量与重量是一个相对的概念Q主要是对应用框架用方便性和所提供服务Ҏ等斚w做比较的?br>轻量U组仉是纯Java代码开发的Q具有良好的q_UL性,不依赖于操作pȝ的支持,在所有的q_上表CP不直接用操作系l的资源Q?br>当然操作pȝ的资源依然是要占用的Q只是系l资源的理都由lg完成Q用组件的E序员不直接与操作系l的资源打交道?br>重量U组件则每个c都会与操作pȝ中的一个对{资源相对应?/p> <p>10.4 Java中的事g处理机制(event-handling)<br>事g处理?event-handler)</p> <p><br>自测题:<br>1。轻量lg与重量lg的不同?br>依赖于本地操作系l的lg被称为重量lgQ因为它们都会大量用系l资源?br>全部使用Java语言~写的组件称量lgQ它们透过AWT使用pȝ资源Q不会直接管理系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被按下时会采取特定的动作?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)    Ҏ钮监听鼠标单M件?br>button1.addActionListener(this);</p> <p>e)    哪个Ҏ可以军_鼠标单击按钮旉取行动?br>public void actionPerformed(ActionEvent e)</p> <p>注: 实现可以参看PushMe.java</p> <p>~程l习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完成的界面设?手工修改了部分代码,<br> 优点Q比原始版本z?br> ~点Q用了anoynomous classQ本书到q里q没有讲解;q用了enumcdQ也是要C的后面才Ԍq样做就是ؓ了更好的Ҏ学习<br>3.    MetricConverterGUI.java<br> 实现了摄氏温度与华氏温度的{?br> 最后加了两个Panel是ؓ了对齐前面的Panel<br>4.    ReactorTesterGUI.java<br> 也是采用Swing Designer完成的界面设计,q增加了MessageBox的用?br> <br> 补充1QMessageBox需要一个父lgQ而ReactorTesterGUIq没有在构造函C实例化,所以不能用?br> 而能使用的是contentPaneQ这个是在构造函C实例化了Qƈ且在使用之前已经声明了?br> 父组件是Z定MessageBox昄的位|,l果是MessageBox会显C在父组件的中间位置?br> <br> 补充2Q因为ReactorTesterGUI在构造函C是无法实例化的,所以生成的lgq没有直接放在frame的panel中,而是攑֜contentPane中?br> contentPane是在ReactorTesterGUI的类中声明了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)是指Ҏ需求的变化更新现有pȝ的过E?/p>

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

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

代码内文档应当包含以下信息:
*    用以描述代码含义的注释信?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Ҏq行试Q而是单独构造一个包含mainҎ的类UCؓ原始cȝ驱动?driver)Q?br>q个驱动器类只是完成对特定类的操作,不会q扰的类?br>如果要进行单元测试的cM赖于其他的类Q而被依赖的类当前无法获得Q那么可以开发一个哑元类(dummy class)用于替换无法获得的类?br>哑元cLZ完成试而开发的模拟真实cȝcR?/p>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

~程l习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属性和Ҏ。承关pL一U层ơ关pR在l承关系中位于顶部的cȝc(或基c?Q位于下面的cȝ为子c(或派生类Q?br>cd转换(type casting)Q是强制一个数据从一U类型{换ؓ另一U类型。方法是通过在待转换的数据前加一对含有新cd名称的括号实现?/p> <p>8.4    Ҏ重写(method overriding)<br>多态性的实现Q方法重载和Ҏ重写?br>Ҏ重蝲指同一cM可以存在h相同名称的不同方法,通过它们的参数列表加以区分?br>Ҏ重写指超cM的方法,可以在子cM重写?/p> <p>不同的方法:在方法重载中通过不同的参数列表相互区分,在方法重写中通过隶属的对象的不同怺区分?/p> <p>8.5    abstract<br>抽象c?abstract class)Q不可以创徏其对象,仅能作ؓ创徏其他cȝ基类?br>抽象Ҏ(abstract method)Q强制所有的子类必须实现该方法?br>注:如果子类声明成abstract classQ那么从类l承来的abstract method也可以不实现?/p> <p>8.6 final<br>(final class)Q该cM能被l承?br>(final method)Q该Ҏ不能被重写?br>注:(final variable)Q就是常量,与面向对象无兟?/p> <p>8.8    包装cdautoboxing<br>对于每个基本cdQJava都有一个对应的c,q个cd数据cd包装其中Q称为包装类?/p> <p><br>自测题:<br>1。解释什么是l承Q?br>l承是指在类之间׃n属性和Ҏ。承关pL一U层ơ关p,也被UCؓa-kind-of关系?/p> <p>2。在UMLcd中如何描q承关p?<br>用空心的三角形表C承关p,三角形的指的是基类?/p> <p>3。在Java中,使用哪个关键字声明一个类是另一个类的子c?<br>class 子类 extends 基类Q用extends关键字代表承关pR?/p> <p>4。区分方法重写和Ҏ重蝲的不同?br>多态性的实现Q方法重载和Ҏ重写?br>Ҏ重蝲指同一cM可以存在h相同名称的不同方法,通过它们的参数列表加以区分?br>Ҏ重写指超cM的方法,可以在子cM重写?br>不同的方法的怺区分Q在Ҏ重蝲中通过不同的参数列表相互区分,在方法重写中通过隶属的对象的不同怺区分?/p> <p>5。解释什么是cd转换Qƈ描述Java中类型{换是如何实现的?br>强制cd转换(typecast)Q强制一个数据从一U数据类型{换ؓ另一U数据类型?br>通过在待转换的数据前加一对含有新cd名称的括号实现?/p> <p>6。解释abstract和final修饰W分别应用于cdҎ时的作用?br>abstract class表示q个cMؓ抽象c,不能创徏对象Q只能作为其他类的基cR?br>abstract method表示q个Ҏ是抽象方法,没有实现Q子cd果要实例化,必须重写q个Ҏ?br>final class表示q个cMؓ最l类Q不能被l承?br>final method表示q个Ҏ是最l的ҎQ子cM能重写?/p> <p>~程l习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ͼ属性类型)Q?br>cȝҎQ方法名Uͼ参数cdQ:q回值类型)?br>静态的cȝ属性和Ҏ名习惯加下划Uѝ?/p>

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

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

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

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

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

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

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

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

~程l习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
    注:StudentList的UML图中remove(int)和getItem(int)的参数类型不该是int型,搜烦的是学生的学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方法及其操作的数据都聚合在一个单元中Q作为更高层的组l单元)-->c(创徏对象的模板)
6.3 c:
*    要存储的数据-->属?br>*    要完成的d-->Ҏ
6.7 对象数组Q没有实例化Q只有引用)

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

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

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

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

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

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

~程l习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 数组Ҏ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程序会报错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)因ؓ需要修Ҏ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习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



]]>
վ֩ģ壺 ˳վ߹ۿ10| ˮƵ߹ۿѲŸ| 69ƵƬ| ޼߹ۿ| 18վƬѹۿ| þۺϾžһ| ߹ۿվڵ| þþƷƷëƬ| 91ɫۺϾþѷ| ˾þô߽ӰԺ| ëƬAëƬѲ| ޳avƬ롿| ˳Ƶ| ߾ƷAAVV| ޹Ʒһ| yellowվ| ŷղ߹ۿ| ҵС身߿Ѹ | ˳վ߹ۿ| ˾þں2019| 1000žžδʮ| ҹӰ߹ۿ| 69˾ƷƵ| ѿվ߿| av뾫Ʒվ| ѹۿɫվ| һ| ҹ717| Ʒվ| ҹػaëƬѲ| AV߹ۿ | þþþù| vavaó| ߾þþƷĹ| ߹ۿƵ| С˵ͼƬ| 91޾ƷƵ| avҹƬƷӰ| Ƶ߹ۿƵվWWW| ˳վ߹ۿ| Ů޾Ʒþþۺ|