黑马程序员技术交流社区

标题: 关于数组的相互复制(完成) [打印本页]

作者: 王琪    时间: 2014-2-27 21:15
标题: 关于数组的相互复制(完成)
本帖最后由 王琪 于 2014-2-27 23:30 编辑

  1. import java.util.*;
  2. public class Text {
  3.         static char []s={'1','2','3'};
  4.         static void fun(char [] a){
  5.                 char [] b={'A','B','C'};
  6.                 char [] c={'0','0','0'};
  7.                 a[1]=b[1];
  8.                 a=c;//老师为啥不是000?
  9.         }
  10.         public static void main(String[]args){
  11.                 fun(s);
  12.                 System.out.println(s);
  13.         }
  14. }
复制代码

作者: yekong262    时间: 2014-2-27 21:27
  1. import java.util.*;
  2. public class Text {
  3.         static char []s={'1','2','3'};
  4.         static void fun(char [] a){
  5.                 char [] b={'A','B','C'};
  6.                 char [] c={'0','0','0'};
  7.                 a[1]=b[1];
  8.                 a=c;//老师为啥不是000?你这里是把c这个数组的地址值赋值给a的数组
  9.         }
  10.         public static void main(String[]args){
  11.                 fun(s);
  12.                 System.out.println(s);
  13.         }
  14. }  输出的答案为  1B3
复制代码

作者: 王琪    时间: 2014-2-27 21:32
本帖最后由 王琪 于 2014-2-27 21:35 编辑

嗯 ..我是想通过a=c把c的内容直接f赋值给a的 是不是要用高级for 循环另外定义一个函数啊?
作者: 王琪    时间: 2014-2-27 21:35
yekong262 发表于 2014-2-27 21:27


嗯 ..我是想通过a=c把c的内容直接f赋值给a的
是不是要用高级for 循环另外定义一个函数啊?
作者: yekong262    时间: 2014-2-27 21:45
王琪 发表于 2014-2-27 21:35
嗯 ..我是想通过a=c把c的内容直接f赋值给a的
是不是要用高级for 循环另外定义一个函数啊? ...

如果没记错的话  数组应该是这样赋值的。
定义了一个数组 int[ ] a={1,2,3}
                     表示数组中的每个元素的值 a[0]=1 a[1]=2 a[2]=3
  要更改  得  a[0]=4 a[1]=5 a[2]=6
  这样 数组 int[]a ={4,5,6}


作者: yekong262    时间: 2014-2-27 21:46
王琪 发表于 2014-2-27 21:35
嗯 ..我是想通过a=c把c的内容直接f赋值给a的
是不是要用高级for 循环另外定义一个函数啊? ...

我也是新手 希望我说的 能给你带来帮助。。
作者: 王琪    时间: 2014-2-27 21:48
yekong262 发表于 2014-2-27 21:46
我也是新手 希望我说的 能给你带来帮助。。

没事的 被C语言的指针弄蒙了
谢谢你
作者: 王琪    时间: 2014-2-27 23:29
这个了我查到了
/*
java 数组的操作   System类的arraycopy静态函数用于数组拷贝   数组是不能越界的
对象数组的复制实际上是复制的引用的拷贝  也就是对象的地址  
*/

class Point
{
int x;
int y;
Point(int x,int y)
{
  this.x=x;
  this.y=y;
}
}
class  Test
{
public static void main(String []args)
{
  /*int a[]=new int[]{1,2,3,4,5};
  int b[]=new int[5];
  System.arraycopy(a,0,b,0,a.length);   //5个参数  原数组 起始index  数组2   起始index  拷贝长度  
  for(int n=0;n<b.length;n++)
  {
   System.out.println(b[n]);
  }
  */
  Point a[]=new Point[]{new Point(1,2),new Point(3,4),new Point(3,9)};
  Point b[]=new Point[3];
  System.arraycopy(a,0,b,0,3);  //拷贝的是对象的引用 修改拷贝一样会修改原来数据  
  for(int n=0;n<a.length;n++)
  {
   System.out.println("x="+b[n].x+",y="+b[n].y);
  }
  
  //对拷贝进行修改会修改原来数据
  b[1].x=9;
  b[2].x=5;
  b[0].x=7;
   for(int n=0;n<a.length;n++)
  {
   System.out.println("x="+a[n].x+",y="+a[n].y);
  }
  




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2