接受对象类型的参数比如把int转换成Integer

解决方案 »

  1.   

    希望函数能够修改我输入的参数。这个是可以实现的....java可以改变对象参数的属性值
      

  2.   

    1.把参数放到数组中传递
    2.把参数封装为class的属性,再传递class作为参数
    对第一种方式的示例如下:
    public static void main(String[] args) {
        int[] a = {5};
        int[] b = {3};
        System.out.println("a = " + a[0] + "\t b = " + b[0]);
        exchange(a, b);
        System.out.println("a = " + a[0] + "\t b = " + b[0]);
    }public static void exchange(int[] a, int[] b) {
        int temp = a[0];
        a[0] = b[0];
        b[0] = temp;
    }
      

  3.   

    可以在method中用到条件
    eg
     int classjava()
    { int temp=0
     if(xx)
     temp=x;
    eles if(yy)
    temp=y;
    return temp;
    }
      

  4.   

    现在又产声一个疑问。
    我有两个函数,如下:
      void test1(int[] data) {
        data[0] = 3;
        data[1] = 2;
        data[2] = 1;
      }
    这个可行,没有问题。
    但是:
      void test1(int[] data) {
        data = new int [] {1,2,3);
      }
    就不能通过,是为什么?
      

  5.   

    数组既是对象你的test1方法改变了对象里的属性值  这是可以的第二个test1方法 改变了对象本身的值(对象地址)  这样是不可以的...
      

  6.   

    data = new int[] {1,2,3};
      

  7.   

    Java的参数传递就两种:值传递,引用传递
      

  8.   

    ft,怎么拷漏了,data = new int[] {1,2,3};改变了引用不可以.
      

  9.   

    有一个很有意思的现象。
    上面的这些现象都可以有一个结论,我们不能时用一个函数内部的局部变量来初始化一个全局变量。因为局部变量所占用的内存在退出函数后会被回收。这样函数中的初始化就没有意义。如果只是通过修改属性那是可行的。
    但是有另一个现象。我把一个二维数组做参数……,函数如下:void main(){
      int [][] a = new int [3][];
      fun(a);
    }void fun(int [][] a){
      int[] b = {1,2,3};
      a[0] = b;
      a[1] = b;
      a[2] = b;
    }这样就能用局部变量“部分”的初始化这个二维数组。
    我就有点搞不清楚这个拷贝是怎么回事?
      

  10.   

    你这段代码在C++中当然没有问题,因为使用的都是几个基本的数据类型,你在fun函数中用几个指针或是返回一个局部指针看看能不能行。对于基本的数据类型,没有涉及到内存地址的操作,仅仅是一个值的传递,当然不会有错了,你把上面这段代码改成Java的代码,也是没有问题的。
    但是如果是对象的话,那么你这段代码十之八九是要出错的,因为对象会有内存地址的操作,也会有内存地址的回收。所以上面那段话是没有错的。另外java中的clone()有点象C++中的拷贝构造函数。拷贝构造是因为对象中有指针的存在,如果在实例化的时候,简单的用一个=来操作,那么所有的对象将会共用这个指针的内存,而有时候我们必须使各个对象有自己的内存块,不共用。这个时候拷贝构造函数就起作用了,它会使每个对象都各自有各自的内存块,不互相共用。