1. 程式人生 > >java關於陣列之間的相互賦值

java關於陣列之間的相互賦值

Java裡面,可以用複製語句”A=B”給基本型別的資料傳遞值,但是如果A,B是兩個同類型的陣列,複製就相當於將一個數組變數的引用傳遞給另一個數組;如果一個數組發生改變,那麼引用同一陣列的變數也要發生改變.
以下是歸納的JAVA中複製陣列的方法:
1.使用FOR迴圈,將陣列的每個元素複製或者複製指定元素,不過效率差一點
2.使用clone方法,得到陣列的值,而不是引用,不能複製指定元素,靈活性差一點
3.使用System.arraycopy(src, srcPos, dest, destPos, length)方法,推薦使用
舉例:
1.使用FOR迴圈
int[] src={1,3,5,6,7,8};
int[] dest = new int[6];
for(int i=0;i<6;i++) dest[i] = src[i];

2.使用clone
int[] src={1,3,5,6,7,8};
int[] dest;
dest=(int[]) src.clone();//使用clone建立
副本,注意clone要使用強制轉換
3.使用System.arraycopy
int[] src={1,3,5,6,7,8};
int[] dest = new int[6];
System.arraycopy(src, 0, dest, 0, 6);
——————————————————————-
System提供了一個靜態方法arraycopy(),我們可以使用它來實現陣列之間的複製.
其函式原型是:
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)

src:源陣列; srcPos:源陣列要複製的起始位置;
dest:目的陣列; destPos:目的陣列放置的起始位置;
length:複製的長度.

注意:src and dest都必須是同類型或者可以進行轉換型別的陣列.
有趣的是這個函式可以實現自己到自己複製,
比如:int[] fun ={0,1,2,3,4,5,6};
System.arraycopy(fun,0,fun,3,3);

則結果為:{0,1,2,0,1,2,6};

轉載自 http://blog.csdn.net/sinat_29384657/article/details/51768779

相關推薦

Java陣列的批量

/*用到了Arrays.fill(arr,100);方法*/ import java.lang.reflect.Array; import java.util.Arrays; public class Main { public static void main(String[] args

* Java 兩個 Java bean 之間

/**  * bean 之間的賦值  *   * @author gao  *  */ public class BeanToBean {/*** 兩個bean之間相互傳值* * @param from* @param to* @return*/public static

java關於陣列之間相互

在Java裡面,可以用複製語句”A=B”給基本型別的資料傳遞值,但是如果A,B是兩個同類型的陣列,複製就相當於將一個數組變數的引用傳遞給另一個數組;如果一個數組發生改變,那麼引用同一陣列的變數也要發生改變. 以下是歸納的JAVA中複製陣列的方法: 1.使用FOR迴圈,將陣

C++中陣列與MATLAB mxArray相互

完成功能下:C++中產生一個256X256大小的陣列A;現在要在這個陣列顯示為一個灰度影象,然後把該數組裡面的每一個值乘2後返回給原陣列:C++程式如下: #include "stdafx.h" #include <windows.h> #include <

java-一維陣列的隨機

第一個程式: import java.util.Random; public class ddd {  /**   * @param args   */  public static void main(String[] args) {   Random rand = ne

Java宣告一個10個元素的整數陣列,隨機,列印輸出,排序後,列印輸出

import java.util.Random; public class Arr11{      public static void main(String[] args){        int[] aa =new int [10];        Rand

java中變量的理解

char 顯示 值類型 輸出結果 運算 都是 數字 理解 double 1.當賦值的值超出聲明變量的範圍時候,會報錯! byte a =200 //會報錯,因超出範圍。 byte a =(byte)200;//進行一個強制轉換,就不會報錯,不過會超出範圍,超出部分會從頭開始

Jsp獲取Java的重定向(String)

min 404頁 htm pat 代碼 clas mage 獲取 text Jsp獲取Java的重定向賦值(String) Java代碼片段: //傳遞String request.setAttribute("msg", msg); //重定向 request.getRe

Java中字串直接和new一個物件,得到的地址是什麼樣子的

  public class StringDemo2 { public static void main(String[] args) { String s1 = "hello"; String s2 = new String("hello"); String s3 = "hello"

Verilog中儲存器——暫存器陣列定義和

[轉載]http://blog.sina.com.cn/s/blog_9424755f0101rhrh.html 儲存器是一個暫存器陣列。儲存器使用如下方式說明: reg [ msb: 1sb] memory1 [ upper1: lower1], memory2 [upper2: lowe

JAVA之String直接和使用new的區別

String str1 = "ABC"; String str2 = new String("ABC"); String str1 = “ABC”;可能建立一個或者不建立物件。如果”ABC”這個字串在java String池裡不存在,會在java String池裡建立一個建立一個String物件

ES6中的陣列解構

解構賦值: 解構賦值語法是一個Javascript表示式,這使得可以將資料從陣列或物件提取到不同的變數中(這段話是mdn中關於解構賦值的定義,注意這裡的定義,可以看出解構主要用在陣列和物件上)。 說白了就是解析等號兩邊的結構,然後把右邊的對應賦值給左邊。如果解構不成功,變數的值就等於

陣列傳參

public class ArrayParameter {     int i = 0;     String [] names = new String[5];//名字陣列     public void a

C語言字串和字串陣列的輸入

**1、字串指標一定要開闢空間後在做輸入** char * str;   str=(char*)malloc(100*sizeof(char));   scanf("%s",&str); **2、字串陣列要做初始化的開闢空間後再來儲存字串**   cha

Java 反射給物件

java反射無所不能,辣麼,怎麼通過反射設定一個屬性的值呢? 主程式: /** * @author tengqingya * @create 2017-03-05 15:54 */ public class TestReflectSet { private S

【ES6】陣列解構

1. 陣列的解構賦值 基本用法 ES6 允許按照一定模式,從陣列和物件中提取值,對變數進行賦值,這被稱為解構(Destructuring)。 // ES5 let a = 1; let b = 2; let c = 3; // ES6 let [a, b, c] = [1, 2,

JAVA中String直接與new出來的物件的區別

舉個例子,比如 String  she = "fdasfdg" 與 String she = new String("fdasfdg"); 他們到底有什麼區別?   String  she = "f

建立資料共享介面——簡化框架之間相互

很多框架存在父子關係,操作起來十分麻煩,很多同學經常出現這樣悲催的程式碼: 1 window.parent.document.getElementById("main")2 .contentWindow.document.getElementById('input').va

destructuring-array,陣列解構

BUG未知... function destructuringArray(target, arr, exp) { try { exp = exp.replace(/((\.{3})?\w+)/g, ($0, $1) =

兩個結構體變數的相互

兩個結構體變數中包含的型別相同 func DeepFields(ifaceType reflect.Type) []reflect.StructField { var fields []reflect.StructField for i := 0; i