`
r2100
  • 浏览: 29802 次
  • 来自: ...
社区版块
存档分类
最新评论

java编码中的一些经验和教训

阅读更多
这几天集中时间重拾388备份文件格式研究,使用的工具主要是netbeans、010 editor、excel。netbeans用来测试分析处的规律,用java语言实现;010 editor主要是二进制或者说十六进制的形式显示被分析文件,功能较强,主要表现在显示和组合方面;excel用来格式化显示十六进制的块,显示相应的文本或者数值,并可以添加注释,标注未知区域,为下步分析留下痕迹并做好准备。java语言远远还没有用熟,从本次应用级别的操作展现的非常充分,汗。下面记录一些java使用中犯下的错误以及个人认为需要重点关注的地方,都是小东西,但是me认为对以后少犯这种低级错误有帮助^_^


一、byte[]中的值。

从文件中读取512个字节到byte[] ba;byte应该是0到255,但是在直接转换为int类型的时候出现了负值。这个问题刚开始搞的me狼狈不堪,后来才发现是这个原因。用int i = ba[1]&0xff;才算解决问题。


二、string和stringbuffer。

前者是不可变的,后者是可变的。曾经想给string类型的变量重新赋值,呵呵,毫不客气的出错。后来对于可能变化的字符串,一律采用stringbuffer。再一点就是传入函数的字符串,如果还要传出结果,必须采用后者,即stringbuffer。


三、swtich case语句中忘掉了case中的break终止。

这个可真是害死人的。当时正为格式未定在测试,本来就不是很确定,报出一堆错误,只好从头分析,分析来分析去觉得逻辑上应该没有什么问题了,再回头一看,嘿嘿,原来是忘了break,程序就顺着执行下去了。本来的分支结果全部执行了,不错才怪呐。


四、全局变量的使用。

如果记性不算太好的,对全局变量的使用一定要慎重,那怕仅仅是再一个较长的函数中。程序要接受命令行参数,如果没有参数指定就默认获取当前目录下的所有文件作为参数。因为默认文件列表的功能是后来添加进去的,调试不成功me就死劲的在新增的代码中找啊找啊找,啥都没有发现。me甚至又找到docs仔细查阅了file的说明档,并写了好多system.out.println();来逐步确定进程,后来无意中发现是使用了args[i]的缘故。哼,没有命令行参数,处理的时候自然毫无所获了,改为file[] fa;fa[i]才算解决问题。临时变量随用随声明,用完就丢,进来不要做全局设计。int filelen;不如file.length()来的快捷方便准确。


五、hashcode和equals。

向集合中添加对象的时候,该对象会调用方法比较时候已经存在,这时候就要调用相应的方法,hashcode和equals的调用顺序是先前者然后才是后者。override这些方法可以定义自己的对象,使之在比较的时候显示出自己设想的效果。


六、unicode的表达方式。

直接char c=\uf099;是不行的,正确的方式是char c = \uf099;


七、显示某数值的hex值。

int对应的是integer,long对应的是long。为了好看些,主意tohex后继续touppercase。


八、for语句中的continue是继续的意思,还有while。

终止这次操作,继续下一个循环。


九、对日期进行加减运算时使用calendar而不是date,格式化显示用dateformat。格式化时主意locale的使用。


十、如果不想费力辨认e文,那就不要漏掉catch用的system.out。
分享到:
评论

相关推荐

    程序设计实践(中文高清版)

    3.9 经验教训 第4章 界面 4.1 逗号分隔的值 4.2 一个原型库 4.3 为别人用的库 4.4 C++实现 4.5 界面原则 4.6 资源管理 4.7 终止、重试或失败 4.8 用户界面 第5章 排错 5.1 排错系统 5.2 好线索,简单错误 5.3 无线索...

    codility-lessons:从代码中吸取教训的解决方案

    编码课程 从代码中吸取教训的解决方案

    程序设计实践 (pdf)

    3.9 经验教训 64 第4章 界面 67 4.1 逗号分隔的值 67 4.2 一个原型库 69 4.3 为别人用的库 72 4.4 C++实现 79 4.5 界面原则 82 4.6 资源管理 84 4.7 终止、重试或失败 86 4.8 用户界面 90 第5章 排错 93 5.1 排错...

    程序设计实践

    3.9 经验教训 64 第4章 界面 67 4.1 逗号分隔的值 67 4.2 一个原型库 69 4.3 为别人用的库 72 4.4 C++实现 79 4.5 界面原则 82 4.6 资源管理 84 4.7 终止、重试或失败 86 4.8 用户界面 90 第5章 排错 93 5.1 排错...

    程序设计实践 程序设计实践

    3.9 经验教训 64 第4章 界面 67 4.1 逗号分隔的值 67 4.2 一个原型库 69 4.3 为别人用的库 72 4.4 C++实现 79 4.5 界面原则 82 4.6 资源管理 84 4.7 终止、重试或失败 86 4.8 用户界面 90 第5章 排错 93 ...

    软件工程-程序设计实践

    3.9 经验教训 64 第4章 界面 67 4.1 逗号分隔的值 67 4.2 一个原型库 69 4.3 为别人用的库 72 4.4 C++实现 79 4.5 界面原则 82 4.6 资源管理 84 4.7 终止、重试或失败 86 4.8 用户界面 90 第5章 排错 93 5.1 排错...

    程序设计实践(The Prictice of Programming)

    3.9 经验教训 64 第4章 界面 67 4.1 逗号分隔的值 67 4.2 一个原型库 69 4.3 为别人用的库 72 4.4 C++实现 79 4.5 界面原则 82 4.6 资源管理 84 4.7 终止、重试或失败 86 4.8 用户界面 90 第5章 排错 93 ...

    程序设计实践(有目录)

    3.9 经验教训 64 第4章 界面 67 4.1 逗号分隔的值 67 4.2 一个原型库 69 4.3 为别人用的库 72 4.4 C++实现 79 4.5 界面原则 82 4.6 资源管理 84 4.7 终止、重试或失败 86 4.8 用户界面 90 第5章 排错 93 ...

    腾讯开源的分布式毫秒服务引擎 msec.zip

    10年的海量服务开发运营经验和教训使得我们深刻的认识到:要尽早规范团队的开发服务框架,避免到了后期,各种开发语言混杂、各类存储组件充斥、重复编码、每个模块形态不统一、文档缺失、监控瘫痪、人员离职造成大量...

    beyond-lambdas-the-aftermath:超越Lambdas-后果

    此仓库包含Daniel Deogun和Daniel Sawano在演示“超越lambdas,后果”中使用的示例代码。 相关演示的幻灯片可以在这里找到: : 抽象的 作为Java开发人员,我们已经习惯于拥有丰富的库和工具生态系统,这使我们的...

    代码之美(中文完整版).pdf

    12.4. 结束语和教训 第13章 基因排序器的设计 13.1 基因排序器的用户界面 13.2 通过Web跟用户保持对话 13.3. 多态的威力 13.4 滤除无关的基因 13.5 大规模美丽代码理论 13.6 结论 第14章 优雅代码随硬件发展的演化 ...

    小发明

    小发明实时网站: : 最有价值球员技术领域HTML5 CSS3 Java脚本拉克特PHP 邮差方法未解决的问题用户可以上传个人资料图片,而不使用网址用户可以更新用户名和密码得到教训该项目的最小部分是编码,而在小组中工作时...

    Python核心编程第二版(ok)

     6.8.7 从现实中得来的教训   6.8.8 Python的Unicode支持   6.9 相关模块   6.10 字符串关键点总结  6.11 列表   6.12 操作符   6.12.1 标准类型操作符   6.12.2 序列类型操作符   6.12.3 ...

    Python核心编程第二版

     6.8.7 从现实中得来的教训   6.8.8 Python的Unicode支持   6.9 相关模块   6.10 字符串关键点总结  6.11 列表   6.12 操作符   6.12.1 标准类型操作符   6.12.2 序列类型操作符   6.12.3 ...

    XML轻松学习手册--XML肯定是未来的发展趋势,不论是网页设计师还是网络程序员,都应该及时学习和了解

    我想就我个人学习过程的心得和经验,写一篇比较全面的介绍文章。首先有两点是需要肯定的:  第一:XML肯定是未来的发展趋势,不论是网页设计师还是网络程序员,都应该及时学习和了解,等待只会让你失去机会;  ...

    华为编程开发规范与案例

    1 逻辑类问题(A类)-指设计、编码中出现的计算正确性和一致性、程序逻辑控制等方面出现的问题,在系统中起关键作用,将导致软件死机、功能正常实现等严重问题; 接口类问题(B类)-指设计、编码中出现的函数和...

    unit-0:单元0的课程和资料

    while循环](教训/ week-1 / 2015-03-08 boolean and while.md)5 | 3月10日| | 6 | 3月12日| | 7 | 3月14日| | 8 | 3月15日| 2 | 9 | 3月17日| | 10| 3月19日| | 11| 3月21日| | 12 | 3月22日| 3 | 编码,URL,...

Global site tag (gtag.js) - Google Analytics