A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© endlessjoker 中级黑马   /  2014-3-21 10:23  /  1421 人查看  /  4 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

Object... args 和Object[] args请详细解释一下区别,以及什么时候用Object...好,什么时候用Object[]好

4 个回复

正序浏览
一个是动态参数,一个数数组参数,数组是要占据内存的,当你不想占据太多内存,或者写数组太麻烦,又或者后面没有用到数组,而这里有需要多个相同类型参数时,就可以用动态参数,数组参数就是传一个数组进去,如果之前已经创建了一个数组,这里又正好要用到一列相同类型的数,并且与数组类型相同,那么用数组简单,省的还要写一串数字

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
Object... args是可变参数,一般用于传递时不知道参数的个数,或者参数个数不固定,Object[] args是数组,需要实现定义好一个数组,然把数据放入到数组中,再将数组传递到方法中。
  1. public class Test {

  2.         public static void main(String[] args) {
  3.                 method1("a","b","c");
  4.                 method1("a","b","c","d");
  5.                
  6.                 Object[] obj = new Object[]{"x","y","z"};
  7.                 method2(obj);
  8.         }
  9.         
  10.         public static void method1(Object...obj){
  11.                 System.out.println(Arrays.toString(obj));
  12.         }
  13.         
  14.         public static void method2(Object[] obj){
  15.                 for(int i=0;i<obj.length;i++){
  16.                         System.out.print(obj[i]+" ");
  17.                 }
  18.         }
  19. }
复制代码
运行结果为:[a, b, c]
[a, b, c, d]
x y z

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
看下面程序估计你就明白了
  1. class Demo{
  2.         public static void main(String[] args){
  3.                 String s1 = "a";
  4.                 String s2 = "b";
  5.                 String s3 = "c";
  6.                 Object[] obj = {s1, s2, s3};//将s1,s2,s3装入数组
  7.                
  8.                 //f()方法可以这样调用,随你传入多少个参数
  9.                 f(s1, s2, s3);
  10.                 f(s1, s2);
  11.                 f(s1);

  12.                 h(obj); //而h()方法调用只能传入一个数组类型参数

  13.         }

  14.         public static void f(Object...args){//这个方法里面可以传指定个数Object对象然后返回一个Object数组args
  15.                
  16.                 System.out.println(Arrays.toString(args));//打印args数组
  17.         }

  18.         public static void h(Object[] args){ //这里面只能传Object数组类型对象

  19.                 System.out.println(Arrays.toString(args));//打印args数组
  20.         }
  21. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
前者就是里面是动态参数,比如说参数的个数不限;例子public class Test {  public static void f(Integer... args) {     for(Integer i : args) {        System.out.println(i + " ");       }     System.out.println();  }  public static void main(String[] args) {     f(1,2,3);     f(4,5,6,7,8);  }}就
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马