System.arraycopy()方法详解

article/2025/8/19 6:03:23

一、深度复制和浅度复制的区别

         Java数组的复制操作可以分为深度复制和浅度复制,简单来说深度复制,可以将对象的值和对象的内容复制;浅复制是指对对象引用的复制。

二、System.arraycopy()方法实现复制

1、System中提供了一个native静态方法arraycopy(),可以使用这个方法来实现数组之间的复制。对于一维数组来说,这种复制属性值传递,修改副本不会影响原来的值。对于二维或者一维数组中存放的是对象时,复制结果是一维的引用变量传递给副本的一维数组,修改副本时,会影响原来的数组。


2、System.arraycopy的函数原型是:

public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)
其中:src表示源数组,srcPos表示源数组要复制的起始位置,desc表示目标数组,length表示要复制的长度。

3、利用System.arraycopy实现数组复制的示例:

[java]  view plain copy
print ?
  1. package com.shuzu;  
  2. /*System中提供了一个native方法arraycopy()*/  
  3. public class SsytemArrayCopy {  
  4.     public static void main(String[] args) {  
  5.        User [] users=new User[]{new User(1,"admin","admin@qq.com"),new User(2,"maco","maco@qq,com"),new User(3,"kitty","kitty@qq,com")};//初始化对象数组  
  6.        User [] target=new User[users.length];//新建一个目标对象数组  
  7.        System.arraycopy(users, 0, target, 0, users.length);//实现复制  
  8.        System.out.println("源对象与目标对象的物理地址是否一样:"+(users[0] == target[0]?"浅复制":"深复制"));  
  9.        target[0].setEmail("admin@sina.com");  
  10.        System.out.println("修改目标对象的属性值后源对象users:");  
  11.        for (User user : users){  
  12.            System.out.println(user);  
  13.        }           
  14.     }  
  15. }  
  16. class User{  
  17.     private Integer id;  
  18.     private String username;  
  19.     private String email;  
  20.     //无参构造函数  
  21.     public User() { }  
  22.     //有参的构造函数  
  23.     public User(Integer id, String username, String email) {  
  24.         super();  
  25.         this.id = id;  
  26.         this.username = username;  
  27.         this.email = email;  
  28.     }  
  29.     public Integer getId() {  
  30.         return id;  
  31.     }  
  32.     public void setId(Integer id) {  
  33.         this.id = id;  
  34.     }  
  35.     public String getUsername() {  
  36.         return username;  
  37.     }  
  38.     public void setUsername(String username) {  
  39.         this.username = username;  
  40.     }  
  41.     public String getEmail() {  
  42.         return email;  
  43.     }  
  44.     public void setEmail(String email) {  
  45.         this.email = email;  
  46.     }  
  47.     @Override  
  48.     public String toString() {  
  49.         return "User [id=" + id + ", username=" + username + ", email=" + email  
  50.                 + "]";  
  51.     }  
  52. }  

程序运行的结果:


下图是System.arraycopy()复制的过程:


http://chatgpt.dhexx.cn/article/1VgjZjaa.shtml

相关文章

Arraycopy方法

Arraycopy方法开发工具与关键技术:java 作者:彭浩达 撰写时间:2019年 5月 2日Arraycopy(Object src,int srcPos,Object dest,int destPos,int length) 描述:从指定源数组中复制一个数组,复制从指定的位置开始&#xff…

arraycopy方法简析

arraycopy(System类的静态方法) public static void arraycopy( Object src, int srcPos, Object dest, int destPos, int length) 简述 从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。 参数&a…

arraycopy - 数组复制【详细图解】

1.arraycopy底层代码: 2.arraycopy的使用 第一个参数:源数组 第二个参数:在源数组中,被复制的数字开始复制的下标 第三个参数:目标数组 第四个参数:从目标数组中,从第几个下标开始放入复制的数据 第五…

关于Java中arraycopy的用法

一、实现数组之间的复制 int c[] {1,2,3,4,5},d[]; dnew int[5]; System.arraycopy(c, 0, d, 0, 5); //实现数组之间的复制 for(int n0;n<d.length;n) {System.out.println(d[n]); } 将c数组中从索引为0开始长度为5的数据复制到d中&#xff0c;并从索引为0开始。 输…

页面左侧二级菜单20种案例

向下滑动查看 本文由码农网 – 小峰原创&#xff0c;转载请看清文末的转载要求&#xff0c;欢迎参与我们的付费投稿计划&#xff01; jQuery作为一款主流的JavaScript前端开发框架&#xff0c;深受广告开发者的亲睐&#xff0c;同时jQuery有着不计其数的插件&#xff0c;特别是…

纯CSS实现二级菜单

书写基本样式 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-widt…

jQuery一级菜单和二级菜单

