面试积累 java篇(一)

程序查错题

1、

public class Something {
   public int addOne(final int x) {
       return ++x;
   }
}
存在错误。 final 修饰成员变量视为常量,不能改变值

2、

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;
}

不存在错误。首先,我们需要明确,final 修饰的变量是不能改变值的。
final Other o 修饰o,o是指向Other 对象的引用,所以o是不能改变的
o.i++   是可以改变的

3、

class Something {
    int i;
    public void doSomething() {
        System.out.println("i = " + i);
    }
} 
没有错,输出i=0     int i;没有赋值的话,默认给0

4、

class Something {
    final int i;
    public void doSomething() {
        System.out.println("i = " + i);
    }
}

错,首先final 修饰的值,不能改变。所以 定义的时候,就给它初始化值,准没错

5、

此处,Something类的文件名叫OtherThing.java
class Something {
    private static void main(String[] something_to_do) {        
        System.out.println("Do something ...");
    }
}
没有错的,一个.java文件是可以放多个类的,
但是只能有一个public 修饰的class类,且必须与文件名相同

6、Integer与int的区别
Integer是java为int提供的封装类。int的默认值为0,而Integer的默认值为null,即Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况,例如,要想表达出没有参加考试和考试成绩为0的区别,则只能使用Integer。

7、请说出作用域public,private,protected,以及不写时的区别
这四个作用域的可见范围如下表所示。
说明:如果在修饰的元素上面没有写任何访问修饰符,则表示friendly。

作用域    当前类 同一package 子孙类 其他package 
public    √     √          √       √ 
protected  √     √          √      × 
friendly   √     √          ×      × 
private    √     ×          ×      × 

8、java中实现多态的机制是什么?

父类或者接口的定义的变量指向子类或实现类的实力对象,在程序调用的时候动态绑定,就是引用对象指向具体实例类对象的方法。

9、abstract class 和interface有什么区别:

首先描述abstract类:用abstract 修饰的class类为抽象类,abstract不能实例化。不能有抽象构造方法或抽象静态方法

区别:
1、抽象类可以有普通的成员变量,而接口定义的方法默认
为public abstract,定义的成员变量类型默认为 public static final
2、抽象类可以有构造方法,接口没有构造方法,
3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。
4. 抽象类中的抽象方法的访问类型可以是public,protected和(默认类型,虽然
eclipse下不报错,但应该也不行),
但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。

10 Java中的异常处理机制的简单原理和应用

面试积累 java篇(一)_第1张图片
异常

你可能感兴趣的:(面试积累 java篇(一))