当前位置: 首页 > news >正文

Java试题-选择题(10)

Java试题-选择题(10)

题目

  1. 虚拟内存是基于程序的局部性原理而设计的。下面关于局部性原理描述正确的是()
    A.程序代码顺序执行
    B.程序按照非一致性方式访问内存
    C.程序连续地访问许多变量
    D.程序在一段时间内访问相对小的一段地址空间

  2. Java Application 中的主类需包含main方法,以下哪项是main方法的正确形参?
    A:String args
    B:String[] args
    C:Char arg
    D:StringBuffer[] args

  3. 若有定义:byte[]x={11,22,33,﹣66};其中0≤k≤3,则对x数组元素错误的引用是() ?
    A:x[5-3]
    B:x[k]
    C:x[k+5]
    D:x[0]

  4. 下列关于Java语言中String和char的说法,正确的是() ?
    A:String是Java定义的一种基本数据类型。
    B:String是以“\0”结尾的char类型的数组char[]。
    C:使用equals()方法比较两个String是否内容一样(即字符串中的各个字符都一样)。
    D:Char类型在Java语言里面存储的是ASCII码。

  5. java中,要表示10个学生的成绩,下列声明并初始化数组正确的是() ?
    A:int[] score=new int[ ]
    B:int score[10]
    C:int score[]=new int[10]

  6. 设int x=1,float y=2,则表达式x/y的值是:() ?
    A:0
    B:1
    C:2
    D:以上都不是

  7. 下列java程序的输出结果为____ ?
    A:hello and ab
    B:hello and cb
    C:hello and a
    D:test ok and ab

public class Example{String str=new String("hello");char[]ch={'a','b'};public static void main(String args[]){Example ex=new Example();ex.change(ex.str,ex.ch);System.out.print(ex.str+" and ");System.out.print(ex.ch);}public void change(String str,char ch[]){str="test ok";ch[0]='c';}
}
  1. 下列循环语句序列执行完成后,i的值是() ?
    A:2
    B:10
    C:11
    D:不确定
int i;
for(i=2;i<=10;i++){System.out.println(i);
}
  1. 下面关于垃圾收集的说法正确的是 ?
    A:一旦一个对象成为垃圾,就立刻被收集掉。
    B:对象空间被收集掉之后,会执行该对象的finalize方法
    C:finalize方法和C++的析构函数是完全一回事情
    D:一个对象成为垃圾是因为不再有引用指着它,但是线程并非如此

  2. 以下关于集合类ArrayList、LinkedList、HashMap描述错误的是() ?
    A:HashMap实现Map接口,它允许任何类型的键和值对象,并允许将null用作键或值
    B:ArrayList和LinkedList均实现了List接口
    C:添加和删除元素时,ArrayList的表现更佳
    D:ArrayList的访问速度比LinkedList快

  3. 子类要调用继承自父类的方法,必须使用super关键字 ?
    A正确
    B错误

  4. 在 Java 中,属于整数类型变量的是() ?
    A:single
    B:double
    C:byte
    D:char

  5. 关于抽象类与最终类,下列说法错误的是?
    A:抽象类能被继承,最终类只能被实例化。
    B:抽象类和最终类都可以被声明使用
    C:抽象类中可以没有抽象方法,最终类中可以没有最终方法
    D:抽象类和最终类被继承时,方法可以被子类覆盖

  6. 假设 A 类有如下定义,设 a 是 A 类同一个包下的一个实例,下列语句调用哪个是正确的 ?(多选)
    A:System.out.println(a.i);
    B:a.method1();
    C:A.method1();
    D:A.method2()

class A{int i;static String s;void method1() { }static void method2() { }
}
  1. 定义如下程序:程序执行结果是?
    A:1
    B:1f
    C:运行报错
    D:编译报错
public static void main(String[] args){Double x=1.2;long l = 1.2;float f = x/l;System.out.println(f);
}
  1. 下列哪个选项是正确计算42度(角度)的余弦值?
    A:double d = Math.cos(42)
    B:double d = Math.cosine(42)
    C:double d = Math.cos(Math.toRadians(42))
    D:double d = Math.cos(Math.toDegrees(42))

  2. 下列说法正确的是() ?
    A:WebLogic中开发消息Bean的non-persistent 方式可以保证消息的可靠
    B:EJB容器发生错误,non-persistent方式下JMS容器仍然会将消息发送
    C:EJB容器发生错误,persistent方式下JMS容器仍然会将消息发送
    D:EJB容器发生错误,两种方式下JMS容器仍会在MDB可用的时候将消息发送

  3. 下列代码执行结果为() ?
    A:21
    B:12
    C:可能为12,也可能为21
    D:以上答案都不对

