文章目录
1.下面程序的输出是:(D)
String x="fmn";
x.toUpperCase();
String y=x.replace('f','F');
y=y+"wxy";
System.out.println(y);
A FmNwxy
B fmnwxy
C wxyfmn
D Fmnwxy
思路:toUpperCase()是将小写字母转化为大写字母,即将"fmn"转化为了"FMN"但是x本身并没有改变;replace是用F替换了f
补充个知识:覆盖指的是子类继承父类,把父类的方法进行重写;所有又new关键字得到的对象都是分配在堆上的
2.JAVA语言的下面几种数组复制方法中,哪个效率最高?(B)
A for循环逐一复制
B System.arraycopy
C Arrays.copyOf
D 使用clone方法
思路:1.for的速度最慢,因为下标表示法每次都是从起点开始寻找到指定下标处,他的每一次循环都要判断一次是否达到数组最大长度和进行一次额外的记录下标值的加法运算
2.System.arraycopy是浅拷贝,意思是对于非基本类型而言,他拷贝的是对象的引用而不是创建一个新的对象
3.Arrays.copyOf的源码:可以看到他首先要创建一个数组对象,并且有调用System.arraycopy,所以它的效率一定是低于System.arraycopy的
4.clone对对象来说是浅拷贝,对数组来说是深拷贝
5.综上四个方法的效率排名为System.arraycopy > clone > Arrays.copyOf > for
3.有关下述Java代码描述正确的选项是(F)
public class TestClass {
private static void testMethod(){
System.out.println("testMethod");
}
public static void main(String[] args) {
((TestClass)null).testMethod();
}
}
A 编译不通过
B 编译通过,运行异常,报NullPointerException
C 编译通过,运行异常,报IllegalArgumentException
D 编译通过,运行异常,报NoSuchMethodException
E 编译通过,运行异常,报Exception
F 运行正常,输出testMethod
思路:对于由static修饰的方法,无论new多少个该类的实例,static的方法只有一份,属于该类本身
4.在jdk1.5之后,下列 java 程序输出结果为(B)
int i=0;
Integer j = new Integer(0);
System.out.println(i==j);
System.out.println(j.equals(i));
A true,false
B true,true
C false,true
D false,false
E 对于不同的环境结果不同
F 程序无法执行
思路:在进行i==j的判断的时候,会对jnew的对象进行自动拆箱