这是java可变参数的写法,下面详细说明:
Java1.5增加了新特性:可变参数:适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理。注意:可变参数必须位于最后一项。当可变参数个数多余一个时,必将有一个不是最后一项,所以只支持有一个可变参数。因为参数个数不定,所以当其后边还有相同类型参数时,java无法区分传入的参数属于前一个可变参数还是后边的参数,所以只能让可变参数位于最后一项。
可变参数的特点:
(1)只能出现在参数列表的最后;
(2)位于变量类型和变量名之间,前后有无空格都可以;
(3)调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中一数组的形式访问可变参数。
代码:
public static int add(int x,int ...args){
int sum=x;
for(int i=0;i<args.length;i++)
sum+=args[i];
return sum;
}
调用方法:
public static void main(String[] args) {
System.out.println(add(2,3));
System.out.println(add(2,3,5));
System.out.println(add(2,3,5,7));
}
结果:
D:\Java\jdk1.8.0_281\bin\java.exe "-javaagent:E:\tools\JetBrains\IntelliJ IDEA 2020.1\lib\idea_rt.jar=55718:E:\tools\JetBrains\IntelliJ IDEA 2020.1\bin" -Dfile.encoding=UTF-8 -classpath D:\Java\jdk1.8.0_281\jre\lib\charsets.jar;D:\Java\jdk1.8.0_281\jre\lib\deploy.jar;D:\Java\jdk1.8.0_281\jre\lib\ext\access-bridge-64.jar;D:\Java\jdk1.8.0_281\jre\lib\ext\cldrdata.jar;D:\Java\jdk1.8.0_281\jre\lib\ext\dnsns.jar;D:\Java\jdk1.8.0_281\jre\lib\ext\jaccess.jar;D:\Java\jdk1.8.0_281\jre\lib\ext\jfxrt.jar;D:\Java\jdk1.8.0_281\jre\lib\ext\localedata.jar;D:\Java\jdk1.8.0_281\jre\lib\ext\nashorn.jar;D:\Java\jdk1.8.0_281\jre\lib\ext\sunec.jar;D:\Java\jdk1.8.0_281\jre\lib\ext\sunjce_provider.jar;D:\Java\jdk1.8.0_281\jre\lib\ext\sunmscapi.jar;D:\Java\jdk1.8.0_281\jre\lib\ext\sunpkcs11.jar;D:\Java\jdk1.8.0_281\jre\lib\ext\zipfs.jar;D:\Java\jdk1.8.0_281\jre\lib\javaws.jar;D:\Java\jdk1.8.0_281\jre\lib\jce.jar;D:\Java\jdk1.8.0_281\jre\lib\jfr.jar;D:\Java\jdk1.8.0_281\jre\lib\jfxswt.jar;D:\Java\jdk1.8.0_281\jre\lib\jsse.jar;D:\Java\jdk1.8.0_281\jre\lib\management-agent.jar;D:\Java\jdk1.8.0_281\jre\lib\plugin.jar;D:\Java\jdk1.8.0_281\jre\lib\resources.jar;D:\Java\jdk1.8.0_281\jre\lib\rt.jar;D:\JAVACEODE\store\target\test-classes;D:\JAVACEODE\store\target\classes;E:\java\Repository\org\springframework\boot\spring-boot-starter-web\2.7.2\spring-boot-starter-web-2.7.2.jar;E:\java\Repository\org\springframework\boot\spring-boot-starter\2.7.2\spring-boot-starter-2.7.2.jar;E:\java\Repository\org\springframework\boot\spring-boot\2.7.2\spring-boot-2.7.2.jar;E:\java\Repository\org\springframework\boot\spring-boot-autoconfigure\2.7.2\spring-boot-autoconfigure-2.7.2.jar;E:\java\Repository\org\springframework\boot\spring-boot-starter-logging\2.7.2\spring-boot-starter-logging-2.7.2.jar;E:\java\Repository\ch\qos\logback\logback-classic\1.2.11\logback-classic-1.2.11.jar;E:\java\Repository\ch\qos\logback\logback-core\1.2.11\logback-core-1.2.11.jar;E:\java\Repository\org\apache\logging\log4j\log4j-to-slf4j\2.17.2\log4j-to-slf4j-2.17.2.jar;E:\java\Repository\org\apache\logging\log4j\log4j-api\2.17.2\log4j-api-2.17.2.jar;E:\java\Repository\org\slf4j\jul-to-slf4j\1.7.36\jul-to-slf4j-1.7.36.jar;E:\java\Repository\jakarta\annotation\jakarta.annotation-api\1.3.5\jakarta.annotation-api-1.3.5.jar;E:\java\Repository\org\yaml\snakeyaml\1.30\snakeyaml-1.30.jar;E:\java\Repository\org\springframework\boot\spring-boot-starter-json\2.7.2\spring-boot-starter-json-2.7.2.jar;E:\java\Repository\com\fasterxml\jackson\core\jackson-databind\2.13.3\jackson-databind-2.13.3.jar;E:\java\Repository\com\fasterxml\jackson\core\jackson-annotations\2.13.3\jackson-annotations-2.13.3.jar;E:\java\Repository\com\fasterxml\jackson\core\jackson-core\2.13.3\jackson-core-2.13.3.jar;E:\java\Repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.13.3\jackson-datatype-jdk8-2.13.3.jar;E:\java\Repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.13.3\jackson-datatype-jsr310-2.13.3.jar;E:\java\Repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.13.3\jackson-module-parameter-names-2.13.3.jar;E:\java\Repository\org\springframework\boot\spring-boot-starter-tomcat\2.7.2\spring-boot-starter-tomcat-2.7.2.jar;E:\java\Repository\org\apache\tomcat\embed\tomcat-embed-core\9.0.65\tomcat-embed-core-9.0.65.jar;E:\java\Repository\org\apache\tomcat\embed\tomcat-embed-el\9.0.65\tomcat-embed-el-9.0.65.jar;E:\java\Repository\org\apache\tomcat\embed\tomcat-embed-websocket\9.0.65\tomcat-embed-websocket-9.0.65.jar;E:\java\Repository\org\springframework\spring-web\5.3.22\spring-web-5.3.22.jar;E:\java\Repository\org\springframework\spring-beans\5.3.22\spring-beans-5.3.22.jar;E:\java\Repository\org\springframework\spring-webmvc\5.3.22\spring-webmvc-5.3.22.jar;E:\java\Repository\org\springframework\spring-aop\5.3.22\spring-aop-5.3.22.jar;E:\java\Repository\org\springframework\spring-context\5.3.22\spring-context-5.3.22.jar;E:\java\Repository\org\springframework\spring-expression\5.3.22\spring-expression-5.3.22.jar;E:\java\Repository\org\mybatis\spring\boot\mybatis-spring-boot-starter\2.2.2\mybatis-spring-boot-starter-2.2.2.jar;E:\java\Repository\org\springframework\boot\spring-boot-starter-jdbc\2.7.2\spring-boot-starter-jdbc-2.7.2.jar;E:\java\Repository\com\zaxxer\HikariCP\4.0.3\HikariCP-4.0.3.jar;E:\java\Repository\org\springframework\spring-jdbc\5.3.22\spring-jdbc-5.3.22.jar;E:\java\Repository\org\springframework\spring-tx\5.3.22\spring-tx-5.3.22.jar;E:\java\Repository\org\mybatis\spring\boot\mybatis-spring-boot-autoconfigure\2.2.2\mybatis-spring-boot-autoconfigure-2.2.2.jar;E:\java\Repository\org\mybatis\mybatis\3.5.9\mybatis-3.5.9.jar;E:\java\Repository\org\mybatis\mybatis-spring\2.0.7\mybatis-spring-2.0.7.jar;E:\java\Repository\mysql\mysql-connector-java\8.0.29\mysql-connector-java-8.0.29.jar;E:\java\Repository\org\springframework\boot\spring-boot-starter-test\2.7.2\spring-boot-starter-test-2.7.2.jar;E:\java\Repository\org\springframework\boot\spring-boot-test\2.7.2\spring-boot-test-2.7.2.jar;E:\java\Repository\org\springframework\boot\spring-boot-test-autoconfigure\2.7.2\spring-boot-test-autoconfigure-2.7.2.jar;E:\java\Repository\com\jayway\jsonpath\json-path\2.7.0\json-path-2.7.0.jar;E:\java\Repository\net\minidev\json-smart\2.4.8\json-smart-2.4.8.jar;E:\java\Repository\net\minidev\accessors-smart\2.4.8\accessors-smart-2.4.8.jar;E:\java\Repository\org\ow2\asm\asm\9.1\asm-9.1.jar;E:\java\Repository\org\slf4j\slf4j-api\1.7.36\slf4j-api-1.7.36.jar;E:\java\Repository\jakarta\xml\bind\jakarta.xml.bind-api\2.3.3\jakarta.xml.bind-api-2.3.3.jar;E:\java\Repository\jakarta\activation\jakarta.activation-api\1.2.2\jakarta.activation-api-1.2.2.jar;E:\java\Repository\org\assertj\assertj-core\3.22.0\assertj-core-3.22.0.jar;E:\java\Repository\org\hamcrest\hamcrest\2.2\hamcrest-2.2.jar;E:\java\Repository\org\junit\jupiter\junit-jupiter\5.8.2\junit-jupiter-5.8.2.jar;E:\java\Repository\org\junit\jupiter\junit-jupiter-api\5.8.2\junit-jupiter-api-5.8.2.jar;E:\java\Repository\org\opentest4j\opentest4j\1.2.0\opentest4j-1.2.0.jar;E:\java\Repository\org\junit\platform\junit-platform-commons\1.8.2\junit-platform-commons-1.8.2.jar;E:\java\Repository\org\apiguardian\apiguardian-api\1.1.2\apiguardian-api-1.1.2.jar;E:\java\Repository\org\junit\jupiter\junit-jupiter-params\5.8.2\junit-jupiter-params-5.8.2.jar;E:\java\Repository\org\junit\jupiter\junit-jupiter-engine\5.8.2\junit-jupiter-engine-5.8.2.jar;E:\java\Repository\org\junit\platform\junit-platform-engine\1.8.2\junit-platform-engine-1.8.2.jar;E:\java\Repository\org\mockito\mockito-core\4.5.1\mockito-core-4.5.1.jar;E:\java\Repository\net\bytebuddy\byte-buddy\1.12.12\byte-buddy-1.12.12.jar;E:\java\Repository\net\bytebuddy\byte-buddy-agent\1.12.12\byte-buddy-agent-1.12.12.jar;E:\java\Repository\org\objenesis\objenesis\3.2\objenesis-3.2.jar;E:\java\Repository\org\mockito\mockito-junit-jupiter\4.5.1\mockito-junit-jupiter-4.5.1.jar;E:\java\Repository\org\skyscreamer\jsonassert\1.5.1\jsonassert-1.5.1.jar;E:\java\Repository\com\vaadin\external\google\android-json\0.0.20131108.vaadin1\android-json-0.0.20131108.vaadin1.jar;E:\java\Repository\org\springframework\spring-core\5.3.22\spring-core-5.3.22.jar;E:\java\Repository\org\springframework\spring-jcl\5.3.22\spring-jcl-5.3.22.jar;E:\java\Repository\org\springframework\spring-test\5.3.22\spring-test-5.3.22.jar;E:\java\Repository\org\xmlunit\xmlunit-core\2.9.0\xmlunit-core-2.9.0.jar;E:\java\Repository\junit\junit\4.13.2\junit-4.13.2.jar;E:\java\Repository\org\hamcrest\hamcrest-core\2.2\hamcrest-core-2.2.jar com.cy.store.Test
5
10
17
Process finished with exit code 0
具体实现可以用idea打断点,一步一步查看结果。