ArrayList与String[]

不逼自己一把,你永远不知道什么是绝望。

今天被初学java的朋友问到了String[]ArrayList是不是有关系呢?

猜测是名称之间的联想,记此篇解惑。

Array英语单词里是数组、阵列的意思,在java中数组是这样定义的:一组相关类型的变量集合。

格式:数据类型[] 数组名称 = new 数据类型[长度];

根据上边的格式,列举几个常见的数组,比如:String[] int[],如下是数组一些特点:

  1. 数组长度是固定的,无法实现动态扩容;
  2. 数组下标(从0开始)超出数组长度,数组越界异常(运行时异常);
  3. 数组中每个元素都有默认值,默认值是该数据类型默认值;
  4. 数组名称.length(属性):取得数组长度;

看完了上边的数组特点,再来看看ArrayList吧,他又是个啥呢?

ArrayList就是动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了动态的增加和减少元素,实现了ICollection和IList接口,灵活的设置数组的大小等好处 --- 百度百科

所以,看到这,已经明确String[]ArrayList是有点关系的了……

ArrayList是一个数组队列,相当于动态数组,与Java中的数组不同,数组一旦创建,长度固定,但是ArrayList的长度是动态的,不受限制,可以存储任意多的对象,但是只能存储对象,不能存储原生数据类型例如int(基本数据类型)。

如下是ArrayList的关系图:


  1. 继承于AbstractList,实现了List,提供了相关的添加、删除、修改、遍历等功能。
  2. 实现了RandmoAccess接口,即提供了随机访问的功能。RandmoAccessjava中用来被List实现,为List提供快速访问功能的。在ArrayList中,我们即可以通过元素的序号快速获取元素对象;这就是快速随机访问。
  3. 实现了Cloneable接口,即覆盖了函数clone(),能被克隆。
  4. 实现了java.io.Serializable接口,这意味着ArrayList支持序列化,能通过序列化去传输。

总之,ArrayList是非常重要的一个类,在代码中被广泛使用。

点个题,看一下数组与ArrayList的比较:

操作Array(String[])ArrayList
创建String[] array = new String[10];ArrayList list = new ArrayList<>();
访问一个元素array[index]list.get(index);
更新一个元素array[index] = "niceyoo";list.set(index, "niceyoo");
返回大小array.lengthlist.size();
排序java.util.Arrays.sort(array)java.util.Collections.sort(arraylist)
添加一个新元素相当复杂list.add("niceyoo");
插入一个新元素相当复杂list.add(index, "niceyoo");
删除一个元素相当复杂list.remove(index);
删除一个元素相当复杂list.remove(Object);
删除所有元素稍微复杂list.clear();

我创建了一个用来记录自己学习之路的公众号,感兴趣的小伙伴可以关注一下微信公众号:niceyoo

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

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

相关文章

WebStorm取消默认style样式折叠

WebStorm取消默认style样式折叠&#xff1a; File--->Settings打开一个窗口 Edit--->CodeFolding 把HTML style attribute的前面的钩去掉[取消勾选] 右下角点击Apply--->ok

Vue中的computed属性

1、前言 本篇是Vue中最常用到的API之一computed属性&#xff0c;转载信息如下&#xff1a; 作者&#xff1a;gunelark链接&#xff1a;https://www.cnblogs.com/gunelark/p/8492468.html 2、正文 看了网上很多资料&#xff0c;对vue的computed讲解自己看的都不是很清晰&#xf…

订单管理系统(含源码)

本文demo下载和教学视频地址&#xff1a;http://www.wisdomdd.cn/Wisdom/resource/articleDetail.htm?resourceId1077 实例使用PhpMySqlhtmlcss技术实现了订单管理系统, 系统可以分为多个角色进行登录操作, 每个角色分别对应相应的功能, 实例中介绍了一个强大的工具phpStudy&a…

工作305:对选择的数值清空

<template><div><!--选择账号 选择账号的具体页面 选择添加账号--><el-button icon"el-icon-plus" size"medium" click"open" :disabled"viewMode">添加账号</el-button><!--title表示标题 close表示…

Spring和SpringMVC总结篇

作者&#xff1a;肥宅兜链接&#xff1a;https://www.cnblogs.com/doudouxiaoye/p/5693399.html 1.为什么使用Spring ? 方便解耦&#xff0c;简化开发;通过Spring提供的IoC容器&#xff0c;可以将对象之间的依赖关系交由Spring进行控制&#xff0c;避免硬编码所造成的过度程序…

