面试积累 java篇(一)
2017-09-27 本文已影响5人
大炮对着虫子
程序查错题
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中的异常处理机制的简单原理和应用
异常