zoukankan      html  css  js  c++  java
  • Java基础——可变参数

    大家都知道main方法的参数就是一个数组类型的,那么它其实也是可以改成不定参数类型。我试了试,并调用了一些弹出来的方法。

    public class ClassC2 {
        public static void main(String...args) {
            
            System.out.println(args.getClass()); //Exception in thread "main" class [Ljava.lang.String;
            System.out.println("======分割线1=====");
            
            System.out.println(args.hashCode()); //4126736
            System.out.println("======分割线2=====");
            
            System.out.println(args.toString());
            System.out.println("======分割线3====="); //[Ljava.lang.String;@3ef810
            
            System.out.println(args.length); //0
            System.out.println("======分割线4=====");
            
            args.notify(); //java.lang.IllegalMonitorStateException
        }
    }

    嗯,我把Sting后面的“[ ]”换成了三个点(...),这三个点代表Java中的可变数组参数。可变的参数类型(variable argument type),也称为不定参数类型。英文缩写是varargus。也就是说,这个方法在接收参数的时候,个数是不定的。

    public class ClassC {
        public static void main(String[] args) {
    
            String[] array = { "Java", "PHP", "C#" };//传数组
            test(array);//调用
        }
    
        static void test(String... a) { //利用可变参数的栗子
            System.out.println(a);// 打印:[Ljava.lang.String;@da6bf4
            System.out.println(a.length);//3
    
            for (int i = 0; i < a.length; i++) { // for遍历
                System.out.print(a[i]+"	");//方便记录,我用了让它一行输出的效果:Java    PHP    C#
            }
    
        }
    }
    //不像上面那样调用也可以,下面再演示几种调用方法
    public class ClassC {
        public static void main(String[] args) {
        test();//没有赋值,直接调用
        }
        static void test(String... a) {  //利用可变参数的栗子
            System.out.println(a);// 打印:[Ljava.lang.String;@1e58cb8
            System.out.println(a.length);//0
    
            for(String s:a){  //复习一下增强for
                System.out.println(s);
            }
    
        }
    }
    //不像上面那样调用也可以,下面再演示几种调用方法
    public class ClassC {
        public static void main(String[] args) {
            
            // new一个空数组
            test(new String[0]);
        }
    
        static void test(String... a) { // 利用可变参数的栗子
            System.out.println(a);// 打印:[Ljava.lang.String;@1e58cb8
            System.out.println(a.length);//0
    
            for (String s : a) { // 复习一下增强for
                System.out.println(s);
            }
    
        }
    }
    //不像上面那样调用也可以,下面再演示几种调用方法
    public class ClassC {
        public static void main(String[] args) {
            
            test(new String[]{"张三","李四","王五"});
        }
    
        static void test(String... a) { // 利用可变参数的栗子
            System.out.println(a);// 打印:[Ljava.lang.String;@b9e45a
            System.out.println(a.length);//3
    
            for (String s : a) { // 复习一下增强for
                System.out.print(s+"	");//张三    李四    王五    
            }
    
        }
    }

    由此可见,将参数定义为可变参数,有一下两个有点:

    1.不必担心将来在调用的时候,去迎合之前定义的参数;

    2.没想出来

    (我只想这些,欢迎补充)

  • 相关阅读:
    创建自定义图标和图像
    使用_CRTDBG_LEAK_CHECK_DF检查VC程序的内存泄漏(转)
    Hadoop Netflix数据统计分析2(转)
    系统提供的按钮和图标
    STATIC变量问题
    表格视图,文本视图和Web视图
    Hadoop Netflix数据统计分析1(转)
    获取程序数据路径(转)
    C++中STRING转为INT (转)
    netflix 推荐算法学习1(转)
  • 原文地址:https://www.cnblogs.com/1693977889zz/p/7105599.html
Copyright © 2011-2022 走看看