Java的数组与集合

article/2025/9/13 22:52:05

Java的数组与集合

  • 数组
    • 1.数组的概念
    • 2.数组的定义
    • 3.数组的初始化
      • 数组静态初始化
      • 数组动态初始化
      • 数组默认初始化值
    • 4.数组元素访问
    • 5.数组的遍历
    • 6.数组的内存图
      • JVM的内存图
      • 数组的内存图
      • 扩展
  • 集合
    • 1.集合与数组的比较
      • 基本数据类型的包装类
    • 2.集合中的成员方法

数组


1.数组的概念

数组是一种容器,可以用来存储同种数据类型的多个值。既可以存储基本数据类型,也可以存储引用数据类型(对象)。



2.数组的定义

数组的定义有以下两种:

  • 格式一:数据类型[] 数组名 (例如:int[] array)
  • 格式二:数据类型 数组名[] (例如:int array[])



3.数组的初始化

数组初始化:在内存中,为数组容器开辟空间,并将数据存入容器中的过程。


数组静态初始化

静态初始化:初始化时由程序员显示指定每个数组元素的初始值,然后由JVM(java虚拟机)决定数组的长度
完整格式:数据类型[] 数组名=new 数据类型[]{元素1,元素2,元素3…}
简化格式:数据类型[] 数组名={元素1,元素2,元素3…}


数组动态初始化

动态初始化:初始化时候只指定数组长度,由JVM(java虚拟机)为数组分配初始值。
格式:数据类型[] 数组名=new 数据类型[数组长度] (例如:int[] arr=new int[3])

在创建的时候,由我们自己指定数组的长度,由虚拟机给出默认的初始化值


数组默认初始化值

● 整数类型:默认初始化值为 0
● 小数类型:默认初始化值为 0.0
● 字符类型:默认初始化值为 ‘\u0000’ (空格)
● 布尔类型:默认初始化值为 false
● 引用数据类型:默认初始化值为 null



4.数组元素访问

数组的长度:

  • 每个数组都具有长度,而且是固定的,Java中赋予了数组的一个属性,可以获取到数组的长度
  • 使用 数组名.length 获取数组的长度

索引

  • 是数组中数据的编号方式
  • 特征:索引是从0开始,是连续,逐一增加的,直到数组长度-1为止
  • 作用:用于访问数组中的数据,并方便使用

格式:数组名[索引] (例如:array[0]就是获取数组中第一个元素)

扩展:数组索引越界问题
当访问数组元素索引并不存在,将会发生异常:java.lang.ArrayIndexOutOfBoundsException



5.数组的遍历

数组遍历:将数组中所有的内容取出来,并进行一些操作(例如:打印,求和,判断…)
数组的遍历有三种方式:

  • for循环遍历:

    //遍历数组通常使用for循环来进行遍历。如果是要遍历二维数组需要使用双层for循环
    public class Test {public static void main(String[] args) {int[] array={1,2,3,4,5};for (int i = 0; i < array.length; i++) {System.out.println(array[i]);}}
    }
    
  • foreach循环遍历:

    //foreach循环,这种循环遍历数组和集合更加简洁。
    //无须获得数组和集合长度,无须根据索(下标)引来访问数组元素,foreach循环自动遍历数组和集合的每一个元素。
    public class Test {public static void main(String[] args) {int[] array={1,2,3,4,5};for (int i : array) {System.out.println(i);}}
    }
    
  • Arrays工具类中toString方法遍历:

    //利用Arrays工具类中的toString静态方法可以将一维数组转化为字符串形式并输出public class Test {public static void main(String[] args) {int[] array={1,2,3,4,5};System.out.println(Arrays.toString(array));}
    



6.数组的内存图

JVM的内存图

在这里插入图片描述

区域名称作用
方法运行时使用的内存,比如main方法运行,进入方法栈中执行
存储对象或者数组,new来创建的,都存储在堆内存中
方法区存储可以运行的class文件
本地方法栈JVM在使用操作系统功能的时候使用,和我们开发无关
寄存器给cpu使用,和我们开发无关

数组的内存图

因为数组是引用数据类型,是通过new关键字创建出来的,所以存放在堆空间中。而变量名保存的是数组在堆内存中的地址值

通过代码:

public class Test {public static void main(String[] args) {int[] arr=new int[3];System.out.println(arr);}
}

