doSth(byte)应该是doSth(a)吧;不会不起作用的。如果在doSth函数里有类似于param[i]=1;的语句,值会变的。其实Java虽然没有指针的概念,但你用用指针来想好理解一些。Java传值时会把指针的副本传递。如果有param=new byte[10];的语句,对外部的a是没影响的。param[i]是指针的指针,即a[i]的内容会被改变。

解决方案 »

  1.   

    把数组换成Vector v.
    调用的时候用
    dSth(v.clone());
      

  2.   

    呵呵,我看错了。
    上面的朋友说得对。
    public class Test {
     private int i;
     public static void main(String[] argv)
     {
     Test t=new Test();
     byte a[]=new byte[64];
     for (int i=0;i<a.length;i++)
      a[i]=(byte)2;
     t.dosth(a);
     for (int i=0;i<a.length;i++)
       System.out.println("a["+i+"]="+a[i]);
     }
     public void dosth(byte a[])
     { for (int i=0;i<a.length;i++)
      a[i]=(byte)i;
     }
    }
      

  3.   

    运行结果:
    a[0]=0
    a[1]=1
    a[2]=2
    a[3]=3
    a[4]=4
    a[5]=5
    a[6]=6
    a[7]=7
    a[8]=8
    a[9]=9
    a[10]=10
    a[11]=11
    a[12]=12
    a[13]=13
    a[14]=14
    a[15]=15
    a[16]=16
    a[17]=17
    a[18]=18
    a[19]=19
    a[20]=20
    a[21]=21
    a[22]=22
    a[23]=23
    a[24]=24
    a[25]=25
    a[26]=26
    a[27]=27
    a[28]=28
    a[29]=29
    a[30]=30
    a[31]=31
    a[32]=32
    a[33]=33
    a[34]=34
    a[35]=35
    a[36]=36
    a[37]=37
    a[38]=38
    a[39]=39
    a[40]=40
    a[41]=41
    a[42]=42
    a[43]=43
    a[44]=44
    a[45]=45
    a[46]=46
    a[47]=47
    a[48]=48
    a[49]=49
    a[50]=50
    a[51]=51
    a[52]=52
    a[53]=53
    a[54]=54
    a[55]=55
    a[56]=56
    a[57]=57
    a[58]=58
    a[59]=59
    a[60]=60
    a[61]=61
    a[62]=62
    a[63]=63