|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
但是一些大型开发或者是保密型比较高的项目都会用java,原因有2点,一:java是开源的,不怕别人留后门,偷我工具,.net网页编程就不一样了,保持微软的一向风格,源代码不公开
一个学员已经问了我一个他在sun公司的论坛上看到的怪成绩,由于这个成绩一向没有人解答,加上这个成绩所触及的常识有点偏门,以是,我断言这个成绩最少有98%的Java程序员不会!
(之以是这么断言,是由于我碰到的妙手和低手程序员,仿佛并没有精神往研讨那些噜苏的细节,而且他们事情中仿佛也不必要。假如你看到了这个成绩,再往查书和思索,终极找出谜底,在这之前也应当算不会,呵呵,别的,100个java程序员中有2个会这个,其实不太过,如今已有2000人看了这篇文章,最少应当有40团体会这个成绩,人人不要看上面有几个会的,就疏忽了那些没有宣布定见的看客,我的98%不夸大)。
假如你不会这个成绩,其实不代表你的程度比我低呵,由于这个成绩只要我等孔乙几才往玩弄,列位看了,就当消遣。
成绩:
publicclassParent
{
publicvoidtest()
{}
publicParent()
{
test();
}
publicstaticvoidmain(String[]args)
{
newChild();
}
}
classChildextendsParent
{
privateintinstanceValue=20;
publicvoidtest()
{
System.out.println("instancevalueis:"+instanceValue);
}
}
列位先猜猜打印的了局是几呢?为何呢?
----------------------------------------------------------------
谜底:上面是摘自自己编写的《Java失业培训教程》中的一段报告,请人人注重第(4)步和第(5)步的解说,挪用完父类的机关办法后,接着才举行成员变量的显式初始化操纵,下面代码中的privateintinstanceValue=20;界说应当作两部分:第一部分是界说变量,第二部分是给变量赋值,变量界说位于父类机关办法之前,变量赋值位于父类机关办法以后。在父类的机关办法实行时,依据多态性,它会往挪用子类中界说的test()办法,但是,这时候候,子类中的成员变量还没实行显式初始化操纵,关于privateintinstanceValue=20;界说,instanceValue的值为默许的初始化值0,以是,这时候候在test办法中打印出的值为0。
4.1.3子类对象的实例化历程
关于很多Java内行来讲,子类对象的实例化历程也不见得十分分明,你大概其实不必要完整懂得子类对象的实例化历程,但懂得后仍是有优点的。
对象中的成员变量的初始化是按下述步骤举行的:
(1)分派成员变量的存储空间并举行默许的初始化,就是用new关头字发生对象后,对类中的成员变量按第三章的表3.1中的对应干系对对象中的成员变量举行初始化赋值。
(2)绑定机关办法参数,就是newPerson(实践参数列表)中所传送进的参数赋值给机关办法中的情势参数变量。
(3)若有this()挪用,则挪用响应的重载机关办法(被挪用的重载机关办法又从步骤2入手下手实行这些流程),被挪用的重载机关办法的实行流程停止后,回到以后机关办法,以后机关办法间接跳转到步骤(6)实行。(归正要往挪用父类的机关函数,假如挪用this,那末this指向的机关函数就会往挪用父类的机关函数,我这个机关函数自己就不必再挪用父类的机关函数了,假如没有挪用this,那我这个机关函数就必需往挪用父类的机关函数)
(4)若有没有this()挪用,显式或隐式追溯挪用父类的机关办法(一向到Object类为止,Object是一切Java类的最顶层父类,/*在本章前面部分有具体解说*/),父类的机关办法又从步骤2入手下手对父类实行这些流程,父类的机关办法的实行流程停止后,回到以后机关办法,以后机关办法持续往下实行。
(5)举行成员变量的显式初始化操纵,也就是实行在界说成员变量时就对其举行赋值的语句,如:
publicStudentextendsPerson
{
Stringschool=”it315”;//显式初始化
……
}
将“it315”赋值给school成员变量。
(6)实行以后机关办法的办法体中的程序代码,如:
publicStudentextendsPerson
{
publicStudent(Stringname,intage,Stringschool)
{
super(name,age);
this.school=school;
}
}
Java编译的是字节码,跟C++相反,启动不够快,效率不够高,难以精确控制内存,但是优点是编程比C++容易,代码比较安全但是容易留下性能隐患,跨平台靠字节码在各个平台复制(一处编译到处调试) |
|