Home >Java >javaTutorial >Analysis of Variable Parameter Type Examples of Java Methods
The variable parameter type in Java methods is a very important concept and has a very wide range of applications. This article analyzes this in the form of examples. The details are as follows:
Generally speaking, when many Java beginners see the following code, they will ask a question: What are the three little dots in the dealArray method?
public class TestVarArgus { public static void dealArray(int... intArray){ } public static void main(String args[]){ } }
This is the issue this article will discuss: variable parameter types, also known as indefinite parameter types. The English abbreviation is varargus, which means variable argument type. It can be easily seen from its name that when this method receives parameters, the number is variable. Okay, let’s call this method now. Please see the code and output:
public class TestVarArgus { public static void dealArray(int... intArray){ for (int i : intArray) System.out.print(i +" "); System.out.println(); } public static void main(String args[]){ dealArray(); dealArray(1); dealArray(1, 2, 3); } }
Output:
##11 2 3
dealArray(); //dealArray(int[] intArray{}); dealArray(1); //dealArray(int[] intArray{1}); dealArray(1, 2, 3); //dealArray(int[] intArray{1, 2, 3});Having said this, you can verify it to see if this variable parameter is an array class parameter? Look at the code:
public class TestVarArgus { public static void dealArray(int... intArray){ for (int i : intArray) System.out.print(i +" "); System.out.println(); } public static void dealArray(int[] intArray){//会有Duplicate method dealArray(int[]) in type TestVarArgus的错误 for (int i : intArray) System.out.print(i +" "); System.out.println(); } public static void main(String args[]){ dealArray(); dealArray(1); dealArray(1, 2, 3); } }As can be seen from the above code, these two methods conflict and cannot be overloaded. Here, let’s do another interesting experiment: Code 1:
public class TestVarArgus { public static void dealArray(int... intArray){ for (int i : intArray) System.out.print(i +" "); System.out.println(); } public static void main(String args[]){ int[] intArray = {1, 2, 3}; dealArray(intArray); //通过编译,正常运行 } }
public class TestVarArgus { public static void dealArray(int[] intArray){ for (int i : intArray) System.out.print(i +" "); System.out.println(); } public static void main(String args[]){ dealArray(1, 2, 3); //编译错误 } }
public class TestVarArgus { public static void dealArray(int count, int... intArray){ } public static void dealArray(int... intArray, int count){//编译报错,可变参数类型应该作为参数列表的最后一项 } public static void main(String args[]){ } }
public class TestVarArgus { public static void dealArray(int... intArray){ System.out.println("1"); } public static void dealArray(int count, int count2){ System.out.println("2"); } public static void main(String args[]){ dealArray(1, 2); } }