小弟初学JAVA,问题很菜,请见谅.
最近碰到一个问题,比如说我定义了一个int静态变量i,然后我又定义了一个int静态数组变量array,我想当i的值变化的时候把它赋值给array的第一个位置,i的值第二次改变的时候赋值到array的第二个位置,但是问题是array好像只是复制了i的地址,并不是i的值,所以说当i的值改变的时候array前面所有的值都会跟着变,我应该怎么办?谢谢.

解决方案 »

  1.   

    array = new Integer[length];
    array[0] = new Integer(i);
    ....
    每次变化时将i封装成Integer放入array
      

  2.   

    每次i变化的时候new一个Integer,赋值给array
    否则他指向的就是i,
      

  3.   

    谢谢各位.其实我的数值类型是float,我刚才试了一下,array[0] = new float(i);编译的时候会提示我:需要'['和非法的表达式开始两个错误.如果我写array[0] = new Float(i);那倒是可以编译,但是运行后发现数据还是整体变化的,而不是各存各的值.请问我该怎么办?谢谢.
      

  4.   

    看看我这个例子,对比一下和你的有什么不同没有。
    我这个最后输出1.0  2.0  3.0  4.0  5.0  6.0  7.0  8.0  9.0  10.0 public class DIRGBNDSF {
    static float i = 0; static float array[] = new float[10]; public static void main(String[] args) {
    for (int k = 0; k < 10; k++) {
    i += 1;
    array[k] = new Float(i);
    }
    for (int k = 0; k < 10; k++) {
    System.out.print(array[k] + "  ");
    }
    }
    }
      

  5.   

    rosifox(下着鱼的天)和ariesying(Roc)说的就已经是正确的。
    ioriyzsnfdf (ioriyzsnfdf)你自己的代码里一定是某个循环的控制有问题。
    好好检查一下。
      

  6.   

    呵,你对array的声明错了,应该是
    static Float array[] = new Float[10];
    记住,原始类型(像int、float)是传值的,所以你改变了其值就是改变了其实际的值,
    而类对象是引用的(类似于指针),你改变引用值并不改变原本引用所指向的值
      

  7.   

    array[0] = new float(i);
    这句声明错了,应该是static float array[] = new float[length];
    然后再调用循环把i的值赋进array中。
      

  8.   

    非要声明为static吗?不一定吧
      

  9.   

    你用的是Integer对象吧?int不是引用型的
      

  10.   

    原始类型是传值的,而类对象是传引用的,你的问题应该是控制问题,自己检查一下。
    ===============================================================================
    我们用java来解决实际问题。java技术交流,讨论java的技术细节和最新技术。欢迎中高级程序员以及渴望学习java技术的初学者加入讨论。QQ群:3001581
      

  11.   

    public class MyTest {
      static int i;
      static int arr[]=new int[10];
      public static void main(String args[]){
        for (int a = 0; a < 10; a++) {
          i++;
          arr[a]=i;
        }
        for (int a=0;a<10;a++){
          System.out.println(arr[a]);
        }
      }
    }
      

  12.   

    public class Test
    {
    static float i = 1;
    public static void main(String[] args)
    {

    float array[] = {0,0,0,0,0,0,0,0,0,0};

    for (int k = 0; k < 10; k++)
    {
    //改变i值
    i = k;
    //把同一个变量放到数组中
    array[k] = i;
    }
    for (int k = 0; k < 10; k++)
    {
    System.out.print(array[k] + " ");
    }
    }
    }
    看我的代码是不是能帮你?我是按照你的意思写的,但是没有你说的那种情况发生,输出是0.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0
    ========================================================
    QQ群:3001581,也许上面的人可以在线帮你解决好多问题