public static void main(String args[])throws InterruptedException{Thread t=new Thread(new Runnable() {public void run() {try {Thread.sleep(2000);} catch (InterruptedException e) {throw new RuntimeException(e);}System.out.print("2");}});t.start();t.join();System.out.print("1");
}
  1. 下面代码运行结果是 ?
    A:15 0 20
    B:15 0 15
    C:20 0 20
    D:0 15 20
class Value{public int i=15;
}
public class Test{public static void main(String argv[]){Test t=new Test( );t.first( );}public void first( ){int i=5;Value v=new Value( );v.i=25;second(v,i);System.out.println(v.i);}public void second(Value v,int i){i = 0;v.i = 20;Value val = new Value( );v = val;System.out.println(v.i+" "+i);}
}
  1. jdk1.8中,下面有关java 抽象类和接口的区别,说法错误的是 ?(多选)
    A:抽象类可以有构造方法,接口中不能有构造方法
    B:抽象类中可以包含非抽象的普通方法,接口中的方法必须是抽象的,不能有非抽象的普通方法
    C:一个类可以实现多个接口,但只能继承一个抽象类
    D:接口中可以有普通成员变量,抽象类中没有普通成员变量

答案

12345678910
DBCCCDBCDC
11121314151617181920
BCDABDDCCAABD

解析

1. D

局部性原理是计算机程序访问内存时表现出的集中趋势,该原理分为时间局部性和空间局部性两个方面:时间局部性指程序在短时间内重复访问相同的内存位置(如循环指令),空间局部性指程序倾向于访问邻近的内存单元(如顺序访问数组)。虚拟内存的设计正是基于这一原理,通过预测程序行为的集中性,高效管理内存资源。

针对题目中的选项分析:
A. 程序代码顺序执行‌:不正确。局部性原理包含顺序执行(体现空间局部性),但并非仅限顺序执行;例如,循环结构中的非顺序跳转也能体现局部性(如重复调用相同函数)。
B. 程序按照非一致性方式访问内存‌:不正确。局部性原理强调访问模式的一致性(集中性),即内存访问集中在特定区域而非随机分散。
C. 程序连续地访问许多变量‌:描述片面。空间局部性涉及连续访问,但核心是“访问相对小的一段地址空间”(如数组元素),而非简单地访问“许多变量”;时间局部性还可能涉及少量变量的重复访问(如循环计数器)。
D. 程序在一段时间内访问相对小的一段地址空间‌:正确。这直接对应局部性原理的本质,即程序运行时内存访问局限于特定区域(如工作集),减少缺页中断,支撑虚拟内存效率。

2. B

Java Application 的主类中,main 方法的正确形参必须是 String 类型的数组。 因此,正确选项为 ‌B:String[] args‌,因为它符合 Java 语法要求,参数声明为 String[] 或等效形式(数组符号 [] 可在类型后或变量名后)。

3.C

给定数组定义:byte[] x = {11, 22, 33, -66},数组长度为4,有效索引范围为0到3。

4. C

选项 A 错误‌:String 在 Java 中不是基本数据类型,而是一个类(引用类型)。Java 的基本数据类型包括 byte、short、int、long、float、double、char 和 boolean 八种,String 不在其中。
选项 B 错误‌:String 在 Java 中不以“\0”结尾的 char 数组形式存储。虽然 String 内部使用 char 数组(char[])实现,但 Java 的字符串处理不依赖空字符终止符,这与 C 语言不同。
选项 C 正确‌:使用 equals() 方法可以比较两个 String 对象的内容是否一致,即字符串中的每个字符及其顺序完全相同。equals() 方法覆盖了 Object 类的实现,专门用于字符串内容比较。
选项 D 错误‌:char 类型在 Java 中存储的是 Unicode 编码(UTF-16),而不是 ASCII 码。ASCII 码仅涵盖 0-127 的字符,而 Java char 支持全球语言字符集,使用 16 位 Unicode 表示。

5. C

在Java中,要表示10个学生的成绩(即需要一个长度为10的整型数组),正确的数组声明并初始化方式必须满足:

数组类型为 int(成绩通常为整数)。
数组长度必须明确指定为10。
语法符合Java规范:声明时数组大小不能出现在变量名后(如 int score[10] 无效),且动态初始化必须使用 new 关键字并指定长度或提供初始化列表。

