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日

相关文章

  • Maven最佳实践之一个好的parent依赖基础

    “Maven最佳实践之一个好的parent依赖基础”是指在使用Maven构建项目时,良好的父依赖是保证项目构建质量、维护成本及后期升级的重要因素。下面我将详细讲解“Maven最佳实践之一个好的parent依赖基础”的完整攻略。 什么是一个好的parent依赖 一个好的parent依赖应符合以下原则: 遵循单一职责原则:父依赖只应提供共通性的配置和依赖,而不应…

    Java 2023年5月20日
    00
  • SpringBoot集成多数据源解析

    关于“SpringBoot集成多数据源解析”的完整攻略,我会进行如下的讲解: 一、前置知识 在了解“SpringBoot集成多数据源解析”之前,需要你掌握以下的技术: SpringBoot SpringDataJPA 数据源的概念 二、什么是多数据源 “多数据源”是指在一个应用程序中使用多个数据库连接。 在一个应用程序中,不同的业务功能可能需要操作不同的数据…

    Java 2023年5月20日
    00
  • JDBC链接数据库的几个步骤

    JDBC 是Java Database Connectivity的缩写,意为Java数据库连通性,是Java语言中访问数据库的一种技术。以下是JDBC链接数据库的几个步骤以及示例: 步骤一:加载数据库驱动 在Java程序中要想使用某个数据库的API,就必须先装载这个数据库的驱动程序。 try { // 加载MySQL驱动 Class.forName(&quo…

    Java 2023年5月20日
    00
  • Java中不常用但很好用的开发小技巧分享

    下面是 “Java中不常用但很好用的开发小技巧分享” 的完整攻略: 一、使用Lambda表达式简化代码 Lambda表达式是Java 8中引入的新特性,它可以将方法当做参数进行传递,从而简化代码。比如,在Java 8之前,如果我们要对一个集合进行排序,通常需要实现Comparator接口,然后实现compare方法。而在Java 8中,我们可以使用Lambd…

    Java 2023年5月23日
    00
  • java实现的各种排序算法代码示例

    “Java实现的各种排序算法代码示例”这个话题,是介绍Java中常用的各种排序算法的实现方式。在这篇攻略中,将会依次介绍常用排序算法的实现思路,结合Java语言的特点,详细讲解每种算法的代码实现。 什么是排序算法 排序算法是计算机科学中的一种重要算法,它指的是将一组序列按照顺序重新排列的过程。对于程序员来说,熟练掌握各种排序算法,不仅可以提高代码的执行效率,…

    Java 2023年5月18日
    00
  • jsp+dao+bean+servlet(MVC模式)实现简单用户登录和注册页面

    这里是JSP+DAO+Bean+Servlet四个技术实现MVC模式的简单用户登录与注册的攻略。我们使用MySQL作为数据库。 1. 创建数据库表 首先我们需要创建两个表:用户表和用户信息表。 CREATE TABLE `t_user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(50…

    Java 2023年6月15日
    00
  • springboot整合security和vue的实践

    下面我将详细讲解“springboot整合security和vue的实践”的完整攻略。 准备工作 首先我们需要准备好以下工具和软件: Java JDK 1.8 或以上版本 Maven 3.0 或以上版本 Vue CLI Node.js 创建Spring Boot项目 在intelliJ IDEA中创建一个新的Spring Boot项目 在pom.xml中添加…

    Java 2023年5月19日
    00
  • 基于Cookie使用过滤器实现客户每次访问只登录一次

    概述 使用过滤器来实现客户端每次访问只登录一次,需要使用Cookie来保存会话信息。把用户的登录状态作为一个标识存储到Cookie中,通过过滤器来检查Cookie中是否存在标识,如果存在则表示用户已经登录过,直接放行请求;如果不存在,则表示用户未登录或者会话已失效,需要跳转到登录界面进行身份验证。 实现步骤 2.1 配置过滤器 在web.xml文件中添加如下…

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