发布一篇诊断Java代码: 吊挂复合毛病范例
再说说缺点:首先java功能强大的背后是其复杂性,就拿web来说,当今流行的框架有很多,什么struts,spring,jQuery等等,而这无疑增加了java的复杂性。空指针各处都有!
在一个Java程序员所能碰到的一切非常中,空指针非常属于最可怕的,这是由于:它是程序能给出的信息起码的非常。比方,不像一个类转型非常,空指针非常不给出它所必要的内容的任何信息,只要一个空指针。别的,它其实不指出在代码的那边这个空指针被赋值。在很多空指针非常中,真实的毛病呈现在变量被赋为空值的中央。为了发明毛病,我们必需经由过程把持流跟踪,以发明变量在那里被赋值,并断定是不是这么做是不准确的。当赋值呈现在包中,而不是呈现在产生报错的中央时,历程会被分明地损坏。
很多Java开辟职员告知我,他们所碰到的尽年夜多半程序溃散是空指针非常,而且他们巴望有一种工具,能在程序第一次运转前静态地辨认出这些毛病。不幸的是,主动把持实际告知我们,没有工具能够静态地决意哪些程序将抛出空指针非常。可是在一个程序中,用一个工具扫除很多空指针非常是有大概的,留给我们仅仅一小部分必要我们必需野生反省的潜伏的成绩地点。实践上,为了为Java程序(请参阅参考材料)供应如许一个工具,如今正做着一些研讨。可是一个好的工具也只能为我们做这些。空指针非常将决不会被完整肃除。当它们真的产生时,工具能帮我们弄清和它们相接洽的毛病范例,如许我们能疾速诊断它们。别的,我们能够使用某些编程和计划技能来明显削减这些范例毛病的呈现。
吊挂复合范例
我们将切磋的第一个关于空指针非常的毛病范例,是一个我称之为吊挂复合范例的毛病范例。这类范例的毛病是如许发生的:界说的某些基础例没有被给出它们本人的类,然后以这类办法界说了一个递回的数据范例。相反,空指针被拔出到分歧的复合数据范例中。数据范例实例的利用就仿佛空指针被准确添补了一样。我称之为吊挂复合范例是由于抵触代码是复合计划范例的一个出缺点的使用程序,个中,复合数据范例包括吊挂的援用(也就是空指针)。
缘故原由
思索上面LinkedList类的单毗连实行,它有一个吊挂复合范例。为了示例的复杂起见,我只实行在java.util.LinkedList中界说的一些办法。为了显现这类范例的毛病是何等潜伏,我已鄙人面代码中引进一个毛病。看看你是不是能发明它。
>清单1.单毗连链表
importjava.util.NoSuchElementException;
publicclassLinkedList{
privateObjectfirst;
privateLinkedListrest;
/**
*ConstructsanemptyLinkedList.
*/
publicLinkedList(){
this.first=null;
this.rest=null;
}
/**
*ConstructsaLinkedListcontainingonlythegivenelement.
*/
publicLinkedList(Object_first){
this.first=_first;
this.rest=null;
}
/**
*ConstructsaLinkedListconsistingofthegivenObjectfollowedby
*alltheelementsinthegivenLinkedList.
*/
publicLinkedList(Object_first,LinkedList_rest){
this.first=_first;
this.rest=_rest;
}
}
<p>
C#跟java类似,但是在跨平台方面理论上可以跨平台,实际上应用不大,执行性能优于java,跟C++基本一致,但是启动速度还是慢.代码安全,但容易性能陷阱. Java是一种计算机编程语言,拥有跨平台、面向对java 你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。 Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。 http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。 是一种使用者不需花费很多时间学习的语言 科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。 任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言 你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。 不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。 学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。 你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。 科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。 http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。 科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。 你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
页:
[1]