Java每日一练:挑战你的编程技能

news2024/11/27 10:31:08

题目

选自牛客网

1.定义有

StringBuffer s1=new StringBuffer(10);s1.append(“1234”),则s1.length()和s1.capacity()分别是多少?
A.4 10
B.4 4
C.10 10
D.10 4

正确答案是A
即s1.length()为4,s1.capacity()为10。

在Java中,StringBuffer是一个可变字符串类,它允许在字符串的末尾添加或删除字符,而不会产生新的字符串对象,这与不可变的String类形成对比。StringBuffer的构造函数可以接受一个参数,表示初始容量。在这个例子中,s1的初始容量被设置为10。

StringBuffer对象s1被初始化并使用append方法添加了字符串"1234"后,s1的长度变为4,因为"1234"包含4个字符。但是,s1的容量仍然是10,因为容量是指StringBuffer能够存储的最大字符数,而这个值在初始化时被设定为10,并且在没有调用ensureCapacity或类似方法改变容量的情况下,不会因为添加内容而自动改变。

因此,s1.length()返回4,s1.capacity()返回10。


2.下面有关SPRING的事务传播特性,说法错误的是?

A.PROPAGATION_SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行
B.PROPAGATION_REQUIRED:支持当前事务,如果当前没有事务,就抛出异常
C.PROPAGATION_REQUIRES_NEW:新建事务,如果当前存在事务,把当前事务挂起
D.PROPAGATION_NESTED:支持当前事务,新增Savepoint点,与当前事务同步提交或回滚

正确答案是B,即PROPAGATION_REQUIRED并不是说如果当前没有事务,就抛出异常,而是如果当前没有事务,它会创建一个新的事务。

在Spring的事务管理中,PROPAGATION_REQUIRED是最常用的事务传播行为。它的行为可以总结如下:

  • 如果当前存在一个事务,那么方法会在这个事务中运行。
  • 如果当前没有事务,那么会创建一个新的事务,并且这个方法会在新事务中运行。

这意味着PROPAGATION_REQUIRED不会因为没有现有事务而抛出异常,相反,它会根据情况自动创建一个事务。这是Spring事务管理中最常见的需求,即确保方法在事务上下文中运行,无论调用栈中是否存在事务。

其他选项的描述是正确的:

  • PROPAGATION_SUPPORTS:如果当前存在事务,那么方法会在这个事务中运行;如果当前没有事务,那么方法会以非事务方式运行。
  • PROPAGATION_REQUIRES_NEW:总是创建一个新的事务,并挂起当前事务(如果存在)。
  • PROPAGATION_NESTED:在现有事务中创建一个嵌套事务,如果当前存在事务,它会创建一个保存点,允许嵌套事务独立提交或回滚,而不影响外层事务的状态。

因此,选项B中的描述是不准确的,正确的描述应该是PROPAGATION_REQUIRED支持当前事务,如果当前没有事务,它会创建一个新的事务。


3.java运行时内存分为“线程共享”和“线程私有”两部分,以下哪些属于“线程共享”部分

A.程序计算器
B.方法区
C.java虚拟机栈
D.java堆

正确答案是BD,即方法区和Java堆属于“线程共享”部分。

在Java运行时内存模型中,内存可以大致分为“线程共享”和“线程私有”两部分。线程共享部分是指在多个线程间共享的内存区域,而线程私有部分则只对单个线程可见。

  • Java堆(Java Heap):这是所有线程共享的内存区域。在堆中,对象实例和数组被分配和存储。它是垃圾收集器的主要工作区域。

  • 方法区(Method Area):也称为非堆(Non-Heap),同样被所有的线程共享。方法区存储类信息、常量、静态变量、即时编译器编译后的代码等数据。在JDK
    8及更高版本中,方法区被永久代(PermGen space)所取代,但概念上仍然存在。

而线程私有部分包括:

  • 程序计数器(Program Counter Register):每个线程都有一个独立的程序计数器,用于指示当前线程所执行的字节码指令的地址。

  • 虚拟机栈(Java Virtual Machine Stack):每个线程拥有一个独立的虚拟机栈,用于存储方法执行时的局部变量、操作数栈、动态链接、方法出口等信息。

因此,根据上述描述,选项B(方法区)和D(Java堆)属于“线程共享”部分,而选项A(程序计数器)和C(Java虚拟机栈)属于“线程私有”部分。

4.volatile关键字的说法错误的是

