void main(String[] args)
{
byte[] a=null;
  refVar(a);
}
void refVar(byte[] a)
{
   a = new byte[3];
   a[1] = 2;
a[2] = 2;
a[0] = 2;
}
不行出来我一看a还是null 
关键是我在函数外不知道,数组的具体大小。

解决方案 »

  1.   

    java不会传对象过去,只会传指针。
    在refVar中a 指向了一个新的数组对象,所以外面的a仍然是null
      

  2.   

    试试看用byte[]方法返回一个byte数组
      

  3.   

    在外面不知道数组的具体大小那么在refVar里面就可以知道吗?
    主要是不知道你的用意。在这种情况下只能说换成List来实现吧。
      

  4.   

    那你可以用 ArrayList ,Vector 等等各种容器都可以..
    这些就是为了来代替数组的...
      

  5.   

    void refVar(byte[] a)
    {
       a = new byte[3];  //这里改变了函数内a的引用,但函数外a的引用没有被改变
       a[1] = 2;
    a[2] = 2;
    a[0] = 2;
    }换另一种思路吧
    void main(String[] args)
    {
    byte[] a=null;
      a = refVar();
    }
    byte[] refVar()
    {
       a = new byte[3];
       a[1] = 2;
    a[2] = 2;
    a[0] = 2;
      return a;
    }
      

  6.   

    真的以参数的形式传不出来吗?靠,C++可以java不行,郁闷。
      

  7.   

    public Test(){
    int m[] = new int[3];
    m[0] = 0;
    m[1] = 1;
    m[2] = 2;
    change(m);
    System.out.println("m[0]=" + m[0]);
    System.out.println("m[1]=" + m[1]);
    System.out.println("m[2]=" + m[2]);
    }

    public void change(int n[]){
    n[0] = 3;
    n[1] = 4;
    n[2] = 5;
    }是你们用错了!