public class TestArrayCopy
{
public static void main(String[] args)
{
String[] s = {"Microsoft","IBM","Sun","Oracle","Apple"} ;
String[] sBak = new String[5] ;
System.arraycopy(s,0,sBak,0,s.length) ;
sBak[0]="Yahoo" ;
for(int i=0 ;i<s.length ;i++)
{
System.out.print(s[i]+" ") ;
} System.out.println() ; int[][] intArray = {{1,2},{1,2,3},{3,4}} ;
int[][] intArrayBak = new int[3][] ;
System.arraycopy(intArray,0,intArrayBak,0,intArray.length) ;
intArrayBak[2][1] = 100 ;
for(int i=0 ;i<intArray.length ;i++)
{
for(int j=0 ;j<intArray[i].length ;j++)
{
System.out.print(intArray[i][j]+" ") ;
}
System.out.println() ;
}
}
}
如题!!麻烦说的通俗易懂点,谢谢 !1
{
public static void main(String[] args)
{
String[] s = {"Microsoft","IBM","Sun","Oracle","Apple"} ;
String[] sBak = new String[5] ;
System.arraycopy(s,0,sBak,0,s.length) ;
sBak[0]="Yahoo" ;
for(int i=0 ;i<s.length ;i++)
{
System.out.print(s[i]+" ") ;
} System.out.println() ; int[][] intArray = {{1,2},{1,2,3},{3,4}} ;
int[][] intArrayBak = new int[3][] ;
System.arraycopy(intArray,0,intArrayBak,0,intArray.length) ;
intArrayBak[2][1] = 100 ;
for(int i=0 ;i<intArray.length ;i++)
{
for(int j=0 ;j<intArray[i].length ;j++)
{
System.out.print(intArray[i][j]+" ") ;
}
System.out.println() ;
}
}
}
如题!!麻烦说的通俗易懂点,谢谢 !1
1 2
1 2 3
3 100
现在结果是这样的,就是第一个copy的数组没改变原来的数组,
而第二个copy的数组改变了原来的数组
public class TestArrayCopy
{
public static void main(String[] args)
{
String[] s = {"Microsoft","IBM","Sun","Oracle","Apple"} ;
String[] sBak = new String[5] ;
System.arraycopy(s,0,sBak,0,s.length) ;
sBak[0]="Yahoo" ;
for(int i=0 ;i <s.length ;i++)
{
System.out.print(s[i]+" ") ;
}
System.out.println() ;
int[][] intArray = {{1,2},{1,2,3},{3,4}} ;
int[][] intArrayBak = new int[3][] ;
System.arraycopy(intArray,0,intArrayBak,0,intArray.length) ;
intArrayBak[2][1] = 100 ;
for(int i=0 ;i <intArray.length ;i++)
{
for(int j=0 ;j <intArray[i].length ;j++)
{
System.out.print(intArray[i][j]+" ") ;
}
System.out.println() ;
}
}
}
所以,你在进行二维数组拷贝的时候,要注意,拷贝的都是引用的地址
当intArrayBak[2][1] = 100 的时候
由于引用地址指向发生了变化,所以牵连着原数组的值也发生了变化