1、先做一级菜单&#xff0c;第一步设置body&#xff0c;把大概样子写出来。 2、第二步-1、用css设置通配符。 3、第二步-2、设置ul标签基础样式 。 4、第二步-3、设置类样式。 5、设置jquery内容的第一步先引入jQuery文件。 6、第二步设置一个函数在里面放入我们要设置成的效果…

bootstrap导航窗格响应式二级菜单

这次碰到的需求是响应式二级导航窗格&#xff0c;默认的导航窗格只有点击下拉框的二级窗格&#xff0c;会有如下问题&#xff1a;一级菜单无法添加超链接&#xff0c;二级菜单展示要多点一下。 实现目标&#xff1a; 1.滑动到指定区域&#xff0c;展示二级菜单。 2.一级菜单和…

html 悬停 二级菜单,使用HTML+CSS实现鼠标划过的二级菜单栏!

话不多说&#xff0c;先上效果图&#xff1a; 1、鼠标没在上面 image 2、鼠标放在一级菜单上&#xff0c;展开二级菜单 image 3、鼠标放在二级菜单上 image二级菜单测试 /*为了使菜单居中*/ body { padding-top:100px; text-align:center; } /* -------------菜单css代码------…

DIV+CSS 二级菜单实现

DIVCSS实现二级菜单 在网页制作中我们经常会用到的这样的导航栏二级菜单布局 实现效果如下&#xff1a; 设计思路就是通过 ul li 的双重嵌套来实现二级菜单&#xff0c;l利用display:none将二级菜单默认隐藏&#xff0c;li:hover鼠标悬浮时再将其显示出来。 需要注意的是&…

html 二级菜单 鼠标移动消失,鼠标一离开导航菜单,二级菜单就隐藏,移不到二级菜单...

鼠标一离开导航菜单,二级菜单就隐藏,移不到二级菜单 wky1682008 2015-12-28 09:27 html >无标题文档 ul{margin:0;padding:0;list-style:none; font-size:16px;font-family:"宋体";} a{ text-decoration:none;} ul{width:1000px; margin:50px auto 20px;backgro…

HTML一级菜单和二级菜单区别,一级菜单和二级菜单对不齐

html>二级菜单 *{margin: 0px; padding: 0px; } ul{font-size: 18px; color: white; list-style-type: none; text-align: center; width: 200px; line-height: 40px; background-color: black; position: relative; } a{color:white; text-decoration: none; } li{border-b…

HTML下拉框二级菜单

一、form表单 <div><form><div><!-- 下拉框 --><select>//默认项为第一个<option>广州</option><option>深圳</option><option>山东</option><option>北京</option></select></div>…

html 二级页面 教程,css 实现动态二级菜单

动态实现简单的二级菜单 当鼠标放到一级标签上时&#xff0c;鼠标会变成小手的形状 展示二级菜单&#xff0c;源码如下&#xff0c;复制即可直接使用Document * {margin: 0; padding: 0;} ul { list-style: none;} div { width: 100%; height: 50px; background-color: #ccc; }…

HTML+CSS制作二级菜单栏

今天我们来练习一下二级菜单栏,说实话比较简单,但是自己一个人写的时候错误百出,逻辑混乱,于是乎网上找了几个案例,借鉴了一下思路,才整明白,鄙人确实不才,哈哈! 效果图附上: 首先:我已链接了外部样式重置,所以无需自己亲自写: reset.css网上有很多,我用的是下面…

JS二级菜单

我们使用HTMLcssjs来写出二级菜单的简易效果 首先来看HTML的代码&#xff0c;这个没什么好说的 <div class"box"><div class"topbox"><ul><li class"bgc">春雨</li><li>夏风</li><li>秋雾<…

html 二级菜单

先放效果图&#xff1a; 首先设置菜单的基本轮廓 <div id"nav"><ul><li><a href"#">一级菜单1</a></li><li><a href"#">一级菜单2</a></li><li><a href"#" …

html、css 实现二级菜单

本文中&#xff0c;一级菜单我设计了五个元素&#xff08;然后给第四个元素设计了二级菜单&#xff09; html&#xff1a; <nav><ul class"topnav clearfix"><li><a href"">Lorem.</a></li><li><a href&quo…

二级菜单

原理&#xff1a; 其核心就是两层ul进行嵌套当鼠标移动到一级菜单时&#xff0c;其对应的二级菜单自动展开 下面我们来看具体的代码&#xff1a; <div class"menu-box"><ul><li><a href"#">首页</a></li><li>…

二级菜单小知识

在许多网页中&#xff0c;我们经常会见到二级菜单&#xff0c;例如以下这种 这个是wegame官网实现的二级菜单&#xff0c;但我在实现这种菜单时也遇到过以下这种情况&#xff1a; 很明显&#xff0c;在我刚打开二级菜单想要触碰时菜单就消失了&#xff0c;这是因为什么呢&#…