|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
最后我再次声明,我并没有说不看好java,实际上我对java很乐观的,毕竟她正在不断改进中,我相信她总有一天会和.net并驾齐驱的6.
classSomething{
inti;
publicvoiddoSomething(){
System.out.println("i="+i);
}
}
有甚么错呢?看不出来啊。
谜底:准确。输入的是"i=0"。inti属於instantvariable(实例变量,或叫成员变量)。instantvariable有defaultvalue。int的defaultvalue是0。
7.
classSomething{
finalinti;
publicvoiddoSomething(){
System.out.println("i="+i);
}
}
和下面一题只要一个中央分歧,就是多了一个final。这岂非就错了吗?
谜底:错。finalinti是个final的instantvariable(实例变量,或叫成员变量)。final的instantvariable没有defaultvalue,必需在constructor(机关器)停止之前被付与一个明白的值。能够修正为"finalinti=0;"。
8.
publicclassSomething{
publicstaticvoidmain(String[]args){
Somethings=newSomething();
System.out.println("s.doSomething()returns"+doSomething());
}
publicStringdoSomething(){
return"Dosomething...";
}
}
看上往很完善。
谜底:错。看上往在main里calldoSomething没有甚么成绩,究竟两个methods都在统一个class里。但细心看,main是static的。staticmethod不克不及间接callnon-staticmethods。可改成"System.out.println("s.doSomething()returns"+s.doSomething());"。同理,staticmethod不克不及会见non-staticinstantvariable。
9.
此处,Something类的文件名叫OtherThing.java
classSomething{
privatestaticvoidmain(String[]something_to_do){
System.out.println("Dosomething...");
}
}
这个仿佛很分明。
谜底:准确。历来没有人说过Java的Class名字必需和其文件名不异。但publicclass的名字必需和文件名不异。
10.
明天最难的一题:
interfacePlayable{
voidplay();
}
interfaceBounceable{
voidplay();
}
interfaceRollableextendsPlayable,Bounceable{
Ballball=newBall("PingPang");
}
classBallimplementsRollable{
privateStringname;
publicStringgetName(){
returnname;
}
publicBall(Stringname){
this.name=name;
}
publicvoidplay(){
ball=newBall("Football");
System.out.println(ball.getName());
}
}
这个毛病不简单发明。
谜底:错。"interfaceRollableextendsPlayable,Bounceable"没有成绩。interface可承继多个interfaces,以是这里没错。成绩出在interfaceRollable里的"Ballball=newBall("PingPang");"。任安在interface里声明的interfacevariable(接口变量,也可称成员变量),默许为publicstaticfinal。也就是说"Ballball=newBall("PingPang");"实践上是"publicstaticfinalBallball=newBall("PingPang");"。在Ball类的Play()办法中,"ball=newBall("Football");"改动了ball的reference,而这里的ball来自Rollableinterface,Rollableinterface里的ball是publicstaticfinal的,final的object是不克不及被改动reference的。因而编译器将在"ball=newBall("Football");"这里显现有错。
专门做了这个例子;而java的这个例子好像就是为了教学而写的,很多教学目的的例子是不考虑优化、性能的。 |
|