7.26总结

news2024/11/25 5:20:12

继承和实现的区别:

1.修饰符不同:

继承修饰符extends,实现修饰符implements

2.单继承,多实现,Java允许一个类仅能继承一个其他类,即一个类只能有一个父类,这个限制被称为单继承性,而接口允许多继承,弥补了Java类只能单继承的缺陷。

String str = new String("123");该过程首先由于"123"是一个字符串常量,他会被存储在字符串常量池中,在执行代码的时候,如果常量池里面已经有了"123",那么久不会再创建新的对象,而是直接引用常量池中已经存在的对象。然后new String()是一定会创建一个对象的;

List接口一共有三个实现类,分别是ArrayList、Vector和LinkedList。List用于存放多个元素,能够维护元素的次序,并且允许元素的重复。3个具体实现类的相关区别如下:

1.ArrayList是最常用的List实现类,内部是通过数组来实现的,它允许对元素进行快速随机访问,数组的缺点是每个元素之前不能有间隔,当数组的大小不满足时需要增加存储能力,就要将已经有数组的数据复制到新的存储空间中,当从ArrayList的中间位置插入或者删除元素的时候,需要对数组进行复制,移动,代价比较高。因此,它适合随机查找和遍历,不适合插入和删除。

2.Vector和ArrayList一样,也是通过数组实现的,不同的是它支持线程的同步,即某一时刻只有一个线程能够写Vector,避免多线程同时写而引起的不一致性,但是实现同步要花很长的时间,因此,访问它比访问ArrayList慢

3.LinkedList是用链表结构存储数据的,很适合数据的动态插入和删除,随机访问和遍历速度比较慢。另外,他还提供了List接口中没有定义的方法,专门用于操作表头和表尾元素,可以当作堆栈、队列和双向队列使用。

4.Vector是线程(Thread)同步(Synchronized)的,所以它也是线程安全的,而Arraylist是线程异步(ASynchronized)的,是不安全的。如果不考虑到线程的安全因素,一般用Arraylist效率比较高。

5.如果集合中的元素的数目大于目前集合数组的长度时,vector增长率为目前数组长度的100%,而arraylist增长率为目前数组长度的50%.如过在集合中使用数据量比较大的数据,用vector有一定的优势。Vector一次增加一倍长度,Arraylist一次增加一半长度

6.查找指定位置的数据花费时间:ArrayList和Vector都是O(1),而LinkedList是O(i);

移动指定位置的数据花费时间: ArrayList和Vector都是O(n-i),而LinkedList是O(1);

Vector由于使用了synchronized方法(线程安全)所以性能上比ArrayList要差

Java中的参数传递

Java中的参数传递是值传递的。对于基本数据类型,传递的是其值的副本;对于对象,传递的是其引用的副本。这意味着在方法中对基本数据类型进行修改不会影响原始值,但在方法中对对象属性的修改会影响原始对象

Java中的集合类和底层实现

  1. ArrayList:实现了可变大小的数组。它使用数组作为其底层数据结构。
  1. LinkedList:实现了链表数据结构。它使用双向链表作为其底层数据结构。
  1. HashSet:实现了基于哈希表的集合。它是通过HashMap实现的,底层使用HashMap的键来存储元素,值则被设置为一个固定的Object对象。
  1. TreeSet:实现了基于红黑树(自平衡二叉搜索树)的集合。它使用TreeMap作为其底层数据结构。
  1. HashMap:实现了基于哈希表的映射。它使用数组和链表(或红黑树)的组合来实现哈希桶。
  1. TreeMap:实现了基于红黑树的映射。它使用红黑树作为其底层数据结构。
  1. LinkedHashMap:实现了具有可预知迭代顺序的哈希表。它使用哈希表和双向链表的组合来实现。
  1. PriorityQueue:实现了优先队列(最小堆)。它使用数组来实现堆结构。

==和equals()

“==”和equals 最大的区别是

  • “==”是运算符,如果是基本数据类型,则比较存储的值;如果是引用数据类型,则比较所指向对象的地址值。
  • equals是Object的方法,比较的是所指向的对象的地址值,一般情况下,重写之后比较的是对象的值。

