Java面试题冲刺第五天–基础篇2

Java面试题冲刺第五天--基础篇2

一、问题1:数组的长度、容量和元素个数有什么区别?

答案

  • 数组的长度(length):数组长度是确定且不可改变的,是数组定义的时候就确定好的,可以通过引用名称加.length获得。
  • 数组的容量:数组容量和数组长度没有什么关系,当数组被初始化后,容量一旦被确定就无法更改。数组容量大小是指JVM为了让数组能够并发访问而在内存中所划分的数组的地址空间。容量就是能够在数组中存储的元素的个数,使用数组的方法和函数可以操作存储在数组容器中的元素。
  • 数组的元素个数:数组的元素个数表示数组中已经存储的元素数量。例如,一个长度为10的数组存储了5个元素,则这个数组中的元素个数就是5。

示例

    //定义一个长度为3的数组
    int[] array = new int[3];

    //将数据存入数组中,元素个数为2
    array[0] = 1;
    array[1] = 2;

    //获取数组长度和元素个数
    System.out.println(array.length);  //输出3,数组长度为3
    System.out.println(array[2]);      //输出0,数组第三个元素默认值为0
    System.out.println(array[1]);      //输出2,数组第二个元素为2

二、问题2:ArrayList和LinkedList有什么区别?

答案

  • 数据结构:ArrayList是动态数组实现,LinkedList是双向链表实现。
  • 插入删除效率:ArrayList与LinkedList的插入和删除元素的效率不同。ArrayList的插入和删除操作会影响后面元素的索引,需要调整。而LinkedList删除元素的效率比较高,只需修改相邻节点的引用,而ArrayList则涉及到的是数组在内存中向后或向前移动的操作,效率较低。
  • 空间占用:ArrayList和LinkedList在空间占用上差别很大,ArrayList所占内存大小为整形 ((n*(n+1))/2), n为数组长度;而LinkedList则完全是根据元素的个数来确定所占空间大小。

示例

    List<Integer> arrayList = new ArrayList<>();
    List<Integer> linkedList = new LinkedList<>();

    long startTime = System.currentTimeMillis();

    //ArrayList中间插入10000个元素
    for (int i = 0; i < 10000; i++){
        arrayList.add(5000, i);
    }

    System.out.println("ArrayList 所用时间 :" + (System.currentTimeMillis() - startTime));

    startTime = System.currentTimeMillis();

    //LinkedList中间插入10000个元素
    for (int i = 0; i < 10000; i++){
        linkedList.add(5000, i);
    }

    System.out.println("LinkedList 所用时间 :" + (System.currentTimeMillis() - startTime));

运行结果:

ArrayList 所用时间 :78
LinkedList 所用时间 :220

从结果可以看出,ArrayList在中间插入10000个元素的操作上优于LinkedList。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java面试题冲刺第五天–基础篇2 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • 麻雀虽小五脏俱全 Dojo自定义控件应用

    麻雀虽小五脏俱全 Dojo自定义控件应用是指采用Dojo技术栈自定义开发控件实现特定功能的过程。在这个过程中,我们使用Dojo提供的模块、函数、接口等来编写自己的控件,可以根据需求自由组合、扩展,从而实现功能丰富、灵活可定制的应用程序。下面是 Dojo 自定义控件应用的详细攻略: 1. 安装 Dojo 工具包 在使用 Dojo 进行开发之前,需要先安装 Do…

    Java 2023年6月15日
    00
  • Maven默认中央仓库(settings.xml 配置详解)

    Maven是一个流行的Java构建工具,它使用中央仓库来管理项目所需的依赖库。在使用Maven时,默认使用中央仓库(Central Repository),本文将介绍如何在settings.xml文件中配置Maven默认中央仓库。 1. settings.xml文件 在Maven中,settings.xml文件用于配置Maven的全局设置(如本地仓库路径、镜…

    Java 2023年5月20日
    00
  • Java钩子方法概念原理详解

    Java钩子方法概念原理详解 Java中的钩子方法(Hook Method),顾名思义就是在某个阶段插入一些代码,以改变程序的控制流程或增加一些新的功能,从而达到在运行时改变程序行为的目的。 钩子方法原理 我们知道Java中有很多基础的类和接口,比如Thread类、WindowAdapter类、Servlet类等等,在这些类和接口中一般会预留一些钩子方法,等…

    Java 2023年5月26日
    00
  • 详解SpringBoot集成jsp(附源码)+遇到的坑

    接下来我将为你详细讲解 “详解SpringBoot集成jsp(附源码)+遇到的坑”的完整攻略,并且提供两条示例。 一、前言 SpringBoot的主要目标是简化Spring应用程序的开发以及部署。在实际开发中,我们常常需要集成jsp,但是SpringBoot默认情况下是不支持jsp的,需要我们进行特殊的配置,下面将详细讲解SpringBoot集成jsp的步骤…

    Java 2023年5月15日
    00
  • centos 安装java环境的多种方法

    CentOS 安装 Java 环境的多种方法 Java 是一种跨平台、面向对象的编程语言,广泛应用于 Web 开发、移动开发和桌面应用开发等领域。但是,在运行 Java 程序之前必须先安装 Java 运行环境(JRE)或 Java 开发工具包(JDK)。本文将介绍 CentOS 安装 Java 环境的多种方法。 方法一:通过 yum 命令安装 CentOS …

    Java 2023年5月24日
    00
  • JAVA多线程CountDownLatch使用详解

    JAVA多线程CountDownLatch使用详解 什么是CountDownLatch CountDownLatch是一种同步工具类,它可以让一个或多个线程等待其他线程完成操作后再执行。其主要方法是: public class CountDownLatch { public CountDownLatch(int count); public void awa…

    Java 2023年5月18日
    00
  • MyBatis中map的应用与模糊查询实现代码

    MyBatis是一种开源持久层框架,支持自定义SQL、存储过程以及高级映射。这里将详细讲解MyBatis中map的应用与模糊查询实现代码的攻略。 MyBatis中map的应用 在MyBatis中,map可以作为参数传入SQL语句,并且可以在SQL语句中使用map中的键值对。下面是一个示例: <!– SQL语句 –> <select id…

    Java 2023年5月20日
    00
  • 现代高效的java构建工具gradle的快速入门

    下面我来为你详细讲解现代高效的 Java 构建工具 Gradle 的快速入门的完整攻略。 什么是 Gradle? Gradle 是一款由 Groovy 编写的构建工具,在 2012 年开始受到广泛关注。它可以用于构建 Java 项目,也可以用于构建其他类型的项目。 与其他构建工具相比,Gradle 更加灵活、易于定制,并具有更强的性能。它采用了一种基于任务(…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部