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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 从前有个人 中级黑马   /  2013-12-2 14:53  /  1135 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 从前有个人 于 2013-12-2 15:03 编辑

class Temptest {
        public static void main(String[] args){
                int[] arr = new int[]{1,2,3};
                show1(1,2,3);
                show2(arr);
        }
        static void show1(int x, int... args){
                for(int i = 0; i <args.length; i++)
                        System.out.print(args);
                System.out.println("");
        }
        static void show2(int arr[]){
                for(int i = 0; i <arr.length; i++ )
                        System.out.print(arr);
        }
}
运行结果如下:
23
123


为什么show1方法会少一个1呢?

评分

参与人数 1技术分 +1 黑马币 +6 收起 理由
枫儿 + 1 + 6 神马都是浮云

查看全部评分

3 个回复

倒序浏览
谁能告诉我怎么删帖子呢……
回复 使用道具 举报
楼主传入参数,show1(1,2,3);时,int...args 相当于一个int类型的数组(int[] args),这时数组里面的元素是2,3.又因为,方法里面,没有用到int x,所以x=1没有输出。
static void show1(int x, int... args){
                for(int i = 0; i <args.length; i++)
                System.out.print(args);
                System.out.println("");
        }
回复 使用道具 举报
可变参数进行循环,只循环可变的,不可变的不用循环代码修改如下:
  1. class Temptest {
  2.         public static void main(String[] args){
  3.                 int[] arr = new int[]{1,2,3};
  4.                 show1(1,2,3);
  5.                 show2(arr);
  6.         }
  7.         static void show1(int x, int... args){
  8.                 System.out.print(x);//这就是丢失的1
  9.                 for(int i = 0; i <args.length; i++)
  10.                         System.out.print(args[i]);//数组的0角标是2,1角标是3
  11.                        
  12.                 System.out.println("");
  13.         }
  14.         static void show2(int arr[]){
  15.                 for(int i = 0; i <arr.length; i++ )
  16.                         System.out.print(arr[i]);
  17.         }

  18. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马