《Java面试题汇总》是一本全面总结Java编程相关问题的资料集,涵盖基础知识、设计模式及实际项目案例等多方面内容,旨在帮助开发者准备面试并提升技术水平。
1. 这段代码中的错误在于抽象方法不能包含实现细节。正确形式应该是:
```java
abstract class Name {
private String name;
public abstract boolean isStupidName(String name);
}
```
2. 局部变量前不能使用访问修饰符,如private、public或protected。
```java
public void doSomething() {
int l = s.length(); //s应该是方法参数或者类的成员变量。
}
```
3. 抽象方法不能被声明为私有(private)。抽象方法需要子类实现其具体逻辑:
```java
abstract class Something {
public abstract String doSomething();
}
```
4. final修饰符用于禁止对一个值进行重新赋值,但这里的x是一个基本类型(int),它在每次递增时都会创建新的int值,因此不会违反final规则。不过如果意图是防止修改引用,则应使用对象。
5. 代码正确。尽管o被声明为final, 但它允许改变其成员变量i的值。只有当试图重新赋值给o本身时会出错:
```java
public void addOne(final Other o) {
// o = new Other(); 这种写法是不允许的。
}
```
6. 正确,输出结果为i = 0。
7. 错误。final实例变量没有默认值,必须在构造器中赋初始值:
```java
class Something {
final int i;
public Something() {
i = 1; // 必须初始化。
}
}
```
8. 静态方法不能直接访问非静态成员。需要创建对象实例来调用非静态方法,或者将doSomething声明为static。
```java
public static void main(String[] args) {
Something s = new Something();
System.out.println(s.doSomething() returns + s.doSomething());
}
```
9. 正确,类名和文件名不一定相同。但公共类必须与文件同名:
```java
// 文件名为OtherThing.java
public class OtherThing {
public static void main(String[] args) {
System.out.println(Do something ...);
}
}
```
10. 错误。接口中的变量默认为`public static final`,这里需要明确指定是哪个x:
```java
class C extends B implements A {
public void pX() {
System.out.println(A.x); // 明确指明使用A的x。
}
}
```
11. 这段代码中Ball类试图实例化自身,这会导致编译错误。需要移除`ball = new Ball(Football);`这一行:
```java
public void play() {
System.out.println(this.getName()); // 使用this来明确当前对象。
}
```
这些修改解决了上述各示例中的问题和潜在的错误情况。