6.D

表达式 x/y 中,x 是 int 类型,值为 1;y 是 float 类型,值为 2.0。在大多数编程语言(如C、C++、Java等)中,当整数和浮点数进行二元运算时,整数会隐式提升为浮点数,然后执行浮点除法。因此,表达式 x/y 等价于 1.0 / 2.0,结果为浮点数 0.5。

7.B

代码分析‌

成员变量‌:
str 是 String 类型,初始值为 “hello”。
ch 是 char 数组,初始值为 {‘a’, ‘b’}。

main 方法‌:
创建 Example 实例 ex。
调用 ex.change(ex.str, ex.ch),传入 str 和 ch。
打印 ex.str 和 ex.ch。

change 方法‌:
接收 String str 和 char[] ch 参数。
修改 str = “test ok”(但不会影响原 ex.str,因为 String 是不可变的,且 str 是局部变量)。
修改 ch[0] = ‘c’(会影响原数组,因为数组是引用类型)。

关键点‌
String 不可变‌:change 方法里的 str = “test ok” 不会影响 ex.str(仍然是 “hello”)。
数组可变‌:ch[0] = ‘c’ 会修改原数组,因此 ex.ch 变为 {‘c’, ‘b’}。

输出结果‌
ex.str 仍然是 “hello”。
ex.ch 变为 {‘c’, ‘b’},打印时输出 cb。
最终输出:‌hello and cb‌

8. C

逐步模拟循环执行:
i = 2:条件 2 <= 10 为真,执行循环体(打印 2),然后 i++ 使 i = 3。
i = 3:条件 3 <= 10 为真,执行循环体(打印 3),然后 i++ 使 i = 4。
依此类推,当 i = 10 时:条件 10 <= 10 为真,执行循环体(打印 10),然后 i++ 使 i = 11。
i = 11:条件 11 <= 10 为假,循环终止。

9. D

选项A错误‌:对象成为垃圾后并不会立即被收集掉。垃圾回收的时机由JVM决定,具有不确定性,通常发生在内存不足或CPU空闲时,而非对象成为垃圾的瞬间。
选项B错误‌:对象的finalize()方法在垃圾回收之前调用,而非对象空间被收集掉之后。JVM在准备回收对象时,若对象重写了finalize()方法,会在销毁前调用它进行清理工作。
选项C错误‌:Java的finalize()方法与C++的析构函数不完全相同。finalize()是非确定性的,由垃圾回收器在不确定的时间调用;而C++析构函数是确定性的,在对象离开作用域或显式删除时立即执行。
选项D正确‌:
对象成为垃圾的标准是它不再被任何引用指向(即从GC Roots不可达),这是垃圾回收的基本判定依据。
但线程(此处指执行线程,而非Thread对象)并非基于引用计数或可达性判断其“垃圾”状态。线程的生命周期由其执行任务决定,结束时由操作系统或JVM管理资源回收,与对象引用机制无关。

10. C

A: HashMap实现Map接口,它允许任何类型的键和值对象,并允许将null用作键或值‌
正确。HashMap实现了Map接口,支持任意类型的键和值(包括null键和null值),这是其核心特性。

B: ArrayList和LinkedList均实现了List接口‌
正确。ArrayList和LinkedList都是List接口的实现类,用于存储有序集合。

C: 添加和删除元素时,ArrayList的表现更佳‌
错误‌。LinkedList基于双向链表实现,插入或删除元素(尤其在头部或中间位置)仅需调整指针(O(1)时间复杂度),而ArrayList基于动态数组,需要移动后续元素(O(n)时间复杂度),因此LinkedList在添加/删除操作上更优。

D: ArrayList的访问速度比LinkedList快‌
正确。ArrayList支持随机访问(通过索引直接定位,O(1)时间复杂度),而LinkedList需遍历链表(O(n)时间复杂度),因此ArrayList访问速度更快。

11. B

直接调用继承方法‌:
当子类未重写父类方法时,可直接通过方法名调用继承的方法,无需super。

super ‌关键字的适用场景‌:
主要用于子类重写方法后需调用父类原实现时(如super().method())。

12. C

在 Java 中,基本数据类型分为整数类型、浮点类型、字符类型和布尔类型。根据 Java 规范:

整数类型‌(用于存储整数值)包括:
byte(8 位有符号整数)、short(16 位)、int(32 位)、long(64 位)。