A.能保证线程安全
B.volatile关键字用在多线程同步中,可保证读取的可见性
C.JVM保证从主内存加载到线程工作内存的值是最新的
D.volatile能禁止进行指令重排序

正确答案是A,即volatile关键字并不能保证线程安全。

volatile关键字在Java中用于实现变量的可见性和禁止指令重排序,但并不保证线程安全。下面对每个选项进行详细解释:

A.能保证线程安全:这个说法是错误的。volatile关键字可以确保一个线程对变量的修改对其他线程是立即可见的,但它并不提供原子性或互斥性。这意味着volatile变量的读取和写入是原子性的,但是基于volatile变量的复合操作(如i++)在多线程环境下可能仍然会产生竞争条件和不一致的结果,因此不能保证线程安全。

5.下面哪个选项正确创建socket连接?

A.Socket s = new Socket(8080);
B.Socket s = new Socket(“192.168.1.1”,8080)
C.SocketServer s = new Socket(8080);
D.Socket s = new SocketServer(“192.168.1.1”,8080)

正确答案:B
在Java中,创建一个客户端Socket连接需要使用java.net.Socket类。正确的创建方式需要指定服务器的IP地址(或域名)以及端口号。因此,正确的选项是:

Socket s = new Socket("192.168.1.1", 8080);

这个语句创建了一个指向IP地址192.168.1.1且端口为8080的Socket连接。

选项分析:

  • A: new Socket(8080) 是不正确的,因为它缺少了服务器的地址信息,并且构造函数需要一个字符串类型的主机名或者IP地址和一个整数类型的端口号。
  • B: new Socket("192.168.1.1", 8080) 正确地指定了IP地址和端口号,这是正确的选项。
  • C: SocketServer 不是一个有效的Java类名;Java中用于监听并接受连接请求的是ServerSocket类。
  • D: SocketServer 同样不是一个有效的类名,并且这里混淆了客户端和服务端的角色。正确的服务端Socket创建方式应该是使用ServerSocket类。

因此,正确答案是 B

总结

在这里插入图片描述

记住,成功往往青睐那些敢于尝试、不畏失败、持续努力的人。少年,你的时间和机会都还很多,不要害怕犯错,因为每一次失败都是通往成功的宝贵经验。保持热情,坚定信念,勇敢地追求你的梦想,你的人生将因你的努力而精彩!

所以,少年,不要犹豫,往前冲吧,你的未来充满无限可能!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1985436.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

树莓集团的全球化征程:数字媒体产业的本土与国际布局

在全球数字化转型的浪潮中,树莓集团正稳步推进数字媒体产业从本土到国际的全球化布局。在数字媒体产业这一新兴且充满活力的领域中,树莓集团不仅在国内市场树立了标杆,更以其独特的全球化战略布局,引领着行业的未来趋势。 本土深耕…

【Linux】【系统纪元】Linux起源与环境安装

快乐的流畅:个人主页 个人专栏:《C游记》《进击的C》《Linux迷航》 远方有一堆篝火,在为久候之人燃烧! 文章目录 一、Linux的起源1.1 计算机硬件1.2 计算机软件 二、Linux的环境安装2.1 安装方式2.2 安装版本2.3 安装过程2.4 远程…

细说工程师如何编写有使用价值的单片机程序(以GPIO为例)

目录 一、何谓有使用价值的单片机程序 二、 硬件板及设计目的 三、建立工程 1.配置GPIO 2.配置时钟源和Debug 3.配置系统时钟 四、代码编写与修改 1.创建应用程序文件夹 2.编写应用文件keyed.h和 keyled. c 3.修改main.c 一、何谓有使用价值的单片机程序 前面我…

Python打开JSON/CSV文件的正确方式(针对UnicodeDecodeError)

前言 我们在使用python的过程中,经常需要它完成一些数据处理的工作,其中尤以json/csv文件为常见。今天,博主针对UnicodeDecodeError异常进行试验,因为这个是新手最容易犯错的地方。 Q:如何应对 UnicodeDecodeError 读…

VMware 设置开机自启动虚拟机

1.虚拟机vmx文件的存储路径 2.快捷键图标,右键–>属性–>快捷方式 3.目标命令里填充 -x “vmx路径” 4.点击:应用–>确定 5.“win键R” 输入shell:startup 6.将启动快捷键复制粘贴到里面

8.6 字符串中等 481 Magical String 522 Longest Uncommon Subsequence II

