Java基础测试选择题带答案解析(一)

这是一篇关于Java基础知识的选择题集,包含了数组、集合、类与对象、异常处理等多个方面的内容,旨在帮助读者巩固Java编程的基础。题目涵盖排序、异常处理、数据类型转换、构造函数、静态变量、继承、接口、数据存储等方面的知识点,每个题目都有详细的解析,解释了正确答案的原因。
摘要由CSDN通过智能技术生成

1、【单选题】
对于代码:
public void test(int[] arr) {
int i, j, note;
for (i = 1; i < arr.length; i++) {
note = arr[i];
j = i - 1;
while (j >= 0 && note < arr[j]) {
arr[j + 1] = arr[j];
j–;
}
arr[j + 1] = note;
}
} 所实现的功能是
A.获取最大值
B.获取最小值
C.升序排序
D.降序排序
E.反转数组
【正确答案】C
【答案解析】如果后面的值比前面的小就把前面的值赋值给后面

2、【单选题】
对于代码: public class Test {
public static void main(String[] args) {
Person p = new Person();
p.name = “Sam”;
p.age = 16;
m§;
System.out.println§;
}
public static Person m(Person p) {
try {
p.name = “Amy”;
p.age = 18;
throw new NullPointerException();
} catch (Exception e) {
p.name = “Tom”;
p.age = 20;
return p;
} finally {
p = new Person();
p.name = “Jack”;
p.age = 22;
}
}
}

class Person {
String name;
int age;
@Override
public String toString() {
return "Person [name = " + name + ", age = " + age + “]”;
}
}的输出结果是
A.Person[name = Sam, age = 16]
B.Person[name = Amy, age = 18]
C.Person[name = Tom, age = 20]
D.Person[name = Jack, age = 22]
【正确答案】C
【答案解析】执行try块里内容抛出异常被catch块捕获此时执行到return语句,检测到有finally块需要把p的地址值进行挂起,执行finally块里内容,这个里内容执行完没有影响原p对象的内容,所以最后返回时还是返回的catch块里的对象以及属性值

3、【单选题】
import java.util.*;

public class test1 {
public static void main(String args[]) {
Set s = new HashSet();
for (Short i = 0; i < 100; i++) {
s.add(i);
s.remove(i - 1);
}
System.out.println(s.size());
}
}
A.1
B.100
C.Throws Exception.
D.None of the Above
【正确答案】B
【答案解析】由于Set集合存储的元素类型时Short类型那么删除的时候也只能根据Short类型进行删除,当执行i-1时会默认变成int类型,所以类型不一致就不能删除

4、【单选题】
下面关于构造函数说法不正确的是
A.构造函数中可以有return语句
B.每个类中都至少含有一个构造函数
C.一个类中可以有多个构造函数
D.一个类中,构造函数的优先级高于构造代码块
【正确答案】D
【答案解析】构造代码块优先于任意形式的构造方法先执行

5、【单选题】
数组的声明错误的是:
A.int[] a=new int[3];
B.int[] a=new int[]{1,2,3};
C.int[] a={1,2,3};
D.int[] a=new int[3]{1,2,3};
【正确答案】D
【答案解析】定义数组直接给定元素值时长度就以及确定了无法再次指定

6、【单选题】
下列的运行结果为( )
public class StaticExam {
public static void main(String[] args) {
System.out.println(SEDemo.i);
System.out.println(new SEDemo().j);
}
}

class SEDemo {
public static int i = 6;
public static SEDemo s = new SEDemo();
public int j;
public SEDemo() {
i–;
j–;
}
}
A.6,0
B.6,-1
C.5,0
D.5,-1
【正确答案】D
【答案解析】当SEDemo.i时,需要加载整个类,类的静态信息也需要加载,静态属性i赋值为6,静态属性s也需要进行赋值就需要创建本类对象一次所以需要去执行构造方法i–为5。当new SEDemo().j时静态信息以及加载完成直接执行属性j初始值为0,再去调用构造方法j–为-1

7、【单选题】
对于代码: public class Test { public static void main(String[] args) { String str = new String(“abc”); twice(str); System.out.println(str); } pubilc static String twice(String str) { return str += new StringBuilder(str).reverse(); } } 的运行结果是:
A.abc
B.abcabc
C.cba
D.abccba
E.cbaabc
【正确答案】A
【答案解析】实参是引用数据类型传递的是地址值的拷贝,所以方法执行完之后不会原结果

8、【单选题】
对于代码:package cn.tedu.test1 ;
public class A{
int age;
}
package cn.tedu.test2 ;
public class C{
public static void main(String[] args) {
B b=new B();
b.clone(); //1
}
}
class B extends A{
int age;
public void test1(){
A a=new B();
a.clone(); //2
B b=new B();
b.clone(); //3
}
}
编译报错的行号是?
A.1,2,3
B.2,3
C.1,2
D.1,3
【正确答案】C
【答案解析】Clone方法被protected修饰在Object类中与ABC三个类不在一个包但是有父子关系,如果想要调用到clone方法需要保证子类对象在子类的本类中使用,1和2都不是

9、【单选题】
对于Set set = new HashSet<>(32);扩容的次数为
A.0
B.1
C.2
D.3
E.4
【正确答案】A
【答案解析】可以指定初始容量,所以没有扩容

10、【单选题】
下列关于File的说法正确的是
A.File file=new File(“D:\a.txt”);是在D盘下创建一个a.txt文件
B.可以通过mkdirs()方法创建多个文件
C.当调用getPath()方法的时候,会去计算机中检查 该文件是否存在
D.可以通过isFile()方法判断该File对象是否是一个文件对象
【正确答案】D
【答案解析】创建File对象只是指明有一个路径但是不会去检查路径是否存在。mkdirs方法是可以创建多个目录。getPath方法返回的是路径名

11、【单选题】
public class CodeDemo {
public static void main(String[] args) {
new SB();
}
}

class SA {
D d;
static {
System.out.println(“D2”);
}
{
System.out.println(“C3”);
d = new D();
}
public SA() {
System.out.println(“D1”);
}
}

class SB extends SA {
static C c = new C();
static {
System.out.println(“A1”);
}
{
System.out.println(“B2”);
}
public SB() {
System.out.println(“D”);
}
}

class C {
public C() {
System.out.println(“A2”);
}
}

class D extends C {
public D() {
System.out.println(“A3”);
}
}
的输出结果是:
A.A1 C B1 A2 C D A3 B2 B3
B.D2 A2 A1 C3 A2 A3 D1 B2 D
C.D2 A2 A1 C3 D D1 A3 B2 A2
D.D2 A2 A1 C3 A3 A2 D1 B2 D
【正确答案】B
【答案解析】当创建子类对象时,需要先加载父类静态信息、子类静态信息、父类对象级别信息、子类对象级别信息。父类静态信息只有静态代码块所有输出D2,子类静态信息包括静态属性和静态代码块依次加载所以输出A2、A1。子类对象级别信息包括构造代码块和构造方法依次执行(构造代码块要输出C3之后需要再雄黄酒D类对象,还要接着输出A2,A3)C3 A2 A3 D1,之后再执行子类对象级别输出B2 D

12、【单选题】
对于代码: public class Test {
public static void main(String[] args) {
int[] a

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张艳霞zhangyx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值