教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 教育文库 >

构造最全的Java面试题整理(JAVA 代码查错)

来源:网络收集 时间:2026-09-08
导读: 构造最全的Java面试题整理(JAVA 代码查错) 1.下面代码有什么错误 abstract class Name { private String name; public abstract boolean isStupidName(String name) {} } 答案 : 抽象方法不应该有实现,abstract method 必须以分号结尾,且不带花括号。 2.下

构造最全的Java面试题整理(JAVA 代码查错)

1.下面代码有什么错误

abstract class Name {

private String name;

public abstract boolean isStupidName(String name) {}

}

答案 : 抽象方法不应该有实现,abstract method 必须以分号结尾,且不带花括号。

2.下面代码有什么错误

public class Something {

void doSomething () {

private String s = "";

int l = s.length();

}

}

答案 :

局部变量前不能放置任何访问修饰符 (private , public ,和 protected) 。 final 可以用来修饰局部变量

(final 如同 abstract 和 strictfp ,都是非访问修饰符, strictfp 只能修饰 class 和method 而非 variable) 。

3.下面代码有什么错误

abstract class Something {

private abstract String doSomething ();

}

答案 :

abstract 的methods 不能以private 修饰。abstract 的methods 就是让子类implement( 实现 ) 具体细节的,怎么可以用 private 把 abstract

method 封锁起来呢 ? ( 同理, abstract method 前不能加 final) 。

4.下面代码有什么错误

构造最全的Java面试题整理(JAVA 代码查错)

public class Something {

public int addOne(final int x) {

return ++x;

}

}

答案 :

int x 被修饰成 final ,意味着 x 不能在 addOne method 中被修改。

5.下面代码有什么错误

public class Something {

public static void main(String[] args) {

Other o = new Other();

new Something().addOne(o);

}

public void addOne(final Other o) {

o.i++;

}

}

class Other {

public int i;

}

答案 :

正确。在 addOne method 中,参数 o 被修饰成 final 。如果在 addOne method 里我们修改了 o 的 reference

( 比如 : o = new Other();) ,那么如同上例这题也是错的。但这里修改的是 o 的 member vairable

( 成员变量 ) ,而 o 的 reference 并没有改变。

6.下面代码有什么错误

class Something {

int i;

public void doSomething() {

System.out.println("i = " + i);

}

构造最全的Java面试题整理(JAVA 代码查错)

}

答案 : 正确。输出的是 "i = 0" 。 int i 属於 instant variable ( 实例变量,或叫成员变量 ) 。 instant variable 有 default value 。 int 的 default value 是 0 。

7.下面代码有什么错误

class Something {

final int i;

public void doSomething() {

System.out.println("i = " + i);

}

}

答案 :

final int i 是个 final 的 instant variable ( 实例变量,或叫成员变量 ) 。 final 的instant variable 没有 default value ,必须在 constructor ( 构造器 ) 结束之前被赋予一个明确的值。可以修改为 "final int i = 0;" 。

8.下面代码有什么错误

public class Something {

public static void main(String[] args) {

Something s = new Something();

System.out.println("s.doSomething() returns " + doSomething());

}

public String doSomething() {

return "Do something ...";

}

}

答案 :

错。看上去在 main 里 call doSomething 没有什么问题,毕竟两个 methods 都在同一个class 里。但仔细看, main 是 static 的。 static method 不能直接 call non-static methods 。可改成"System.out.println("s.doSomething() returns " + s.doSomething());" 。同理, static method 不能访问 non-static instant variable 。

9.此处, Something 类的文件名叫 OtherThing.java

里面的代码,如下:

构造最全的Java面试题整理(JAVA 代码查错)

class Something {

private static void main(String[] something_to_do) {

System.out.println("Do something ...");

}

}

答案 :

正确。从来没有人说过 Java 的 Class 名字必须和其文件名相同。但 public class 的名字必须和文件名相同。

10 .下面代码有什么错误

interface A{

int x = 0;

}

class B{

int x =1;

}

class C extends B implements A {

public void pX(){

System.out.println(x);

}

public static void main(String[] args) {

new C().pX();

}

}

答案:

错误。在编译时会发生错误 ( 错误描述不同的 JVM 有不同的信息,意思就是未明确的 x 调用,两个 x 都匹配(就象在同时 import java.util 和 java.sql 两个包时直接声明 Date 一样)。对于父类的变量 , 可以用 super.x 来明确,而接口的属性默认隐含为 public static final. 所以可以通过 A.x 来明确。

11.下面代码有什么错误

interface Playable {

void play();

}

interface Bounceable {

void play();

}

interface Rollable extends Playable, Bounceable {

构造最全的Java面试题整理(JAVA 代码查错)

Ball ball = new Ball("PingPang");

}

class Ball implements Rollable {

private String name;

public String getName() {

return name;

}

public Ball(String name) {

http://doc.guandang.net = name;

}

public void play() {

ball = new Ball("Football");

System.out.println(ball.getName());

}

}

答案 :

错。 "interface Rollable extends Playable, Bounceable" 没有问题。 interface 可继承多个 interfaces ,所以这里没错。问题出在 interface Rollable 里的 "Ball ball = new Ball("PingPang");" 。任何在 interface 里声明的 interface variable ( 接口变量,也可称成员变量) ,默认为public static final 。也就是说"Ball ball = new Ball("PingPang");" 实际上是"public static final Ball ball = new Ball("PingPang");" 。在 Ball 类的 Play() 方法中, "ball = new Ball("Football");" 改变了ball 的reference ,而这里的ball 来自Rollable interface ,Rollable interface 里的 ball 是 public static final 的, final 的 object 是不能被改变reference 的。因此编译器将在 "ball = new Ball("Football");" 这里显示有错。

…… 此处隐藏:2156字,全部文档内容请下载后查看。喜欢就下载吧 ……
构造最全的Java面试题整理(JAVA 代码查错).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/1809581.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)