Java中线程池种类

  1. FixedThreadPool(固定大小线程池):该线程池维护固定数量的线程,适用于需要限制线程数量的场景。当线程池中的线程都在执行任务时,新任务会进入等待队列,直到有线程可用才会执行。
  1. CachedThreadPool(可缓存线程池):该线程池的线程数量不固定,会根据任务的数量自动调整。适用于执行大量短期任务的场景,当线程空闲超过指定时间(默认为60秒)时,线程会被销毁;而当任务量增加时,会重新创建新的线程处理任务。
  1. SingleThreadExecutor(单线程线程池):该线程池只包含一个线程,适用于需要保证任务按顺序执行的场景。当线程因异常退出时,会创建一个新的线程来替代,确保任务持续执行。
  1. ScheduledThreadPool(调度线程池):该线程池可用于执行定时任务和周期性任务,可以指定任务的执行时间或间隔时间。可以通过

 接口提供的方法来安排任务的执行。ScheduledExecutorService

  1. WorkStealingPool(工作窃取线程池):该线程池是在Java 1.8版本引入的,基于Fork/Join框架实现,适用于执行大量并行任务的场景。线程池中的线程通过工作窃取算法,可以从其他线程的任务队列中获取任务并执行。

重写和重载

重写是子类对父类中已有方法的实现进行重新编写,方法名、参数列表和返回类型都必须相同;重载是在同一个类中定义多个具有相同方法名但参数列表不同的方法,它们具有不同的参数类型、参数个数或参数顺序。

事务的四大特性

原子性,一致性,隔离性,持久性

创建线程的三种方式

1.继承Thread类,

2.实现Runnable接口

3.实现Callable接口

Java集合

(5条消息) java集合超详解_phial03的博客-CSDN博客

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

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

相关文章

测试开源C#人脸识别模块ViewFaceCore(4:口罩检测、性别预测、年龄预测)

ViewFaceCore模块中的MaskDetector类支持识别人脸是否戴了口罩或有遮挡&#xff0c;主要调用PlotMask函数执行口罩检测操作&#xff0c;其函数原型如下所示&#xff1a; PlotMaskResult PlotMask<T>(T image, FaceInfo info)public class PlotMaskResult{//// 摘要:// …

Docker容器命令(有点详细)

文章目录 Docker 容器容器运行背后启停命令run交互模式需不需要接/bin/bash createexecattachpstoplogscprmcommitexportimportsystem对比export、saveimport、loadcommit、exportimport Docker 容器 Docker 容器是 Docker 平台中的一个基本概念&#xff0c;它是 Docker 技术的…

SpringCloud学习路线(12)——分布式搜索ElasticSeach数据聚合、自动补全、数据同步

一、数据聚合 聚合&#xff08;aggregations&#xff09;&#xff1a; 实现对文档数据的统计、分析、运算。 &#xff08;一&#xff09;聚合的常见种类 桶&#xff08;Bucket&#xff09;聚合&#xff1a; 用来做文档分组。 TermAggregation&#xff1a; 按照文档字段值分组…

【计算机网络】2.1——物理层(编码波形、奈氏准则和香农公式计算)

物理层 基本概念 概念 物理层考虑的是怎样才能在连接各种计算机的传输媒体上传输数据比特流 为数据链路层屏蔽了各种传输媒体的差异 数据链路层只需要考虑如何完成本层的协议和服务&#xff0c;而不必考虑网络具体的传输媒体是什么 物理层协议主要任务 机械特性 指明接口所…

区块链学习笔记

区块链技术与应用 数组 列表 二叉树 哈希函数 BTC中的密码学原理 cryptographic hash function collsion resistance(碰撞抵抗) 碰撞指的是找到两个不同的输入值&#xff0c;使得它们的哈希值相同。也就是说&#xff0c;如果存在任意两个输入x和y&#xff0c;满足x ≠ y…

利用Stable diffusion Ai 制作艺术二维码超详细参数和教程

大家有没有发现最近这段时间网上出现了各种各样的AI艺术二维码&#xff0c;这种二维码的出现&#xff0c;简直是对二维码的“颠覆式创新”&#xff0c;直接把传统的二维码提升了一个维度&#xff01;作为设计师的我们怎么可以不会呢&#xff1f; 今天就教大家怎么制作这种超有艺…

