单选题
2. 下面哪段程序能够正确的实现了GBK编码字节流到UTF-8编码字节流的转换:
byte[] src,dst;
A:dst=String.frombytes(src,”GBK”).getbytes(“UTF-8”)
B:dst=new String (src,”GBK”).getbytes(“UTF-8”)
C:dst=new String (”GBK”, src,) getbytes()
D:dst=String.encode(string.decode(src,”GBK”)), “UTF-8”)
参考答案:
B
3.单选
以下关于类和对象的说法,哪一个是错误的( )?
A:类是抽象的,对象是具体的
B:类可以产生多个对象,多个对象可以抽象出一个类
C:“人”这个类,可以具体化为学生、工人,因此学生和工人就是对象
D:类可以通过 new 产生对象
参考答案:
C
解析:
工人和学生仍然是一个抽象的概念,因此工人和类仍然是类。
7.单选
关于对象的初始化过程,以下顺序正确的是( )?
A:
①将成员变量赋为定义类时设置的初值。
②实例化对象时,成员变量初始化为默认值。
③通过初始化块给成员变量赋值
④调用构造方法时,使用构造方法所带的参数初始化成员变量
B:
①实例化对象时,成员变量初始化为默认值。
②将成员变量赋为定义类时设置的初值。
③通过初始化块给成员变量赋值 。
④调用构造方法时,使用构造方法所带的参数初始化成员变量
C:
①通过初始化块给成员变量赋值
②将成员变量赋为定义类时设置的初值。
③实例化对象时,成员变量初始化为默认值。
④调用构造方法时,使用构造方法所带的参数初始化成员变量
D:
①调用构造方法时,使用构造方法所带的参数初始化成员变量
②将成员变量赋为定义类时设置的初值。
③通过初始化块给成员变量赋值 。
④实例化对象时,成员变量初始化为默认值。
参考答案:
B
解析:
对象的初始化过程遵循的顺序是:
①实例化对象时,成员变量初始化为默认值。
②将成员变量赋为定义类时设置的初值。
③通过初始化块给成员变量赋值
④调用构造方法时,使用构造方法所带的参数初始化成员变量
11. 给出以下代码
public class TestObj{
public static void main(String[] args){
Object o=new Object(){
public boolean equals(Object obj){
return true;
}
};
System.out.println(o.equals(“Fred”));
}
}
请给出结果:()
A:运行时抛出异常
B:true
C:Fred
D:第三行编译错误
参考答案:
B
解析:
实例化的对象重写了equals()方法,无论输入什么都会输出true。
此题较难,综合了匿名内部类知识和重写的知识,实际上new后面的类并不是Object,而是一个继承Object的类,但它没有名字,是一个匿名的内部类
。
12. 如下代码
public class Test{
public int aMethod(){
static int i=0;
i++;
return i;
}
public static void main (String args[]){
Test test=new Test();
test.aMethod();
int j=test.aMethod();
System.out.println(j);
}
}
输出的结果是什么()
A:0
B:1
C:2
D:编译失败
参考答案:
D
解析:
非静态方法里不能存在静态的局部变量。
14. 以下程序的执行结果是()
class Base{
public Base(String s) {
System.out.print("B");
}
}
public class Derived extends Base{
public Derived(String s) {
System.out.println("D");
}
}
public static void main(String []args){
new Derived("C");
}
A:BD
B:DB
C:C
D:编译错误
参考答案:
- [ ]
- D
解析:
实例化子类时会先调用父类的构造器,子类构造器不显示提供调用父类构造器的方法(super())时,则子类默认调用父类无参的构造器,但是此题中父类提供了有参构造器,编译器不会再默认提供无参构造器,所以编译器会因为找不到构造器而报错。
15.
Math.floor(-8.5)=( )
A:(float)-8.0
B:(long)-9
C:(long)-8
D:(double)-9.0
参考答案:
D
解析:
Math.floor(x)取得小于等于x的最大值,返回类型是double类
18. 以下对抽象类的描述正确的是()
A:抽象类没有构造方法
B:抽象类必须提供抽象方法
C:有抽象方法的类一定是抽象类
D:抽象类可以通过new关键字直接实例化
参考答案:
C
解析:
抽象类可以有构造方法;抽象类中可以没有抽象方法;有抽象方法的类一定是抽象类; 抽象类不能被直接实例化。
19. 在类设计中,类的成员变量要求仅仅能够被同一package下的类访问,请问应该使用下列哪个修饰词()
A:protected
B:public
C:private
D:不需要任何修饰词
参考答案:
D
解析:
而default和protected老有人记不住。 只要记住protected一个特点是只要子类都能访问,不管在不在一个包。
20. 以下代码运行输出是()
public class Person{
private String name=”person”;
int age=0;
}
pubic class Child extends Person{
public String grade;
public static void main(String[] args){
Person p=new Child();
System.out.println(p.name);
}
}
A:没有输出
B:编译出错
C:运行出错
D:输出:Person
参考答案:
B
解析:
父类Person的成员变量name是private,不能被子类继承
25. 给出以下代码,请给出结果.
class A{
Byte x;
}
class B{
public static void main(String[] args){
B b=new B();
b.start();
}
void start(){
A a=new A();
System.out.print(a.x+””);
A a2=fix(a);
System.out.print(a.x+” ” +a2.x);
}
A fix(A aa){
aa.x=42;
return aa;
}
}
A:null null 42
B:null 42 42
C:0 0 42
D:0 42 42
E:An exception is thrown at runtime
F:Compilation
参考答案:
B
解析:
主要的逻辑在该方法中完成 void start(){
A a=new A(); //创建一个A类型的a变量,a里的Byte类型(byte的包装类类型)的成员变量x默认值为null
System.out.print(a.x+””);//输出a的属性x=null
A a2=fix(a); //将对象传入fix方法,局部变量aa和a指向同一个对象,返回的引用也同理
System.out.print(a.x+” ” +a2.x);//a和a2指向同一个引用
}
Byte与byte不同,Byte是一个包装类,所以定义没有初始化的类为null
关键要理解在方法传参中,引用的传递是复制引用而不是复制一个新对象
26. 给出类代码:
public class A {
public static void main(String[] args){
for(int i=0;i<2;i++){
switch(i){
case 0: System.out.print(i);
case 1: System.out.print(i);
break;
}
}
System.out.println("End");
}
}
运行的结果是:
A:01End
B:0End
C:1End
D:001End
参考答案:
D
解析:
switch-case语句从与case值匹配的地方开始执行,直到遇到break为止;假如没有break,则程序从匹配处走完整个switch-case语句
28. 按照Java的标识符命名规范,下列关于类名的标识符最符合规范的是()
A:Helloman
B:HelloMan
C:helloman
D:helloMan
参考答案:
B
解析:
java 标识符可以是 字母、数字、$、_(下划线),但不可用数字开头 不可以是java 的关键字
包名:全部小写(如:multiplicationtable) 类名:每个单词的首字母大写(如:MultiplicationTable)
变量名:第一个字母小写,以后每个单词的首字母大写(如:multiplicationTable)
常量:全部使用大写字母,单词间用下划线隔开(如:MULTIPLICATION_TABLE)
32. DRAM 存储器的中文含义是( )
A:动态随机存储器
B:动态只读存储器
C:静态只读存储器
D:静态随机存储器
参考答案:
A
解析:
DRAM即为Dynamic Random Access Memory的缩写
33.
int i=1, j=10 ;
do{
if(i++>--j) continue;
}while(i<5);
以上代码执行结束,i和j的值为?
A:i = 6 and j = 5
B:i = 5 and j = 5
C:i = 6 and j = 4
D:i = 5 and j = 6
E:i = 6 and j = 6
参考答案:
D
解析:
i++是先比较再做自加一运算;–j是先做减一运算再比较大小
34. 在Java语言的控制结构中,break语句是经常用到的语句。下面一段代码中break语句起到( )的作用。
int pointer = 0;
while (pointer <= 10) {
switch (pointer % 3) {
case 1:
pointer += 1;
break;
case 2:
pointer += 2;
break;
default:
pointer += 3;
break;
}
}
A:结束当次循环,使控制权直接转移到控制循环的条件表达式
B:从嵌套循环内部跳出最里面的循环
C:终止switch语句的语句序列,提高switch-case语句性能
D:退出循环
参考答案:
C
解析:
此处break用于中止switch-case块
35. 想要编译和运行java程序,我们至少需要______
A:jdk
B:jre
C:jdk或者jre
D:jdk和jre
参考答案:
A
解析:
jdk自带jre,既能编译也能运行。
40. 请问以上程序执行的结果是?()
public class Test{
public String name="abc";
public static void main(String[] args){
Test test=new Test();
Test testB=new Test();
System.out.println(test.

本文精选了Java编程基础测试题及其解析,涵盖单选题和多选题,涉及类和对象、初始化过程、字符串操作等多个核心知识点。

3982

被折叠的 条评论
为什么被折叠?



