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

今日Java练习:选择题挑战

题目

选自牛客网

1.假设num已经被创建为一个ArrayList对象,并且最初包含以下整数值:[0,0,4,2,5,0,3,0]。 执行下面的方法numQuest(),数组num会变成?

private List<Integer> nums;//precondition: nums.size() > 0
//nums contains Integer objects
public void numQuest() {int k = 0;Integer zero = new Integer(0);while (k < nums.size()) {if (nums.get(k).equals(zero))nums.remove(k);k++;}
}

A.[3, 5, 2, 4, 0, 0, 0, 0]
B.[0, 0, 0, 0, 4, 2, 5, 3]
C.[0, 0, 4, 2, 5, 0, 3, 0]
D.[0, 4, 2, 5, 3]

正确答案:D

zero==0,如果get(k)==0,执行remove(k);
  size==8 ; k==0 , 因此第一次remove(0) ,删除索引为0的元素也就是第一个元素0,然后k++, size()--; 
此时集合元素为 :[0,4,2,5,0,3,0] size==7; k==1,因此get(1)==4 !=0 , 不执行remove(); k++,因没有删除元素,size()不变, 
此时集合元素:[0,4,2,5,0,3,0] size==7;k==2,k++;size==7;k==3,k++;size==7;k==4,get(4)==0,remove(4) ; k++,  size()--; 此时集合元素为: [0,4,2,5,3,0]size==6;k==5,get(5)==0,remove(5);k++, size()--;此时集合元素为: [0,4,2,5,3]size==5; k==6 ;退出循环;最终输出此时集合元素为    [0,4,2,5,3] ;一般更改删除集合元素,使用iterator()迭代器,不推荐使用这种;

2.以下代码的输出结果是?

public class B
{public static B t1 = new B();public static B t2 = new B();{System.out.println("构造块");}static{System.out.println("静态块");}public static void main(String[] args){B t = new B();}
}

A.静态块 构造块 构造块 构造块
B.构造块 静态块 构造块 构造块
C.构造块 构造块 静态块 构造块
D.构造块 构造块 构造块 静态块

正确答案:C
选 A被打脸。
在这里插入图片描述

  1. 加载类 B:当 JVM 加载类 B 时,首先会执行类的静态部分。
  2. 静态域:静态域包括静态变量、静态方法和静态块。当类首次被加载时,这些静态域将按照它们在源代码中出现的顺序执行,并且只执行一次。
  3. 实例初始化:每次创建新实例时,会执行构造块(实例初始化块)和构造方法。构造块总是先于构造方法执行。

我们可以确定以下执行顺序:

  1. 创建 t1 实例:首先初始化 t1 时,实例初始化块 {} 被执行,输出 “构造块”。
  2. 创建 t2 实例:接着初始化 t2 时,实例初始化块 {} 再次被执行,输出 “构造块”。
  3. 静态初始化块:在所有静态变量初始化之后,静态初始化块 static {} 被执行,输出 “静态块”。
  4. 执行 main 方法:最后,在 main 方法中创建 t 实例时,实例初始化块 {} 第三次被执行,输出 “构造块”。

总结起来,输出顺序应该是 “构造块”、“构造块”、“静态块” 和 “构造块”。

因此,正确的输出顺序是:

  • 构造块
  • 构造块
  • 静态块
  • 构造块

3.以下说法中正确的有?

A.StringBuilder是 线程不安全的
B.Java类可以同时用 abstract和final声明
C.HashMap中,使用 get(key)==null可以 判断这个Hasmap是否包含这个key
D.volatile关键字不保证对变量操作的原子性

正确答案:AD

A. StringBuilder是线程不安全的

正确StringBuilder 是线程不安全的。它的方法不是同步的,这意味着在多线程环境中直接使用 StringBuilder 可能会导致数据不一致的问题。

B. Java类可以同时用 abstract 和 final 声明

错误。Java 中的类不能同时被声明为 abstractfinalabstract 表示类是抽象的,不能被实例化,并且可能包含抽象方法;而 final表示类不能被继承。这两个修饰符是相互排斥的,因为一个抽象类的目的通常是被继承,而 final 类则不允许被继承。

C. HashMap中,使用 get(key)==null 可以判断这个HashMap是否包含这个key