发现打印结果为 [I@1b6d3586,这就是数组在内存中的地址值。
在这里插入图片描述
由此可知,多个数组初始化,则会在堆中开辟多个不同的空间,每个空间都有各自的数据,互不冲突。


扩展

两个数组指向同一个空间时,其中一个数组对空间中的值发生改变,那么其他数组再次访问的时候都是修改之后的结果。因为它们的地址值都是一样的,数据是共享的。

int[] array={1,2,3,4,5};
int[] array2=array; //代表将array的地址值赋值给了array2



集合


1.集合与数组的比较

数组和集合都是Java中的容器,但是它们之间还是有很多不同点的。

  • 长度:
    • 数组的长度是固定的
    • 集合长度是可以改变的
  • 存储类型
    • 数组存放的类型是同种数据类型,可以存放基本数据类型和引用数据类型。
    • 集合存放的类型可以是多种的,可以存放引用数据类型,不可以存放基本数据类型,但是可以存放基本数据类型的包装类

基本数据类型的包装类

除了,char(Character)和int(Integer),其他都是把原来的首字母大写
在这里插入图片描述



2.集合中的成员方法

方法名说明
boolean add(E e)添加元素,返回值表示是否添加成功
boolean remove(E e)删除指定元素,返回值表示是否删除成功
E remove(int index)删除指定索引的元素,返回被删除元素
E set(int index,E e)修改指定索引下的元素,返回原来的元素
E get(int index)获取指定索引的元素
int size()集合的长度,也就是集合中元素的个数

http://chatgpt.dhexx.cn/article/ZyQ3WuXQ.shtml

相关文章

数组与集合有什么不同之处

这个问题其实就是一个非常基础的面试题&#xff0c;一般面试官想了解你基础知识方面的掌握时&#xff0c;基本都会问这个问题&#xff0c;尤其是一些&#xff0c;计算机学子毕业之后&#xff0c;如果还是想要从事计算机技术相关的行业时&#xff0c;那么在面试的时候就需要做好…

kotlin数组和集合

一、Kotlin数组 1.对象数组 由Kotlin的main函数的写法&#xff0c;可以看出Kotlin中的对象数组写法与泛型的写法很像。 fun main(args: Array<String>){ } 声明对象数组的三种形式&#xff1a; (1)使用arrayOf函数和指定的数组元素创建数组 //Java写法: String[] p…

Java--数组和集合区别

一、数组 1、Java语言中的数组是一种引用数据类型&#xff1b;不属于基本数据类型 2、数组当中既可以存储“基本数据类型”的数据&#xff0c;也可以存储“引用数据类型”的数据&#xff08;数组既可以存储基本数据类型&#xff0c;又可以存储引用数据类型&#xff0c;基本数…

数组和集合的区别

一、数组声明了它容纳的元素的类型&#xff0c;而集合不声明。 二、数组是静态的&#xff0c;一个数组实例具有固定的大小&#xff0c;一旦创建了就无法改变容量了。而集合是可以动态扩展容量&#xff0c;可以根据需要动态改变大小&#xff0c;集合提供更多的成员方法&#xff…

数组和集合区别

一、数组声明了它容纳的元素的类型&#xff0c;而集合不声明。 二、数组是静态的&#xff0c;一个数组实例具有固定的大小&#xff0c;一旦创建了就无法改变容量了。而集合是可以动态扩展容量&#xff0c;可以根据需要动态改变大小&#xff0c;集合提供更多的成员方法&#xff…

Intellij idea 的tomcat原理讲解

作者: 陈宇超          纪念卓越班的日子 初次用idea的小白可能会很感到很神奇&#xff0c;intellij idea部署web项目在浏览器不需要输入项目名就可以直接访问&#xff0c;很是方便啊。那么 intellij 是如何实现这一功能的呢&#xff1f;在了解其原理之前需要掌握一定的…

Tomcat运行原理

Tomcat服务器本质 Tomcat是运行在JVM中的一个进程。通过处理scoket通信 (Socket) 来运行。Web项目的本质&#xff0c;是一大堆的资源文件和方法。Web项目没有入口方法(main方法)&#xff0c;意味着Web项目中的方法不会自动运行起来。Web项目部署进Tomcat的webapp中&#xff0c…

tomcat原理简要分析,java

tomcat原理 tomcat位置 tomcat实际上是部署在服务器上的&#xff1b; tomcat作用 tomcat服务器是一个Servlet和JSP容器&#xff0c;它响应HTML页面的访问请求。 实际上Tomcat是Apache 服务器的扩展&#xff0c;但运行时它是独立运行的&#xff0c;所以当你运行tomcat 时&#…

谈谈TOMCAT原理和机制

从服务器说起&#xff0c;一台装了操作系统&#xff08;linux、unix、win等等&#xff09;的物理机或者虚拟机不能称之为真正的服务器&#xff0c;因为服务器是能对外界提供服务的计算机&#xff0c;要能成为服务器必须借助其他软件的支持比如:tocmat、apache、IIS、nginx、jet…

Tomcat工作原理

本文以 Tomcat 5 为基础&#xff0c;也兼顾最新的 Tomcat 6 和 Tomcat 4。Tomcat 的基本设计思路和架构是具有一定连续性的。 Tomcat 总体结构 Tomcat 的结构很复杂&#xff0c;但是 Tomcat 也非常的模块化&#xff0c;找到了 Tomcat 最核心的模块&#xff0c;您就抓住了 Tom…

tomcat启动原理

前言 一直在用Tomcat&#xff0c;但是对其启动原理一直没去研究&#xff0c;这里准备去面试&#xff0c;可能会问道。于是总结了下启动原理。完全凭感觉去揣测&#xff0c;没工夫看源码。因此错误之处希望大家批评指正&#xff0c;大家共同进步。我想这也是在忙碌中进步最快的…

深入剖析Tomcat原理

深入剖析Tomcat原理 一、 Tomcat源码部署和运行&#xff08;intellij IDEA&#xff09; 1、下载tomcat源码&#xff0c;以tomcat-8为例 链接: https://tomcat.apache.org/ 2、源码部署到IDEA中 ①创建新的空工程 ②解压源码压缩包到该工程的目录&#xff08;目录名最好是非…

Springboot内置Tomcat原理

SpringBoot的启动主要是通过实例化SpringApplication来启动的&#xff0c;启动过程主要做了以下几件事情&#xff1a;配置属性、获取监听器&#xff0c;发布应用开始启动事件初、始化输入参数、配置环境&#xff0c;输出banner、创建上下文、预处理上下文、刷新上下文、再刷新上…

【springboot】自动整合Tomcat原理

通过前面我们会SpringBoot的自动配置机制、Starter机制、启动过程的底层分析&#xff0c;我们拿一个实际的业务案例来串讲一下&#xff0c;那就是SpringBoot和Tomcat的整合。 我们知道&#xff0c;只要我们的项目添加的starter为&#xff1a;spring-boot-starter-web&#xff…

总结:SpringBoot内嵌Tomcat原理

一、介绍 一般我们启动web服务都需要单独的去安装tomcat&#xff0c;而Springboot自身却直接整合了Tomcat&#xff0c;什么原理呢&#xff1f; 二、原理 SpringBoot应用只需要引入spring-boot-starter-web中这个依赖&#xff0c;应用程序就默认引入了tomcat依赖&#xff0c;其…

Tomcat的架构原理

一、前言 Tomcat服务器是一个开源的轻量级Web应用服务器&#xff0c;在中小型系统和并发量小的场合下被普遍使用&#xff0c;是开发和调试Servlet、JSP程序的首选。同时它是运行在JVM中的一个进程&#xff0c;包含Web容器&#xff0c;相当于是Web容器和JVM之间的中间件。 二、…

浅析tomcat原理

浅析tomcat原理 上上个星期&#xff0c;看了一下how tomcat works这本书&#xff0c;今天捡起来看一会&#xff0c;发现忘得有点快&#xff0c;特地写点东西&#xff0c;加深一下记忆。因为书讲的是tomcat4&#xff0c;5的内容&#xff0c;比较旧了&#xff0c;所以和最新的to…

Tomcat底层原理

一、Tomcat启动时到底对我们的应用程序做了什么&#xff1f; 当我们把一个应用程序的war包放到Tomcat的webapps目录后&#xff0c;启动Tomcat&#xff0c;然后就可以通过浏览器发送Http请求访问该war包内的Servlet了。 这个过程包括&#xff1a; 1、启动Tomcat 2、Tomcat处理H…

tomcat的工作原理以及简介

Tomcat简介 Tomcat是一个JSP/Servlet容器。其作为Servlet容器&#xff0c;有三种工作模式&#xff1a;独立的Servlet容器、进程内的Servlet容器和进程外的Servlet容器&#xff0c; 1.Tomcat是运行在JVM中的一个进程。它定义为【中间件】&#xff0c;顾名思义&#xff0c;是一个…

tomcat组成及工作原理

1 - Tomcat Server的组成部分 1.1 - Server A Server element represents the entire Catalina servlet container. (Singleton) 1.2 - Service A Service element represents the combination of one or more Connector components that share a single Engine Servic…