浮点类型‌(用于存储小数)包括:
float(单精度浮点数)、double(双精度浮点数)。

字符类型‌:
char(16 位 Unicode 字符,不属于整数类型)。

布尔类型‌:
boolean(true/false)。

13. D

抽象类‌:不能被直接实例化,只能被继承。它可以包含抽象方法(没有实现)和具体方法(有实现)。抽象类可以没有抽象方法(即所有方法都有实现,但类本身被声明为抽象)。当子类继承抽象类时,可以覆盖其非 final 方法。
最终类‌:不能被继承(即不能被扩展),只能被实例化。它可以包含方法,但这些方法不需要声明为 final;最终类中可以没有 final 方法。由于最终类不能被继承,因此没有子类可以覆盖其方法。

A:抽象类能被继承,最终类只能被实例化。‌
正确。抽象类的设计目的是被继承,而最终类禁止继承,只能通过实例化使用。

B:抽象类和最终类都可以被声明使用。‌
正确。抽象类可以被声明(例如作为类型引用或用于继承),最终类可以被声明并实例化。两者在代码中均可被使用。

C:抽象类中可以没有抽象方法,最终类中可以没有最终方法。‌
正确。抽象类不一定需要包含抽象方法(例如,一个抽象类可以全部是具体方法,但类本身标记为 abstract)。最终类中的方法也不需要声明为 final(例如,一个最终类可以全部是普通方法,但类本身标记为 final)。

D:抽象类和最终类被继承时,方法可以被子类覆盖。‌
错误‌。

14. ABD

选项 A:System.out.println(a.i);‌
i 是实例变量,必须通过实例访问。a 是 A 类的实例,且在同一包下(满足默认包访问权限),‌正确‌。

选项 B:a.method1();‌
method1() 是实例方法,必须通过实例调用。a 是有效实例,且在同一包下,‌正确‌ 。

选项 C:A.method1();‌
method1() 是实例方法,不能通过类名 A 直接调用(必须通过实例),‌错误‌。

选项 D:A.method2();‌
method2() 是静态方法,可以通过类名 A 直接调用,且无需实例,正确‌。

15. D

错误原因:
long l = 1.2; 导致编译失败‌:
1.2 是 double 类型字面量,而 long 是整型。Java要求从高精度(double)到低精度整型(long)必须显式强制转换,否则编译器报错。
正确写法应为:long l = (long)1.2;(结果为 l=1)。

16. C

角度与弧度的区别‌:
Math.cos() 的参数要求是‌弧度‌,而题目中的 42 是角度值,直接传入会导致计算错误(选项A错误)。
必须先将角度转换为弧度,再计算余弦值。

选项分析‌:
A‌:Math.cos(42)
直接计算42弧度的余弦值(错误,因42是角度而非弧度)。
B‌:Math.cosine(42)
Java中不存在Math.cosine()方法(语法错误)。
C‌:Math.cos(Math.toRadians(42))
正确!Math.toRadians(42)将42度转换为弧度,再计算余弦值。
D‌:Math.cos(Math.toDegrees(42))
Math.toDegrees(42)会将42弧度转为角度(约2406度),逻辑反了(错误)。

17. C

A:错误‌。WebLogic中开发消息Bean的non-persistent方式无法保证消息的可靠性,因为非持久化消息仅存储在内存中,若系统故障(如EJB容器或JMS服务器异常),消息会被直接丢弃,无法恢复或重传。

B:错误‌。EJB容器发生错误时,在non-persistent方式下,JMS容器通常不会将消息发送给MDB,因为非持久化消息未被持久化存储(如磁盘),故障可能导致消息永久丢失,JMS容器无法在后续恢复传递。

C:正确‌。persistent方式通过将消息持久化存储(如数据库或磁盘),确保即使EJB容器发生错误,JMS容器仍能保留消息,并在MDB可用时重新发送,从而保障消息传递的可靠性。

D:错误‌。non-persistent方式在EJB容器错误时无法保证消息传递(消息可能被丢弃),仅persistent方式支持在MDB可用时恢复发送;因此“两种方式下”的表述不成立。

18. A

代码执行流程:

创建并启动线程 t‌:
线程 t 启动后,会睡眠 2000 毫秒(2秒),然后打印 “2”。

t.join() 的作用‌:
t.join() 会使 ‌主线程(main)等待线程 t 执行完毕‌。
主线程在调用 t.join() 后阻塞,直到线程 t 结束。