错误。在 HashMap 中,get(key) 方法返回与指定键关联的值,如果键不存在,则返回 null。但是,如果键对应的值正好是 null,那么 get(key) 也会返回 null
因此,仅凭get(key)==null 无法区分是键不存在还是键存在但其值为 null
正确的做法是使用 containsKey(key)方法来判断一个键是否存在。

D. volatile 关键字不保证对变量操作的原子性

正确volatile 关键字确保了变量的可见性和有序性,也就是说,当一个线程修改了一个被声明为 volatile 的变量后,其他线程能够立即看到这个修改。但是,volatile 关键字不保证复合操作的原子性。
例如,对 volatile 变量的递增或递减操作不是原子性的,多个线程同时执行这样的操作可能导致不正确的结果。

综上所述,正确的选项是 AD


4.下面属于JSP内置对象的是?

A.out对象
B.response对象
C.application对象
D.page对象

正确答案:ABCD JSP(JavaServer
Pages)提供了多个内置对象,这些对象可以帮助开发者更容易地编写动态网页。下面是对这些选项的解释:

A. out 对象

正确out 对象是一个 JspWriter 类型的对象,用于向客户端输出数据。你可以使用它来生成 HTML 标签、文本或其他类型的内容。

B. response 对象

正确response 对象是一个 HttpServletResponse 类型的对象,它允许开发者控制 HTTP 响应。你可以使用它来设置响应头、状态码或者重定向页面等。

C. application 对象

正确application 对象是一个 ServletContext 类型的对象,它代表了当前 Web 应用的上下文。你可以使用它来存储全局变量或获取应用范围内的配置信息。

D. page 对象

正确page 对象是一个 JspPage 类型的对象,它代表了当前 JSP 页面本身。你可以使用它来访问页面的属性或执行页面上的操作。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 用OpenCV与MFC写一个简单易用的图像处理程序
  • 9.C基础_指针与数组
  • 【vue3|第21期】Vue3中Vue Router的push和replace方法详解
  • 服装行业QMS中的来料检验:常见问题解析与解决策略
  • 贪心算法总结(3)
  • 设计模式的概念及必要性
  • Synchronized 的底层原理——Java全栈知识(40)
  • Flink SQL 基础操作
  • 注解Spring @AliasFor使用笔记
  • 知识点——样本间独立性,传统表征学习,显式物理连接,隐含交互,噪声,类相关类无关
  • 从零开始的CPP(37)跳跃游戏,动态规划,贪心算法
  • 纷享销客CRM AI产品架构概览、产品特色
  • Github 2024-08-09 开源项目日报 Top10
  • git的一些操作指令
  • 工作随记:oracle中偶发遇到存储过程编辑,删除等卡死问题
  • [译]CSS 居中(Center)方法大合集
  • es6要点
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • Vue ES6 Jade Scss Webpack Gulp
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 浏览器缓存机制分析
  • 排序(1):冒泡排序
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 我看到的前端
  • 新书推荐|Windows黑客编程技术详解
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • 说说我为什么看好Spring Cloud Alibaba
  • 昨天1024程序员节,我故意写了个死循环~
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (补充):java各种进制、原码、反码、补码和文本、图像、音频在计算机中的存储方式
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (几何:六边形面积)编写程序,提示用户输入六边形的边长,然后显示它的面积。
  • (每日一问)计算机网络:浏览器输入一个地址到跳出网页这个过程中发生了哪些事情?(废话少说版)
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • ****Linux下Mysql的安装和配置
  • ***微信公众号支付+微信H5支付+微信扫码支付+小程序支付+APP微信支付解决方案总结...
  • .net core 使用js,.net core 使用javascript,在.net core项目中怎么使用javascript
  • .Net 基于.Net8开发的一个Asp.Net Core Webapi小型易用框架
  • .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态
  • .NetCore部署微服务(二)
  • .NET使用存储过程实现对数据库的增删改查
  • .NET中使用Protobuffer 实现序列化和反序列化
  • .so文件(linux系统)
  • @RunWith注解作用
  • @软考考生,这份软考高分攻略你须知道
  • @在php中起什么作用?
  • [000-01-022].第06节:RabbitMQ中的交换机介绍
  • [AutoSAR系列] 1.3 AutoSar 架构
  • [C#]调用本地摄像头录制视频并保存