仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3100|回复: 20
打印 上一主题 下一主题

[学习教程] 来看使用导进改动java举动

[复制链接]
飘灵儿 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:36:39 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
自己的整个学习思路完全被老师的讲课思路所牵制,这样几节课听下来,恐怕自己的见解都应该是书里的知识点了,根本谈不上自身发现问题,分析问题,和解决问题能力的切实提高。
Java已作废的一种特征是C的“前提编译”,它同意我们改动参数,取得分歧的举动,同时不改动其他任何代码。Java之以是丢弃了这一特征,多是因为该特征常常在C里用于办理跨平台成绩:代码的分歧部分依据详细的平台举行编译,不然不克不及在特定的平台上运转。因为Java的计划头脑是成为一种主动跨平台的言语,以是这类特征是没有需要的。
但是,前提编译另有另外一些十分有代价的用处。一种很罕见的用处就是调试代码。调试特征可在开辟过程当中利用,但在刊行的产物中却无此功效。AlenHolub(www.holub.com)提出了使用包(package)来仿照前提编译的观点。依据这一观点,它创立了C“判定机制”一个十分有效的Java版本。之以是叫作“判定机制”,是因为我们能够说“它应当为真”大概“它应当为假”。假如语句分歧意你的判定,就能够发明相干的情形。这类工具在调试过程当中是出格有效的。
可用上面这个类举行程序调试:
  1. //:Assert.java
  2. //Assertiontoolfordebugging
  3. packagecom.bruceeckel.tools.debug;
  4. publicclassAssert{
  5. privatestaticvoidperr(Stringmsg){
  6. System.err.println(msg);
  7. }
  8. publicfinalstaticvoidis_true(booleanexp){
  9. if(!exp)perr("Assertionfailed");
  10. }
  11. publicfinalstaticvoidis_false(booleanexp){
  12. if(exp)perr("Assertionfailed");
  13. }
  14. publicfinalstaticvoid
  15. is_true(booleanexp,Stringmsg){
  16. if(!exp)perr("Assertionfailed:"+msg);
  17. }
  18. publicfinalstaticvoid
  19. is_false(booleanexp,Stringmsg){
  20. if(exp)perr("Assertionfailed:"+msg);
  21. }
  22. }///:~
复制代码
这个类只是复杂地封装了布尔测试。假如失利,就显现出堕落动静。在第9章,人人还会进修一个更初级的毛病把持工具,名为“背例把持”。但在今朝这类情形下,perr()办法已能够很好地事情。
假如想利用这个类,可在本人的程序中到场上面这一行:
importcom.bruceeckel.tools.debug.*;
如欲扫除判定机制,以便本人能刊行终极的代码,我们创立了第二个Assert类,但倒是在一个分歧的包里:
  1. //:Assert.java
  2. //Turningofftheassertionoutput
  3. //soyoucanshiptheprogram.
  4. packagecom.bruceeckel.tools;
  5. publicclassAssert{
  6. publicfinalstaticvoidis_true(booleanexp){}
  7. publicfinalstaticvoidis_false(booleanexp){}
  8. publicfinalstaticvoid
  9. is_true(booleanexp,Stringmsg){}
  10. publicfinalstaticvoid
  11. is_false(booleanexp,Stringmsg){}
  12. }///:~
复制代码
如今,假设将前一个import语句酿成上面这个模样:
importcom.bruceeckel.tools.*;
程序便不再显现出断言。上面是个例子:
  1. //:TestAssert.java
  2. //Demonstratingtheassertiontool
  3. packagec05;
  4. //Commentthefollowing,anduncommentthe
  5. //subsequentlinetochangeassertionbehavior:
  6. importcom.bruceeckel.tools.debug.*;
  7. //importcom.bruceeckel.tools.*;
  8. publicclassTestAssert{
  9. publicstaticvoidmain(String[]args){
  10. Assert.is_true((2+2)==5);
  11. Assert.is_false((1+1)==2);
  12. Assert.is_true((2+2)==5,"2+2==5");
  13. Assert.is_false((1+1)==2,"1+1!=2");
  14. }
  15. }///:~
复制代码
经由过程改动导进的package,我们可将本人的代码从调试版本酿成终极的刊行版本。这类手艺可使用于任何品种的前提代码。
你希望java的IDE整合。这个是没有必要的,重要的是你理解java有多深以及怎么组织你的代码,即使没有IDE,代码照样能够编译运行的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-22 14:37

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表