面试题库之JAVA基础篇(二)

String
  1. 只读字符串。
  2. 每次+操作会隐式的在内存中new一个跟原字符串一样的StringBuilder对象,然后append+号后面的字符串。
StringBuilder 
  1. 可变字符串对象。
  2. 线程不安全。
StringBuffer 
  1. 可变字符串对象。
  2. 线程安全。
数组
  1. 一种线性数据结构,使用连续的存储空间存放相同数据类型的集合容器。
  2. 存储和访问效率高,时间复杂度O(1)。
  3. 删除数据需要重排后面的数据,时间复杂度O(n)。
  4. 初始化时需要指定长度,长度不可变。
  5. 可通过复制的方式扩容长度。
  6. 支持存储基本数据类型。
Collection 
  1. 可以存储多个不同对象的容器。
  2.  不直接存储对象,而是对象的引用。
  3. 不能存储基本数据类型。
List 
  1. 继承了Collection的有序列表。
  2. 通过索引访问列表元素。
ArrayList 
  1. List接口的动态数组实现,容量不足时按1.5倍扩容。
  2. 初始化的默认容量为10。
  3. 访问速度快。
  4. 线程不安全。
  5. 在添加大量元素时,如果已知元素数量,使用ensureCapacity()方法先进行扩容,避免添加元素过程中的多次扩容。
  6. 实现了Cloneable接口,可以被复制,但是是浅拷贝。
LinkedList
  1. List接口的链表实现。 
  2. 插入和删除元素的性能优越,时间复杂度O(1)。
  3. 线程不安全。
Collections 

        Collections是集合的一个辅助工具类,它包含了很多集合操作的静态方法,用于实现集合的搜索、排序、线程安全化等操作。

Map

        键值对映射的抽象接口,一个键对应一个值。

HashMap 
  1. 基于map接口的非同步实现。
  2. 线程不安全。
  3. key和value可以null,key不能重复,所以只有一个key可以为null。
  4. 初始容量16,容量建议2的N次方,能提高计算机的执行效率。
  5. 扩容阈值默认0.75。
  6. 每次扩容为原容量的两倍。
  7. 底层采用数组+链表实现,数组的每个元素存储一个单向链表,当链表的长度超过一定的阈值时,就会转换成红黑树。转换的目的是当链表中元素较多时,也能保证HashMap的存取效率(备注:链表转为红黑树只有在数组的长度大于等于64才会触发)。
 Fail-Fast机制

        一种错误机制,当多个线程对同一个集合的内容进行操作时,就可能发生fail-fast事件。

        modCount:集合内部记录集合修改次数的属性,每次修改,modCount+1。

        expectModCount:迭代器内部记录集合的修改次数,初始化时会将集合当前的修改次数记录下来,迭代器修改集合元素时,modCount、expectModCount均+1。

        集合的fail-fast机制:迭代器遍历的每次循环开始时候,expectModCount会和modCount比较,如果不相等,就认为有别的线程修改了集合,则会抛出ConcurrentModificationException异常。

泛型 
  1. 本质是参数类型化,就是把数据类型当做一个参数。
  2. 使用泛型可以避免显示的强制类型转换,增加代码的可读性。
  3. 使用泛型能够降低运行时的类型转化异常,提高代码健壮性。 
浅拷贝

         新对象和旧对象的成员变量的值一致,引用变量指向的也是同一个对象。

深拷贝 

         新对象和旧对象的成员变量的值一致,新对象中的引用变量指向的对象也是被复制了新对象。

final 
  1. 被final修饰的类不可以被继承。
  2. 被final修改的方法不可以被重写。
  3. 被final修改的变量不可变,如果修改的是引用,那么引用不可变,引用指向的对象内容可变。
  4. 被final修改的方法,jvm会尝试内联,以提高运行效率。
  5. 被final修饰的常量,在编译期间,会存入常量池中。 
finally 
  1.  不管有没有异常,finally模块中的代码都会执行。
  2. 当try和catch中有return时,finally任然会执行。
  3. return的值是在finally执行前确定的。
  4. finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值。 
异常 
  1. 运行时异常(RuntimeException):RuntimeException及其子类,编译器不会检查,属于不可预知的异常。如:ClassCastException,NullPointerException。
  2. 被检查的异常(CheckedException)::Exception本身,以及Exception子类(除运行时异常外)都属于被检查的异常。可以理解为编译器会检查的异常,那么通过throw进行申明抛出,要么通过try-catch捕获处理。如:IOException。
  3. 错误(Error):Error类及其子类,当资源不足、约束失败、或是其他程序无法继续运行的条件发生时,就会产生错误,程序本省无法修复这些错误。如:OutOfMemoryErro,ThreadDeat

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

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

相关文章

【华为OD题库-045】分割数组的最大差值-java

题目 给定一个由若干整数组成的数组nums,可以在数组内的任意位置进行分割,将该数组分割成两个非空子数组(即左数组和右数组),分别对子数组求和得到两个值,计算这两个值的差值,请输出所有分割方案中,差值最大…

onlyoffice文件大小超出了服务器设置处理

onlyoffice文件大小超出了服务器设置处理 1.前言2. onlyoffice服务安装2.1 docker安装命令2.2 访问测试 3. 修改服务器文件大小限制方案3.1 旧方案-7.2版本不可行3.1.1 进入 OnlyOffice Document Server 容器3.1.2 编辑配置文件3.1.3 找到并修改文件大小限制3.1.4 保存并退出编…

ArkTS-警告弹窗

