日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

arraycopy方法的作用_System. arraycopy()入门指南

發布時間:2024/9/15 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 arraycopy方法的作用_System. arraycopy()入门指南 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

System. arraycopy()源碼

從它的修飾符native來看,這個方法的源碼是不能透漏給開發者來看的,因為native修改的方法,是由其它語言來實現的,一般是(C或C++),所以這沒有辦法看到源碼了。

其實我們對于這個方法也不需要了解太多,只要知道它的基本使用就可以了,也就是知道arraycopy()方法里面的幾個參數都是什么作用就好了

  • src參數:源數組
  • srcPos參數:從src數組的第幾個元素開始賦值
  • dest參數:目標數組
  • destPos參數:指定從dest數組的第幾個元素開始。
  • length參數:指定從src數組拿幾個元素來賦值到dest數組

System. arraycopy()復制基本數據類型

這里以int為標準,代碼如下所示

此時結果如下所示,可以看到上面的代碼把src_arr數組從索引1開始把2個長度的22,33這兩個元素給放到dest_arr數組里面的從索引2開始的索引2和索引3這兩個位置上面

System. arraycopy()復制引用數據類型

代碼如下所示

然后此時運行結果如下所示,這里結果就不多講了,也是復制成功的

System. arraycopy()復制引用數據類型的淺拷貝問題

當使用System. arraycopy()進行復制的時候,拷貝數組里面的引用對象的時候,是淺拷貝,而不是深拷貝,證明如下

結果如下所示,此時可以看到dest_arr數組里面的person對象的company變量和src_arr數組里面的person對象的company變量是指向同一個地址的,說明在復制的時候,沒有把src_arr數組里面的person對象的company變量在重新生成一個對象,所以此時是淺拷貝

既然是淺拷貝了,那么就會有一定的缺點,就是如果此時我修改src_arr數組里面的person對象的company變量里面的address變量地址,那么dest_arr數組里面的person對象的company變量的address變量地址也會修改了

比如下面的代碼

此時可以看到兩次的獲取dest_arr數組里面的person對象的company變量的address的值不同了

System. arraycopy()復制引用數據類型變成深拷貝

目前發現System. arraycopy()復制引用數據類型無法實現深入拷貝,所以目前實現數組的深拷貝的代碼如下所示

結果如下所示,此時可以看到,dest_arr數組里面的person對象的company變量和src_arr數組里面的person對象的company變量是不指向同一個地址的,所以此時對數組里面的引用數據類型是深入拷貝

總結

以上是生活随笔為你收集整理的arraycopy方法的作用_System. arraycopy()入门指南的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。