JA编程中的易错点

更新时间:2024-04-02 作者:用户投稿原创标记本站原创 点赞:3950 浏览:14412

摘 要:本文旨在罗列出在编码过程中极易出错的二处,它们都来自生活中,来自于我们学生日常编码的经验中,这些出错点大多都利用了那些会导致debug的行为,要么违反直觉,要么晦涩难懂,它们被认为是陷阱(trap)、缺陷(deficiency)、和小概率案例(corner case).任何具有JA应用知识的人都可以理解这些谜题,但是其中许多点对大多数师生造成了麻烦,我们通常花费数十个昼夜才能完全解决其中一个.我们探索出的解决方案大多引用了《JA语言规范第3版》,有些方案还涉及了对语言和API设计决策的讨论,大多数bug可以通过静态分析(static analysis )检测到.希望我们的总结能让苦恼于JA编程的人群更深层次理解这门语言.

关 键 词 :Ja;出错编码;陷阱缺陷;解决办法

中图分类号:TP311.52

1.静态导入难题

在编译器抉择使运行程序的方法之前,需要确定挑选程序运行方法的范围.编译器会优先考虑正确命名的方法并由此确定挑选范围,在本例中,这个范围就是importDuty类,因为其涵盖了隶属于Object的toString方法.但是,该范围内没有可以响应toString(args)调用的方法,因此编译器将不执行段程序,将显式出错.


即大家想要的toString方法没有被包含,至少在所调用的范围之内.导入的toString方法被importDuty从Object那里而来的同命名的方法所掩盖(shadow)了[JLS 6.3.1].在日常编程过程中,大家经常混淆遮蔽与遮掩的概念,二者的关键区别是一个声明只能遮蔽类型相同一个声明:一个方法声明可以遮蔽另一个方法声明.对于此问题,大家可以参照变量声明与包声明,以及类型声明和包声明的相互遮蔽关系,以上三组关系类似,希望对大家有所提示.

2.唯一奇数参数问题

这个简单的问题,是希望提醒广大编写爱好者,无论何时使用了取余符号,都要考虑操作数和结果的符号.该操作符号的行为在其操作数非负时一目了然,但是当一个或两个操作数是负数时,它的行为就不那么显而易见了,所以大家要警惕.

3.结语

以上只是Ja编写中易出错的两处,被我们引用来当作例子,希望对ja工作者有所提示,当然还有许多细节需要我们细心留意.Ja本身结构简单,语句巧妙,蕴含丰富的变化.其实本文也旨在宣言一种思路:如果我们能够在掌握书本知识的基础上,对我们常犯的错误加以总结、提炼及深化,我们对ja这门语言一定会有更深的体会和理解.