警告弹窗 显示警告弹窗组件,可设置文本内容与响应回调。 使用 Button(点击警告).onClick(()> {AlertDialog.show({title: 标题,message: 内容,autoCancel: true,alignment: DialogAlignment.Center,gridCount: 4,offset: { dx: 0, dy: -20 },primaryButton: {va…

dbCAN碳水化合物酶基因数据库及run_dbCAN4工具安装配置及使用

dbCAN(碳水化合物酶基因数据库)是一个专门用于在基因组中预测碳水化合物酶基因的在线工具。它基于隐马尔可夫模型(HMM)和BLAST搜索,能够在蛋白质序列中识别和注释不同类型的碳水化合物酶基因,包括纤维素酶、…

Python中基于Pandas的Excel工具类,一文掌握!

更多资料获取 📚 个人网站:ipengtao.com 在Python中处理Excel时,Pandas库是一个强大且灵活的工具。它不仅能够轻松处理数据分析任务,还能用于创建、读取和写入Excel文件。在本文中,将探讨如何使用Pandas库封装一个Exc…

48、Flink DataStream API 编程指南(1)- DataStream 入门示例

Flink 系列文章 1、Flink 部署、概念介绍、source、transformation、sink使用示例、四大基石介绍和示例等系列综合文章链接 13、Flink 的table api与sql的基本概念、通用api介绍及入门示例 14、Flink 的table api与sql之数据类型: 内置数据类型以及它们的属性 15、Flink 的ta…

SpringBoot application.yml配置文件写法

1,基本介绍 (1)YAML 是 JSON 的超集,简洁而强大,是一种专门用来书写配置文件的语言,可以替代 application.properties。 (2)在创建一个 SpringBoot 项目时,引入的 spri…

2023年汉字小达人市级比赛答题通道和时间已公布,常见问题和解答

备受上海市小学生关注的2023年第十届汉字小达人市级比赛将于今天下午16点-18点正式开始。很多家长和孩子都在关心届时如何进入汉字小达人市级比赛的通道(入口)呢?用什么设备呢?有什么注意事项呢?尤其是第一次参加比赛的…

彻底删除VsCode配置和安装过的插件与缓存

前言 当你准备对 Visual Studio Code(VSCode)进行重新安装时,可能遇到一个常见问题:重新安装后,新的安装似乎仍然保留了旧的配置信息,这可能会导致一些麻烦。这种情况通常是由于卸载不彻底所致&#xff0c…

git分支命名规范

https://www.cnblogs.com/wq-9/p/16968098.html

Android-P CameraSerivce

0 前言 本文重点分析Android-P的CameraService实现。 验证:Goldfish模拟器 1 定义 图1.1 CameraService ICameraServiceframeworks/av/camera/aidl/android/hardware/ICameraService.aidlBnCameraServiceout/soong/.intermediates/frameworks/av/camera/libcamera_client/an…

《微信小程序开发从入门到实战》学习三十七

4.2 云开发JSON数据库 4.2.8 分页查询 在计算机互联网时代,很多页面底部分页导航按钮,有首页、上一页、第一页、第二页、尾页。 分页查询是指根据页码将每一页的数据查询出来。 在移动互联网时代,网页和应用都对网页进行优化,…

浅谈安科瑞网络电力仪表在斯里兰卡某项目的应用

摘要:安科瑞APM系列网络仪表适用于高低压柜,进线以及出线处的全电量测量及监测。 Absrtact: APM series of network power meter are suitable for full power measurement and monitoring of high and low voltage cabinets, incoming and outgoing li…

低功耗CMOS实时时钟/日历电路芯片D8563,1.0~5.0V,内置报警和定时器,电源复位功能

D8563是低功耗的CMOS实时时钟/日历电路,它提供一个可编程时钟输出,一个中断输出和掉电检测器,所有的地址和数据通过IC总线接口串行传递。最大总线速度为400Kbitss每次读写数据后,内嵌的字地址寄存器会自动产生增量。 主要特点: …

Python异常处理:try...except语句

Python是一门非常灵活且易于学习的编程语言,在日常开发中被广泛应用。然而,由于各种原因,我们的代码可能会出现异常情况,例如输入错误、文件读写异常等等。Python异常处理是Python中重要的一部分,为了保证程序的稳定性…

一、Gradle 手动创建一个项目

文章目录 Gradle 介绍Gradle Wrapper Gradle 使用手动安装 Gradle初始化 Gradle 介绍 Gradle 是一个快速的、可信的、适应性强的自动化构建工具,它是开源的。它使用优雅的并且可扩展的描述性语言。其他的介绍在官网可以了解。 Gradle Wrapper 官方建议使用 Gradl…

适配器模式-C++实现

适配器是一种结构型设计模式,用于将一个接口转换为另一个客户端所需要的接口。该模式通过创建一个适配器对象,使不兼容的接口可以协同工作。 适配器模式主要分为三个角色:适配器类、目标类、适配者类。 适配器模式分为对象适配器和类适配器…

信号收尾.

sigaction 信号捕捉 它也是信号捕捉,不仅能处理普通信号还能处理实时信号,但我们不管实时信号 我们发现函数名和形参中结构体名一样都是sigaction,这在c/c中允许吗? 不建议,但是可以 signo你要捕捉几号信号 输入型参…

HarmonyOS应用开发者基础认证考试题目及答案

一、判断题 Ability是系统调度应用的最小单元,是能够完成一个独立功能的组件。一个应用可以包含一个或多个Ability。 正确(True) 所有使用Component修饰的自定义组件都支持onPageShow,onBackPress和onPageHide生命周期函数。 错误(False) 每调用一次ro…

老泮识趣:难忘何家桥

回忆何家桥往事,写了篇《消失的何家桥》,没想到点击率如此高,出乎意料。网友的共鸣可见,城市发展的今天,乡情是个美好的存在,清贫、朴实,丝毫不影响美感。由于大家的鼓励,触动了我再…