执行顺序‌:
线程 t 先睡眠 2 秒 → 打印 “2” → 线程 t 结束。
主线程在 t.join() 处等待 t 结束后,继续执行 → 打印 “1”。

输出结果:
先输出线程 t 打印的 “2”,再输出主线程打印的 “1”,结果为 “21”。

19. A

代码执行流程:

main 方法‌:
创建 Test 对象 t,调用 t.first()。

first 方法‌:
局部变量 i = 5(与成员变量无关)。
创建 Value 对象 v,初始 v.i = 15(类默认值)。
修改 v.i = 25。
调用 second(v, i),传入引用 v 和值 i(值传递)。

second 方法‌:
修改局部参数 i = 0(不影响 first 中的 i)。
修改传入的 v.i = 20(此时原 v 对象的 i 变为 20)。
新建 Value 对象 val(val.i = 15),并让局部变量 v 指向 val(不影响 first 中的 v)。
打印 v.i(即 val.i)和局部 i:输出 15 0。

返回 first 方法‌:
打印 v.i:此时 v 仍指向原对象(i 已被 second 改为 20),输出 20。

输出顺序:
second 中打印:15 0
first 中打印:20

关键点:
Java 是值传递‌:second 方法中的 v 是引用的副本,重新赋值 v = val 不影响原调用方的 v。
对象属性可修改‌:即使传递的是引用副本,通过副本修改属性(如 v.i = 20)会影响原对象。

20. BD

A:抽象类可以有构造方法,接口中不能有构造方法‌
该描述正确。抽象类可以定义构造方法用于初始化,而接口不能包含任何构造方法。

B:抽象类中可以包含非抽象的普通方法,接口中的方法必须是抽象的,不能有非抽象的普通方法‌
该描述在 JDK 1.8 中错误。接口从 JDK 1.8 开始支持默认方法(default methods)和静态方法,这些是非抽象的普通方法(有具体实现),因此接口中的方法不必须是抽象的。

C:一个类可以实现多个接口,但只能继承一个抽象类‌
该描述正确。Java 支持单继承(只能继承一个抽象类),但允许多个接口实现。

D:接口中可以有普通成员变量,抽象类中没有普通成员变量‌
该描述错误。接口中的成员变量默认为 public static final 常量,不能有普通成员变量(即实例变量);而抽象类可以包含普通成员变量。

http://www.lryc.cn/news/624114.html

相关文章:

  • AMBA-AXI and ACE协议详解(四)
  • 计算机毕业设计java的小天鹅酒店月子会所管理小天鹅酒店母婴护理中心管理系统设计小天鹅酒店产后护理会所信息化管理平台
  • 物联网软件开发过程中,数据流图(DFD),用例图,类图,活动图,序列图,状态图,实体关系图(ERD),BPMN(业务流程建模)详解分析
  • 嵌入式练习项目——————抓包获取天气信息
  • Python大模型应用开发-核心技术与项目开发
  • C++编程实战:高效解决算法与数据结构问题
  • Linux817 shell:until,nfs,random
  • React 第七十节 Router中matchRoutes的使用详解及注意事项
  • Next.js跟React关系(Next.js是基于React库的全栈框架)(文件系统路由、服务端渲染SSR、静态生成SSG、增量静态再生ISR、API路由)
  • Vue 与 React 深度对比:设计哲学、技术差异与应用场景
  • 每日Java面试系列(15):进阶篇(String不可变的原因、性能问题、String三剑客、自定义不可变设计、组合优于继承等相关问题)
  • FreeRTOS源码分析八:timer管理(一)
  • Linux学习-多任务(线程)
  • Python 项目里的数据清理工作(数据清洗步骤应用)
  • RK3588开发板Ubuntu系统烧录
  • 「数据获取」《中国教育统计年鉴》(1949-2023)(获取方式看绑定的资源)
  • Python @staticmethod 装饰器与 staticmethod() 函数
  • Spring AI 集成阿里云百炼平台
  • C语言课程开发
  • C11期作业17(07.05)
  • Effective C++ 条款47: 使用traits classes表现类型信息
  • JVM常用工具:jstat、jmap、jstack
  • Transformer架构的数学本质:从注意力机制到大模型时代的技术内核
  • 因果语义知识图谱如何革新文本预处理
  • 机器学习案例——对好评和差评进行预测
  • Python开发环境
  • 说一下事件传播机制
  • Pandas数据结构详解Series与DataFrame
  • 【C#补全计划】多线程
  • 《解构WebSocket断网重连:指数退避算法的前端工业级实践指南》