作者:爱塔居
专栏:笔试强训
作者简介:大三学生,希望和大家一起进步
目录
day9
day10
一. 单选
1.下面程序的输出是:()
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
x.toUpperCase()将字符串从小写转换成大写字母FMN,但是x本身没有变,还是fmn。
y-x.repalce('f','F'),将fmn转换成Fmn,再加上'wxy',得到y等于Fmnwxy
2.在 java 中,一个类可同时定义为许多同名的方法,这些方法的形式参数个数,类型或顺序各不相同,传回的值可能各不相同,这种面向对象的特性称为()
A 隐藏
B 覆盖
C 重载
D 无此特性
覆盖指的是子类继承父类,重写父类方法
3. 关于 JAVA 堆,下面说法错误的是()
A 所有类的实例和数组都是在堆上分配内存的
B 对象所占的堆内存是由自动内存管理系统回收
C 堆内存由存活和死亡的对象,空闲碎片区组成
D 数组是分配在栈中的
4.JAVA语言的下面几种数组复制方法中,哪个效率最高?
A for循环逐一复制
B System.arraycopy
C Arrays.copyOf
D 使用clone方法
其中for循环逐一复制,效率是最低的,因为下标表示法每次都从起点开始寻位到指定下标处。另外就是它每一次循环都要判断依次是否达到数组最大长度和进行依次额外的记录下标值的加法运算。
System.arraycopy是浅拷贝,也就是说对于非基本类型而言,它拷贝的是对象的引用,而不是去新建一个新的对象。
System.arraycopy>Object.clone>Arrays.copyOf>for
5.()仅包含方法定义和常量值。
A 接口
B 变量
C 单元
D 成员
6..对文件名为Test.java的java代码描述正确的是()
class Person {
String name = "No name";
public Person(String nm) {
name = nm;
}
}
class Employee extends Person {
String empID = "0000";
public Employee(String id) {
empID = id;
}
}
public class Test {
public static void main(String args[]) {
Employee e = new Employee("123");
System.out.println(e.empID);
}
A 输出:0000
B 输出:123
C 编译报错
D 输出:No name
public Person(String nm) {
name = nm;}
这是一个有参的构造函数
当父类没有无参的构造方法,我们需要在子类的构造方法中显示的调用父类带参数的构造方法。先用super调用父类构造函数,再调用子类构造函数
7.有关下述Java代码描述正确的选项是____。
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
无论new多少个该类的实例,static方法只有一份,属于类本身。
8.在jdk1.5之后,下列 java 程序输出结果为______。
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是包装类型。==比的是两个数的值。在做判断时,对j做了自动拆箱操作,所以true
j.equal()传的是value值
1.下面代码运行结果是()
public class Test{
public int add(int a,int b){
try {
return a+b;
}
catch (Exception e) {
System.out.println("catch语句块");
}
finally{
System.out.println("finally语句块");
}
return 0;
}
public static void main(String argv[]){
Test test =new Test();
System.out.println("和是:"+test.add(9, 34));
}
}
A catch语句块 和是:43
B 编译异常
C finally语句块 和是:43
D 和是:43 finally语句块
try-catch-finally的执行顺序_finally在catch之前执行吗_Archie_java的博客-CSDN博客
2,下列Java代码中的变量a、b、c分别在内存的____存储区存放。
class A {
private String a = “aa”;
public boolean methodB() {
String b = “bb”;
final String c = “cc”;
}
}
A 堆区、堆区、堆区
B 堆区、栈区、堆区
C 堆区、栈区、栈区
D 堆区、堆区、栈区
E 静态区、栈区、堆区
F 静态区、栈区、栈区
a是全局变量,b和c是局部变量。
全局变量存放在堆中,局部变量存放在栈区。
4. 以下声明合法的是
A default String s
B public final static native int w( )
C abstract double d
D abstract final double hyperbolicCosine( )
5.下面代码的输出结果是什么?
public class ZeroTest {
public static void main(String[] args) {
try{
int i = 100 / 0;
System.out.print(i);
}catch(Exception e){
System.out.print(1);
throw new RuntimeException();
}finally{
System.out.print(2);
}
System.out.print(3);
}
}
A 3
B 123
C 1
D 12
6.有代码片段如下:
byte b1=1,b2=2,b3,b6;
final byte b4=4,b5=6;
b6=b4+b5;
b3=(b1+b2);
System.out.println(b3+b6);
A 输出结果:13
B 语句:b6=b4+b5编译出错
C 语句:b3=b1+b2编译出错
D 运行期抛出异常
+运算符 byte-->int
final修饰的数不会再发生变化,b6=b4+b5,得到的还是byte。
然后b3=(b1+b2),byte-->int
两个相加,会编译出错。
7.以下java程序代码,执行后的结果是()
public class Test {
public static void main(String[] args) {
Object o = new Object() {
public boolean equals(Object obj) {
return true;
}
};
System.out.println(o.equals("Fred"));
}
}
A Fred
B true
C 编译错误
D 运行时抛出异常
Object类是所有类的父类。
字符串是String类,继承自Object。
8.执行以下程序后的输出结果是()
public class Test {
public static void main(String[] args) {
StringBuffer a = new StringBuffer("A");
StringBuffer b = new StringBuffer("B");
operator(a, b);
System.out.println(a + "," + b);
}
public static void operator(StringBuffer x, StringBuffer y) {
x.append(y); y = x;
}
}
A A,A
B A,B
C B,B
D AB,B