欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中的System.arraycopy()淺復(fù)制方法詳解

 更新時間:2023年11月18日 11:25:36   作者:五月天的尾巴  
這篇文章主要介紹了Java中的System.arraycopy()淺復(fù)制方法詳解,Java數(shù)組的復(fù)制操作可以分為深度復(fù)制和淺度復(fù)制,簡單來說深度復(fù)制,可以將對象的值和對象的內(nèi)容復(fù)制;淺復(fù)制是指對對象引用的復(fù)制,需要的朋友可以參考下

一、深度復(fù)制和淺度復(fù)制的區(qū)別

Java數(shù)組的復(fù)制操作可以分為深度復(fù)制和淺度復(fù)制

簡單來說深度復(fù)制,可以將對象的值和對象的內(nèi)容復(fù)制;淺復(fù)制是指對對象引用的復(fù)制。

二、System.arraycopy()方法實現(xiàn)復(fù)制

1、arraycopy()

System中提供了一個native靜態(tài)方法arraycopy(),可以使用這個方法來實現(xiàn)數(shù)組之間的復(fù)制。

對于一維數(shù)組來說,這種復(fù)制屬性值傳遞,修改副本不會影響原來的值。對于二維或者一維數(shù)組中存放的是對象時,復(fù)制結(jié)果是一維的引用變量傳遞給副本的一維數(shù)組,修改副本時,會影響原來的數(shù)組。

2、System.arraycopy的函數(shù)原型

public static void arraycopy(Object src,
                             int srcPos,
                             Object dest,
                             int destPos,
                             int length)

其中:src表示源數(shù)組,srcPos表示源數(shù)組要復(fù)制的起始位置,desc表示目標(biāo)數(shù)組,length表示要復(fù)制的長度。

3、示例

利用System.arraycopy實現(xiàn)數(shù)組復(fù)制

package com.shuzu;  
/*System中提供了一個native方法arraycopy()*/  
public class SsytemArrayCopy {  
    public static void main(String[] args) {  
       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")};//初始化對象數(shù)組  
       User [] target=new User[users.length];//新建一個目標(biāo)對象數(shù)組  
       System.arraycopy(users, 0, target, 0, users.length);//實現(xiàn)復(fù)制  
       System.out.println("源對象與目標(biāo)對象的物理地址是否一樣:"+(users[0] == target[0]?"淺復(fù)制":"深復(fù)制"));  
       target[0].setEmail("admin@sina.com");  
       System.out.println("修改目標(biāo)對象的屬性值后源對象users:");  
       for (User user : users){  
           System.out.println(user);  
       }           
    }  
}  
class User{  
    private Integer id;  
    private String username;  
    private String email;  
    //無參構(gòu)造函數(shù)  
    public User() { }  
    //有參的構(gòu)造函數(shù)  
    public User(Integer id, String username, String email) {  
        super();  
        this.id = id;  
        this.username = username;  
        this.email = email;  
    }  
    public Integer getId() {  
        return id;  
    }  
    public void setId(Integer id) {  
        this.id = id;  
    }  
    public String getUsername() {  
        return username;  
    }  
    public void setUsername(String username) {  
        this.username = username;  
    }  
    public String getEmail() {  
        return email;  
    }  
    public void setEmail(String email) {  
        this.email = email;  
    }  
    @Override  
    public String toString() {  
        return "User [id=" + id + ", username=" + username + ", email=" + email  
                + "]";  
    }  
}  

程序運行的結(jié)果:

在這里插入圖片描述

下圖是System.arraycopy()復(fù)制的過程:

在這里插入圖片描述

到此這篇關(guān)于Java中的System.arraycopy()淺復(fù)制方法詳解的文章就介紹到這了,更多相關(guān)System.arraycopy()淺復(fù)制內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java之獲取客戶端真實IP地址的實現(xiàn)

    Java之獲取客戶端真實IP地址的實現(xiàn)

    在開發(fā)工作中,我們常常需要獲取客戶端的IP,本文主要介紹了Jav之獲取客戶端真實IP地址的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2023-12-12
  • Java實現(xiàn)特定范圍的完數(shù)輸出算法示例

    Java實現(xiàn)特定范圍的完數(shù)輸出算法示例

    這篇文章主要介紹了Java實現(xiàn)特定范圍的完數(shù)輸出算法,簡單說明了完數(shù)的概念、計算原理并結(jié)合實例形式分析了java針對給定范圍內(nèi)的完數(shù)輸出操作實現(xiàn)技巧,需要的朋友可以參考下
    2017-12-12
  • 解決Spring boot整合mybatis,xml資源文件放置及路徑配置問題

    解決Spring boot整合mybatis,xml資源文件放置及路徑配置問題

    這篇文章主要介紹了解決Spring boot整合mybatis,xml資源文件放置及路徑配置問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Maven的幾個常用plugin

    Maven的幾個常用plugin

    本文主要介紹了Maven的幾個常用plugin。具有一定的參考價值,下面跟著小編一起來看下吧
    2017-01-01
  • springboot集成activemq的實例代碼

    springboot集成activemq的實例代碼

    本篇文章主要介紹了springboot集成activemq的實例代碼,詳細(xì)的介紹了ActiveMQ和Spring-Boot 集成 ActiveMQ,有興趣的可以了解下。
    2017-05-05
  • Java?Hibernate中一對多和多對多關(guān)系的映射方式

    Java?Hibernate中一對多和多對多關(guān)系的映射方式

    Hibernate是一種Java對象關(guān)系映射框架,支持一對多和多對多關(guān)系的映射。一對多關(guān)系可以使用集合屬性和單向/雙向關(guān)聯(lián)來映射,多對多關(guān)系可以使用集合屬性和中間表來映射。在映射過程中,需要注意級聯(lián)操作、延遲加載、中間表的處理等問題
    2023-04-04
  • Java中BigDecimal的加減乘除、比較大小與使用注意事項

    Java中BigDecimal的加減乘除、比較大小與使用注意事項

    對于不需要任何準(zhǔn)確計算精度的數(shù)字可以直接使用float或double,但是如果需要精確計算的結(jié)果,則必須使用BigDecimal類,而且使用BigDecimal類也可以進行大數(shù)的操作,下面這篇文章給大家介紹了Java中BigDecimal的加減乘除、比較大小與使用注意事項,需要的朋友可以參考下。
    2017-11-11
  • 深入Java Final

    深入Java Final

    本篇文章,小編將為大家介紹Java Final,有需要的朋友可以參考一下
    2013-04-04
  • Springboot實現(xiàn)發(fā)送郵件及注冊激活步驟

    Springboot實現(xiàn)發(fā)送郵件及注冊激活步驟

    為了方便郵件發(fā)送功能的使用,我們用郵件發(fā)送功能實現(xiàn)用戶注冊,實現(xiàn)步驟大概就是進行用戶注冊同時發(fā)送一封激活郵件,郵件里附帶激活鏈接,關(guān)于Springboot發(fā)送郵件注冊激活功能的實現(xiàn)參考下本文吧
    2021-06-06
  • java-jsp springmvc-controller 傳值到頁面的方法

    java-jsp springmvc-controller 傳值到頁面的方法

    下面小編就為大家分享一篇java-jsp springmvc-controller 傳值到頁面的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03

最新評論