首页 > 编程语言 > Java日常练习题,每天进步一点点(25)
2021
11-07

Java日常练习题,每天进步一点点(25)

承蒙各位厚爱,我们一起每天进步一点点!(鼠标选中空白处查看答案)

1、下面程序段执行后b的值是()。

Integer integ =new Integer(9);

boolean b = integ instanceof Object;

正确答案: B

9

true

1

false

题解:
Object是 integ 的父类

2、以下关于继承的叙述正确的是

正确答案: A

在Java中类只允许单一继承

在Java中一个类不能同时继承一个类和实现一个接口

在Java中接口只允许单一继承

在Java中一个类只能实现一个接口

题解:
类支持单继承,接口支持多继承

3、下面关于依赖注入(DI)的说法不正确的是()

正确答案: A

只有通过Spring才能实现依赖注入(DI)

依赖注入的主要目的是解耦合

常见的依赖注入方式有Setter和构造方法

题解:
依赖注入是一种思想,或者说是一种设计模式,在java中是通过反射机制实现,与具体框架无关。

4、下列整型常量 i 的定义中,正确的是( )

正确答案: C

final i;

static int i;

static final int i=234;

final float i=3.14f;

题解:
java中final修饰的变量有三种:静态变量、实例变量和局部变量,分别表示三种类型的常量。int关键字修饰整型类型。static修饰静态变量,即当利用这个关键字来修饰一个变量的时候,在创建对象之前就会为这个变量在内存中创建一个存储空间。以后创建对对象如果需要用到这个静态变量,那么就会共享这一个变量的存储空间。
A:缺少必要的整型类型声明
B:缺少常量关键字final
D:定义一个浮点常量

5、下面关于Java package的描述,哪个是正确的:()

I. 包不提供将所有类名分区为更易管理的块的机制.

II. 包提供可见性控制机制.

III. 包的一个重要属性是包内定义的所有类都可以通过该包外的代码访问.

IV. 声明为包的一部分的类的.class文件可以存储在多个目录中.

正确答案: B

只有I

只有II

只有III

只有IV

题解:
为了更好地组织类,Java 提供了包机制,用于区别类名的命名空间。
包的作用
1、把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。
2、如同文件夹一样,包也采用了树形目录的存储方式。同一个包中的类名字是不同的,不同的包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别。因此,包可以避免名字冲突。
3、包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类。
Java 使用包(package)这种机制是为了防止命名冲突,访问控制,提供搜索和定位类(class)、接口、枚举(enumerations)和注释(annotation)等。

6、下面这段程序的输出结果是()

public class Main {

public static void main(String[] args) {

split(12);

}

public static int split(int number) {

if (number > 1) {

if (number % 2 != 0) System.out.print(split((number + 1) / 2));

System.out.print(split(number / 2));

}

return number;

}

}

正确答案: A

12136

63121

61213

11236

题解:
考察方法进栈与出栈的顺序。先进后出
有个知识点,方法在出栈的时候,执行的是return语句。因为出栈就意味着方法结束并消费,如果没有return语句,那么方法出栈的时候什么都不执行,就直接销毁。
1.执行split(12)时,执行代码System.out.print(split(number / 2))
split(12/2)进栈,此时number=6;
2.执行split(6)时,执行代码System.out.print(split(number / 2))
split(6/2)进栈,此时number=3;
3.执行split(3)时,
第1行 if (number % 2 != 0)
第2行 System.out.print(split((number + 1) / 2));
第3行 System.out.print(split(number / 2));
按照顺序执行
先执行第2行
首先split((3+1)/2)进栈,此时number=2,
再执行split(2),那么split(2/2)进栈,此时number=1, 最后return 1,
注意此时第2行代码还没有结束
此时
split(2/2)出栈,输出1;
split((3+1)/2)出栈,输出2;
第二行代码结束,再执行第三行,此时number=3,执行System.out.print(split(number / 2))
split(3/2)进栈,number=1,return,那么就需要出栈了
split(3/2)出栈,输出1
split(6/2)出栈,输出3
split(12/2)出栈,输出6;
最终结果12136;
split(number)方法,最终返回的是number这个值,所以split(n)出栈的输出结果就是n
整理:
split(12/2)进栈
split(6/2)进栈
split((3+1)/2)进栈
split(2/2)进栈
split(2/2)出栈,输出1
split((3+1)/2)出栈,输出2
split(2/2)进栈
split(2/2)出栈,输出1
split(6/2)出栈,输出3
split(12/2)出栈,输出6

7、Thread. sleep()是否会抛出checked exception?

正确答案: A


不会

题解:
Thread.sleep() 和 Object.wait(),都可以抛出 InterruptedException。这个异常是不能忽略的,因为它是一个检查异常(checked exception)

8、下列哪个选项是正确计算42度(角度)的余弦值?

正确答案: C

double d=Math.cos(42)

double d=Math.cosine(42)

double d=Math.cos(Math.toRadians(42))

double d=Math.cos(Math.toDegrees(42))

题解:
Math.cos为计算弧度的余弦值,Math.toRadians函数讲角度转换为弧度

9、以下描述正确的是

正确答案: B

CallableStatement是PreparedStatement的父接口

PreparedStatement是CallableStatement的父接口

CallableStatement是Statement的父接口

PreparedStatement是Statement的父接口

题解:
public interface CallableStatement extends PreparedStatement
public interface PreparedStatement extends Statement

10、ResultSet中记录行的第一列索引为?

正确答案: C

-1

0

1

以上都不是

题解:
ResultSet跟普通的数组不同,索引从1开始而不是从0开始

答案汇总:

1、正确答案: B

2、正确答案: A

3、正确答案: A

4、正确答案: C

5、正确答案: B

6、正确答案: A

7、正确答案: A

8、正确答案: C

9、正确答案: B

10、正确答案: C

总结

本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注自学编程网的更多内容!

编程技巧