481 Magical String 像之前那个base ,首先对magic string做出分析,才能够分析这道题的规律 读题: //magic string仅包含1 2 并遵循 //串联字符串中 ‘1’ 和 ‘2’ 的连续出现次数可以生成该字符串。concatenating 字符串中的 1 2 contiguous…

java学习--线程基础

概念 程序 进程 线程 单线程与多线程 并发与并行 线程基本使用 基成Tread类 关系图 /* author:我与java相爱相杀---c语言梦开始的地方 今天又是努力学习的一天!!!! */public class Main {public static void main(String[] args…

【Android Git】Android项目版本由SVN变成Git

前言 在Android开发环境中,vcs.xml 文件通常与版本控制系统(VCS,Version Control System)有关,这个文件保存了与版本控制系统相关的配置信息。 以下是 vcs.xml 文件的一些关键点: 版本控制配置&#xff…

Cryptomator-保护你云端上的隐私

网盘为我们提供了随时随地的获取数据的便利性,同时也大大减轻了你我手机电脑空间不足的压力。但是一旦我们选择使用网盘,也意味着把你的私密数据交出去了。 对于公共资料来说,无非就是提供网盘服务的公司知道了你做了保存这些资料的行为而已…

提升用户体验的秘诀:Xinstall带你玩转Web拉起App!

在移动互联网时代,App已成为我们日常生活中不可或缺的一部分。然而,随着App数量的激增,如何让用户更便捷地触达和使用App,成为了开发者和运营者面临的一大挑战。今天,我们就来揭秘一个能够一键实现Web拉起App的神器——…

类和对象(下)C++

1.初始化列表 1.为什么有初始化列表,它的作用? ->初始化列表,是构造函数初始化的另一种形式。 ->在语法上面理解,初始化列表可以认定为是每个成员变量定义初始化的地方. ->引用成员变量,const成员变量&am…

100个免费可商用图库,一次收藏,众生受益

正版图片太贵 免费图片又有风险 免费可商用图片才是设计师心头所好 (当然,土豪除外) 以下100个免费可商用图库 一次收藏,众生受益! skr~skr~skr~ 1、Unsplash https://unsplash.com/ 建…

6个免费的无损音乐下载网站,建议收藏!

分享6个免费的无损音乐下载网站,都是免费的音乐资源,国内外各种风格的音乐都能找到! MyFreeMP3 tools.liumingye.cn/music/ 一个免费的mp3音乐下载网站,里面有丰富的音乐资源,支持在线听歌,也可以下载歌…

找出电脑中的视频文件并把地址输出在记事本文件中,同理通过bat脚本找出需要的其他后缀文件,比如word文件excel文件md文件等

下午的时候,突然很着急,要找到一个之前下载的一个视频文件,我记得是mp4格式的视频文件,但是具体叫什么名字不记得了,更不记得在哪个目录下,所以想了一个办法,通过bat脚本命令,找到所…

Hack The Box-Resource【更新中】

总体思路 信息收集&端口利用 nmap -sSVC itrc.ssg.htb目标开放了两个ssh端口和一个80端口,先查看80端口 网站是一个SSG IT资源中心,主要用于解决网站问题、管理 SSH 访问、清除病毒和解决各种安全问题的权威一站式商店。 后台挂着目录扫描&#x…

threejs加载fbx带tga贴图报错

描述:threejs加载带tga贴图的fbx时,提示 FBXLoader: TGA loader not found, creating placeholder texture for 11\Pylons_A.TGA 方案一: 加载fbx之前,在LoadingManager中添加TGALoader。此方案有两个前提 1、FBXLoader和TGALoa…

JDK-Java IO流概述

JDK-Java IO流概述 概述 一直以来Java三件套(集合、io、多线程)都是最热门的Java基础技术点,我们要深入掌握好这三件套才能在日常开发中得心应手,之前有编写集合相关的文章,这里出一篇文章来梳理一下io相关的知识点。 …

电商客服的贴心快捷回复助手

作为一位电商客服,你是否曾在回复顾客的过程中感到困扰?是否因为经验不足而踩过雷,比如被平台提示用了违禁词,或是不清楚平台的响应率和满意度等问题?如果是这样,那么今天我要向大家介绍一款神奇的软件&…

小白学算法之移除元素(双指针法!)

力扣27:移除元素 题目内容: 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并原地修改输入数组。 元素…