java 怎样传递数组对象

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 怎样传递数组对象相关的知识,希望对你有一定的参考价值。

假设说 我要创建一些数组对象 但是暂时不知道多少个
需要通过一个method确定数组的大小并创建数组对象
这些数组对象以后还会被应用在其他method中

请问在这种情况下 应该怎么把对象传递到method中呢?

public static void main (String args[])
Object[] object;
updateDatabase(object);
public static void updateDatabase(Object object[])
Object[] object = new Object[x]; - 假设在这里知道x是多少



为什么老是显示:已在 updateDatabase(Object[]) 中定义 object

有什么更好的方法么?

public static void main (String args[])
Object[] object= updateDatabase();

public static Object[] updateDatabase()
return new Object[x]; - 假设在这里知道x是多少

这样就行了。按你的要求不应爱去传入一个数组,
而应该是要指定的方法为你创建一个特定长度的
数组返回给你使用
参考技术A ......
你的方法参数列表里已经定义object对象数组了 你还在下面定义干哈?
一般情况下 我们是不返回数组的 尽量用集合 接受参数倒是可以用数组(比如就像你所写 想要批量更新语句的效果来看)

你是想获得一个数组并且获得他里面的元素个数么? 可以直接用length属性获得 明白? 任何一个数组的长度都不是在没有任何根据下创建的
参考技术B 换jdk1.5 以上的
有这样的 用法
public static void updateDatabase(Object... object)


调用
main(...)
Object o1= new Object();
Object o2= new Object();
Object o3= new Object();
Object o4= new Object();
Object o5= new Object();
updateDatabase(o1,o2,o3,o4,o5);

这样的 方式 看看是不是 你需要的
参考技术C 首先你的代码写错了:

public static void main (String args[])
Object[] object;
updateDatabase(object);
public static void updateDatabase(Object object[])
object = new Object[x];



看看这样行不行?

java 值传递 数组传递

在java中,不允许程序员选择值传递还是地址传递各个参数,基本类型总是按值传递。对于对象来说,是将对象的引用也就是副本传递给了方法,在方法中只有对对象进行修改才能影响该对象的值,操作对象的引用时是无法影响对象。

现在说说数组:如果将单个基本类型数组的元素传递给方法,并在方法中对 其进行修改,则在被调用方法结束执行时,该元素中存储的并不是修改后的值,因为这种元素是按值传递,如果传递的是数组的引用,则对数组元素的后续修改可以 在原始数组中反映出来(因为数组本身就是个对象,int[] a = new int[2];,这里面的int是数组元素的类型,而数组元素的修改是操作对象)。

public class Test{
    
    String str = new String("good");
    char[] ch = {‘a‘,‘b‘,‘c‘};
    int i = 10;
    public void change(String str,char[] ch,int i){
    
        str = "test ok";
        ch[0] = ‘g‘;
        i++;    
    }
    
    public static void main(String[] args){
    
        Test tt = new Test();
        tt.change(tt.str,tt.ch,tt.i);
        System.out.println(tt.i);
        System.out.print(tt.str+" and ");
        System.out.println(tt.ch);     
    }

 

 tr是String类型的引用,i是基本类型变量,ch是数组名,也是数组对象的引用

在chang()方法里,str="test ok",是一个新的对象把首地址放在引用变量str上;

而ch[0]=‘g‘;因为传的是数组的引用,而此时ch[0]=‘g‘;是对数组元素的操作,能修改源数组的内容;

i是整型值,只是把值copy了一份给方法,在方法的变化是不改变的源i的。

所以结果是:

10

good and gbc

    public class Test{
        
        String str = new String("good");
        char[] ch = {‘a‘,‘b‘,‘c‘};
        int i = 10;
        public void change(String str,char ch,int i){
        
            str = "test ok";
            ch = ‘g‘;
            this.i = i+1;    
        }
        
        public static void main(String[] args){
        
            Test tt = new Test();
            tt.change(tt.str,tt.ch[0],tt.i);
            System.out.println(tt.i);
            System.out.print(tt.str+" and ");
            System.out.println(tt.ch);     
        }
    }

 

仔细观察下实参以及入参有何变化?

change()方法里的入参char[] ch变成--------------char ch;

这次传递的是个char值的单个数组元素,按照上面的解析,此时ch=‘9‘;是不影响源数组元素的。

this.i = i+1;这里面等号左边的i是属性i,等号右边的i是局部变量(入参里的i);

此时i+1后赋值给属性的i,自然会改变属性i的值,同时17行,tt.i又是调用属性的i,这次的结果是:

 

11

good and abc

http://blog.csdn.net/niuniu20008/article/details/2953785

 

以上是关于java 怎样传递数组对象的主要内容,如果未能解决你的问题,请参考以下文章

postman如何传递对象数组

如何在调用WebService方法时,传递对象数组参数

java 值传递 数组传递

Java怎样用数组创建对象,并对对象里的属性排序?

Java方法中传递数组与改变数组值的问题

Java方法中传递数组与改变数组值的问题