Python基于PyTorch实现卷积神经网络回归模型(CNN回归算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 卷积神经网络&#xff0c;简称为卷积网络&#xff0c;与普通神经网络的区别是它的卷积层内的神经元只覆…

使用EasyPoi实现Excel的按模板样式导出

1&#xff0c;横向遍历 #fe 使用#fe命令可以实现集合数据的横向拓展&#xff0c;比如模板代码是 {{#fe:maths t.score}}导出的excel里面就会显示会自当前列&#xff0c;向右拓展&#xff0c;效果可参见下面的导出文件截图 2&#xff0c;横向遍历值 v_fe 使用v_fe命令可以实现…

vue3+ts+elementui-plus二次封装弹框

一、弹框组件BaseDialog <template><div classmain><el-dialog v-model"visible" :title"title" :width"dialogWidth" :before-close"handleClose"><!-- 内容插槽 --><slot></slot><template…

分布式理论:CAP理论 BASE理论

文章目录 1. CAP定理1.1 一致性1.2 可用性1.3 分区容错1.4 矛盾 2. BASE理论3. 解决分布式事务的思路4. 扩展 解决分布式事务问题&#xff0c;需要一些分布式系统的基础知识作为理论指导。 1. CAP定理 Consistency(一致性): 用户访问分布式系统中的任意节点&#xff0c;得到的…

【LeetCode】1143.最长公共子序列(闫氏dp可视化无分析)

class Solution { public:int longestCommonSubsequence(string text1, string text2) {int len1 text1.size(), len2 text2.size();text1 " " text1;text2 " " text2; //以上三行代码需要注意&#xff0c; //第一行是求string长度的方法 //第二行是…

使用3ds Max粒子系统创建飞天箭雨特效场景

推荐&#xff1a; NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 1. 设置箭头 步骤 1 打开 3ds Max。 打开 3ds Max 步骤 2 我使用多边形建模技术制作了一个简单的箭头&#xff0c;我将 在教程中使用。.max您可以从 下载部分。 箭头.max 步骤 3 将此箭头重命名为静态…

如何安装多个版本的python,python可以装两个版本吗

这篇文章主要介绍了可不可以在同一台计算机上安装多个python版本&#xff0c;具有一定借鉴价值&#xff0c;需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获&#xff0c;下面让小编带着大家一起了解一下。 1、不同版本的python不能安装到同一台计算机上 可以的&#…

绿水青山,水质监测需要智能网关

“ 绿水青山就是金山银山&#xff0c;随着国家在环保领域的持续发力&#xff0c;水作为环境监管极其重要的一极&#xff0c;尤其是河湖水系的监管&#xff0c;也越来越严格&#xff0c;监测布点密度不断加大。水质自动监测站作为河湖断面监测和水质判断比较权威的工具&#xff…

LabVIEW开发谐振器陀螺仪仿真系统

LabVIEW开发谐振器陀螺仪仿真系统 陀螺仪是INS系统中最重要的传感器。它们的性能&#xff08;如精度和偏置稳定性&#xff09;决定了INS系统的水平。陀螺仪按原理分为三类&#xff1a;角动量守恒、萨格纳克效应和科里奥利效应。旋转坐标系中的移动物体受到的力与旋转坐标系的角…

微信小程序 样式和全局配置

WXSS wxss 把屏幕分为750个物理像素&#xff0c;大屏大&#xff0c;小屏小&#xff0c;随着设备不一致自动适配 推荐使用iPhone6作为标准&#xff0c;1个rpx 0.5个px&#xff0c;把px乘以2就是rpx的参数 import 导入外部样式表 import /common/common.wxss 样式 权重一…

Pytorch个人学习记录总结 09

目录 损失函数与反向传播 L1Loss MSELOSS CrossEntropyLoss 损失函数与反向传播 所需的Loss计算函数都在torch.nn的LossFunctions中&#xff0c;官方网址是&#xff1a;torch.nn — PyTorch 2.0 documentation。举例了L1Loss、MSELoss、CrossEntropyLoss。 在这些Loss函数…

Andrew算法求凸包模板

前置知识 向量的叉乘: 设 a ⃗ ( x a , y a , z a ) , b ⃗ ( x b , y b , z b ) \vec a(x_a,y_a,z_a), \vec b(x_b, y_b,z_b) a (xa​,ya​,za​),b (xb​,yb​,zb​), 令 a ⃗ \vec a a 和 b ⃗ \vec b b 的叉乘为 c ⃗ \vec c c , 有: c ⃗ ∣ i j k x a y a z a x b y…

微软对Visual Studio 17.7 Preview 4进行版本更新,新插件管理器亮相

近期微软发布了Visual Studio 17.7 Preview 4版本&#xff0c;而在这个版本当中&#xff0c;全新设计的扩展插件管理器将亮相&#xff0c;并且可以让用户可更简单地安装和管理扩展插件。 据了解&#xff0c;目前用户可以从 Visual Studio Marketplace 下载各式各样的 VS 扩展插…

[DASCTF 2023 0X401七月暑期挑战赛] viphouse复现

这个题想了好久&#xff0c;无果&#xff0c;终于看到WP。照着作了一遍。WP里没有详细解释&#xff0c;所以复现得很辛苦。 程序有5个菜单和1个初始化程序&#xff1a; init 先从os.random读8个字节放到src处login 读入用户名密码&#xff0c;其中密码栈里设的0x40可以读入0x…