Python3爬虫(十一) 爬虫与反爬虫

Infi-chu: http://www.cnblogs.com/Infi-chu/ 一、重要概念 二、爬虫反爬虫进化论 转载于:https://www.cnblogs.com/Infi-chu/p/8981537.html

配置Maven环境变量-Eclipse/Idea添加Maven

1. 文件下载 官网下载地址&#xff1a;http://maven.apache.org/download.cgi 下方有我提供的下载链接。 由于下载缓慢&#xff0c;提供一份我的下载链接&#xff1a;https://www.lanzous.com/i7v2ryb 2. 解压文件 3. 环境变量 3.1、新建环境变量&#xff0c;如下所示&#xff…

HTML第二课——css

请关注公众号&#xff1a;自动化测试实战 先给大家提个建议&#xff0c;就是用sublime编辑器来编写。用其他的也无所谓&#xff0c;我只是建议&#xff0c;因为这个会帮你自动补全很多代码。 css概念 css叫层叠样式表。意思就是一层一层的叠加。作用就是让页面中的可视化标签变…

工作306:.sync解决子组件改变自身值 父组件也改变自身数值

Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-

修改MyEclipse/Eclipse左侧文字大小(MacOS/Windows)

一、Windows 首先找到 Eclipse/MyEclipse 的安装目录&#xff0c;然后找到如下目录&#xff1a; \plugins\org.eclipse.ui.themes_1.1.200.v20160815-0536\css\e4_basestyle.css 修改此 css 文件&#xff0c;添加如下内容&#xff1a; CTabFolder Tree{ font-size: 12px;} 二…

Kubernetes tutorial - K8S 官方入门教程

tutorials 教程 kubectl 的命令手册 1 Creating a Cluster 1.1 Using Minikube to Create a Cluster Kubernetes Clusters Kubernetes coordinates a highly available cluster of computers that are connected to work as a single unit. The abstractions in Kubernetes all…

uniapp增加百度统计代码(h5)

做了个微信公众号文章互相阅读的h5界面&#xff0c;http://mptask.wintp.top/&#xff08;只能微信浏览器打开&#xff09;&#xff0c;其中用到了统计代码&#xff0c;记录如下。 1、新建 tj.html 界面 可放置在项目的根目录&#xff0c;文件名称根据自己情况命名。 2、粘贴内…

前端学习(2847):css鼠标样式

<html><head><meta http-equiv"Content-Type" content"text/html; charsetutf-8" /><title>css鼠标样式</title></head><body><a href"####" style"cursor:pointer">hello world1<…

前端学习(2848):鼠标点击事件

<< 一起来做秒杀活动 >>一、分类 一般事件 页面相关事件 表单相关事件 滚动字幕事件 编辑事件 外部事件二、常用事件 示例 onclick onmouseover onmouseout onkeydown onerror onloadonsubmit onblur onfocus

2019年终总结-2020展望「持续更新至31号」

粗略的统计了一下&#xff0c;2019 在博客园发布了约 140 篇文章&#xff0c;写文章有一段时间了&#xff0c;最开始的初衷就是记录自己平时开发遇到的 Bug&#xff0c;能更快捷的调取笔记&#xff1b; 写着写着&#xff0c;迎来了第 52 个关注者… 2019 或许是自己最艰难的一年…

前端学习(2849):简单秒杀学习之浮动

1浮动和不浮动 2下移和卡住 3环绕 4清除浮动 5浮动实际应用

前端学习(2850):简单秒杀系统学习之绝对定位

<html><head><meta http-equiv"Content-Type" content"text/html; charsetutf-8" /><title>CSS绝对定位</title><style type"text/css">div{background-color: Red;width: 30px;height: 30px;}#box_relativ…

「声明」本博客自动采集于博客园-niceyoo

开启了 CSDN 的博客搬家功能&#xff0c;自动同步博客园的文章信息。 所以本博客200篇文章有时不予回复、望体谅。 博客园链接&#xff1a;https://www.cnblogs.com/niceyoo

django channels

一直都是用HTTP请求糊里糊涂的实现了一次请求&#xff0c;一次响应。最近尝试用Django这种框架实现websocket&#xff0c;用的是Django channels&#xff0c;结合官网给的例子&#xff0c;实现了日志动态展示到页面。源码地址: 但是对于其原理&#xff0c;却想研究一番。 先看一…