下面的程序,我想在构造函数里将数组初始化,然后在main函数里用一个实例传递一个数组变量,最后打印出处理后的值。
但结果和我想的不一样,它不是打印出1-52,而打印出的是52个0
通过数组不是可以传递地址吗?c#里面都有一个ref用于传地址,大家给我指点一下,谢谢哦~class poker
{
poker(int[] str)
{
str=new int[52];
for(int i=0;i<52;i++)
str[i]=i+1;
}

public static void main(String[] args)
{
int[] str1=new int[52];
poker ob=new poker(str1);
for(int i=0;i<52;i++)
System.out.println(str1[i]);
}
}

解决方案 »

  1.   

    java本根就没有地址的概念,和C++、C#不一样
    poker里的str只是对数组的引用,str=new int[52];这句使str重新饮用了其他的数组,和main里的str1已经没有关系了。所以poker里边的代码对str1根本就没有影响。
      

  2.   

    class Poker
    {
    Poker(int[] str)
    {
    //str=new int[52];
    for(int i=0;i<52;i++)
    str[i]=i+1;
    }

    public static void main(String[] args)
    {
    int[] str=new int[52];
    Poker ob=new Poker(str);
    for(int i=0;i<52;i++)
    System.out.println(str[i]);
    }
    }改成 这样吧
      

  3.   

    susan930(潜水员) 该的很好class Poker
    {
    Poker(int[] str)
    {
    str=new int[52];             (1)
    for(int i=0;i<52;i++)
    str[i]=i+1;
    }public static void main(String[] args)
    {
    int[] str=new int[52];
    Poker ob=new Poker(str);
    for(int i=0;i<52;i++)
    System.out.println(str[i]);  (2)
    }
    }
    (1)处是对新建数组的处理
    (2)处输出的main中定义的数组(int数组初始化默认值为0)