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]+"\t");//方便记录,我用了让它一行输出的效果: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+"\t");//张三    李四    王五
        }

    }
}

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

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

2.没想出来

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

时间: 2024-10-04 01:04:18

Java基础-可变参数的相关文章

五分钟学Java:可变参数究竟是怎么一回事?

在逛 programcreek 的时候,我发现了一些专注基础但不容忽视的主题.比如说:Java 的可变参数究竟是怎么一回事?像这类灵魂拷问的主题,非常值得深入地研究一下. 我以前很不重视基础,觉得不就那么回事嘛,会用就行了.就比如说今天这个主题,管它可变不可变呢,不就是个参数嘛,还能有多大学问--抱着这种态度,我一直横行江湖近十载(苦笑).可等到读者找我提一些基础的问题时,我几乎回答不上来,感觉知识是散的,或者是浮于表面的.幸好最近一段时间,我开始幡然醒悟,开始不放过任何一个细节,渐渐地,有点"

[问题记录]Java关于可变参数重载问题

突然发现java的可变参数重载是存在歧义的,只是不知道java内部是怎么处理的,特意做如下实验: 测试代码如下: 1 /** 2 * Created by ieayoio on 16-3-1. 3 */ 4 public class VarTest { 5 6 public static void aaa(int ...a){ 7 System.out.println("可变参数重载"); 8 } 9 10 public static void aaa(int a){ 11 Syste

java之 ------ 可变参数和卫条件

可变参数:适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理. 可变参数必须位于最后一项.当可变参数个数多于一个时,必将有一个不是最后一项,所以只支持有一个可变参数. 可变参数的书写形式如: int add(int x,int ...args){  方法体 } ... 位于变量类型和变量名之间,前后有无空格都可以: 调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数. 条件逻辑判断型的应用(模拟人工推理) /* 有人邀请A,B,C,D,

18、Java中可变参数

从JDK 1.5之后,Java允许定义形参可变的参数 例如: public void test(int a,String ... books){ for(String book:books){ System.out.println(book) } } 调用: test(1,"JAVA疯狂讲义","零基础javascript"); 这里的books就是一个可变参数,可以当做一个数组使用 注意: 1:可变参数必须是最后一个参数 2:一个方法中最多只能定义一个可变参数 和

Java之可变参数

Java中支持可变参数 意思就是:参数的个数可以根据需要写,你可以写1个.2个.3个....他们都被保存到一个参数的数组中. 但是这些参有一些约束:他们必须是同类型的,比如都是String字符串类型. 同时,可变参数的函数中的参数的写法也有约束:比如,可变参数的数组必须写在参数的最后,否则程序不知道你的参数到底有多少个. 例子:输出可变参数中的参数值 public class VariableArgument {    public static void main(String[] args)

c#中和java中可变参数对比

c#中可变参数用关键字params Code public class App { static void Main() { //常规使用方法 Console.WriteLine( Add( new Int32[] { 1, 2, 3, 4, 5 } ) ); //另一种调用方法 Console.WriteLine( Add( 1, 2, 3, 4, 5 ) ); //当然,参数数目是可变的,但其类型是被约束的 Console.WriteLine( Add( 1, 2, 3, 4, 5, 6,

巩固java(六)----java中可变参数方法(非常实用哦)

java提供了可变参数的方法,即方法的参数个数可以不确定,用"..."定义. import java.util.ArrayList; import java.util.List; public class VariableParameter { //求若干个整型数中的最大值 public int getMax(int... items){ //定义可变参数items int max = Integer.MIN_VALUE; //次数为int能表示的最小值,值为-2147483648 f

Java中可变参数

从java5开始出现了可变参数,这是对java方法及数组的拓展! 方法中可以接受的参数不再是固定个数的,而是随着具体需求传递的多少来决定. 定义格式: 返回值类型  方法名(参数类型 ... 形式参数){    } 可变参数的特点: 只能出现在参数列表的最后: ... 位于变量类型和变量名之间,前后有无空格都可以; 调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数. package reviewDemo; import java.util.Arrays

java——慎用可变参数列表

说起可变参数,我们先看下面代码段,对它有个直观的认识,下方的红字明确地解释了可变参数的意思: 1 public class VarargsDemo{ 2 3 static int sum(int... args) { 4 int sum = 0; 5 for(int arg:args) 6 sum += arg; 7 return sum; 8 } 9 public static void main(String args[]) throws FileNotFoundException { 10