Java面试题 Java如何进行高效的数组拷贝?【Arrays.copyOf()】

简介: Java面试题 Java如何进行高效的数组拷贝?【Arrays.copyOf()】

Arrays.copyOf或 System.arraycopy,是自己new数组, 然后for循环复制效率的两倍左右。

为什么快,因为它们是native方法;


直接赋值的问题:


public class Action {
    public static void main(String[] args) {
        //初始数组
        int[] arr0={9,5,2,7};
        System.out.println(arr0.hashCode());
        //赋值数组
        int[] arr1=arr0;
        System.out.println(arr1.hashCode());
        //修改原数组
        arr0[0]=5;
        System.out.println("原数组");
        for (int i:arr0) {
            System.out.print(i+",");
        }
        System.out.println();
        //赋值的新数组·未做更新
        System.out.println("新数组");
        for (int i:arr1) {
            System.out.print(i+",");
        }
        System.out.println();
    }
}


新旧一样,肯定有问题。


微信图片_20220110225732.png


使用Arrays.copyOf(数组,长度)


import java.util.Arrays;
public class Action {
    public static void main(String[] args) {
        //初始数组
        int[] arr0={9,5,2,7};
        System.out.println(arr0.hashCode());
        //赋值数组
        int[] arr1= Arrays.copyOf(arr0,arr0.length);
        System.out.println(arr1.hashCode());
        //修改原数组
        arr0[0]=5;
        System.out.println("原数组");
        for (int i:arr0) {
            System.out.print(i+",");
        }
        System.out.println();
        //赋值的新数组·未做更新
        System.out.println("新数组");
        for (int i:arr1) {
            System.out.print(i+",");
        }
        System.out.println();
    }
}


微信图片_20220110225748.png

相关文章
|
5月前
|
存储 缓存 Java
Java数组全解析:一维、多维与内存模型
本文深入解析Java数组的内存布局与操作技巧,涵盖一维及多维数组的声明、初始化、内存模型,以及数组常见陷阱和性能优化。通过图文结合的方式帮助开发者彻底理解数组本质,并提供Arrays工具类的实用方法与面试高频问题解析,助你掌握数组核心知识,避免常见错误。
|
4月前
|
算法 Java
50道java集合面试题
50道 java 集合面试题
|
7月前
|
缓存 Java 关系型数据库
2025 年最新华为 Java 面试题及答案,全方位打造面试宝典
Java面试高频考点与实践指南(150字摘要) 本文系统梳理了Java面试核心考点,包括Java基础(数据类型、面向对象特性、常用类使用)、并发编程(线程机制、锁原理、并发容器)、JVM(内存模型、GC算法、类加载机制)、Spring框架(IoC/AOP、Bean生命周期、事务管理)、数据库(MySQL引擎、事务隔离、索引优化)及分布式(CAP理论、ID生成、Redis缓存)。同时提供华为级实战代码,涵盖Spring Cloud Alibaba微服务、Sentinel限流、Seata分布式事务,以及完整的D
422 1
|
6月前
|
缓存 Java API
Java 面试实操指南与最新技术结合的实战攻略
本指南涵盖Java 17+新特性、Spring Boot 3微服务、响应式编程、容器化部署与数据缓存实操,结合代码案例解析高频面试技术点,助你掌握最新Java技术栈,提升实战能力,轻松应对Java中高级岗位面试。
537 0
|
4月前
|
Java
Java 数组学习笔记
本文整理Java数组常用操作:遍历、求和、查找、最值及二维数组行求和等典型练习,涵盖静态初始化、元素翻倍、去极值求平均等实例,帮助掌握数组基础与应用。
|
6月前
|
Java 数据库连接 数据库
Java 相关知识点总结含基础语法进阶技巧及面试重点知识
本文全面总结了Java核心知识点,涵盖基础语法、面向对象、集合框架、并发编程、网络编程及主流框架如Spring生态、MyBatis等,结合JVM原理与性能优化技巧,并通过一个学生信息管理系统的实战案例,帮助你快速掌握Java开发技能,适合Java学习与面试准备。
323 2
Java 相关知识点总结含基础语法进阶技巧及面试重点知识
|
4月前
|
算法 Java
50道java基础面试题
50道java基础面试题
|
6月前
|
存储 Java 索引
java 数组
在 Java 中,数组是一种数据结构,用于存储多个相同类型的数据元素。数组的大小一旦创建后就不能改变,因此它是固定长度的。Java 数组是一种 对象,即使它存储的值是基本类型(如 int、double 等),它也是一个对象引用。
178 0