|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
再说说缺点:首先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++基本一致,但是启动速度还是慢.代码安全,但容易性能陷阱. |
|