@@ -127,6 +127,85 @@ JRE 是 Java 运行时环境。它是运行已编译 Java 程序所需的所有
127127> java 编程思想第四版:2.2.2 节
128128> ![ ] ( https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/18-9-15/86735519.jpg )
129129
130+ ### 可变长参数
131+
132+ 从 Java5 开始,Java 支持定义可变长参数,所谓可变长参数就是允许在调用方法时传入不定长度的参数。就比如下面的这个 ` printVariable ` 方法就可以接受 0 个或者多个参数。
133+
134+ ``` java
135+ public static void method1(String . .. args) {
136+ // ......
137+ }
138+ ```
139+
140+ 另外,可变参数只能作为函数的最后一个参数,但其前面可以有也可以没有任何其他参数。
141+
142+ ``` java
143+ public static void method2(String arg1, String . .. args) {
144+ // ......
145+ }
146+ ```
147+
148+ ** 遇到方法重载的情况怎么办呢?会优先匹配固定参数还是可变参数的方法呢?**
149+
150+ 答案是会优先匹配固定参数的方法,因为固定参数的方法匹配度更高。
151+
152+ 我们通过下面这个例子来证明一下。
153+
154+ ``` java
155+ /**
156+ * 微信搜 JavaGuide 回复"面试突击"即可免费领取个人原创的 Java 面试手册
157+ *
158+ * @author Guide哥
159+ * @date 2021/12/13 16:52
160+ **/
161+ public class VariableLengthArgument {
162+
163+ public static void printVariable (String ... args ) {
164+ for (String s : args) {
165+ System . out. println(s);
166+ }
167+ }
168+
169+ public static void printVariable (String arg1 , String arg2 ) {
170+ System . out. println(arg1 + arg2);
171+ }
172+
173+ public static void main (String [] args ) {
174+ printVariable(" a" , " b" );
175+ printVariable(" a" , " b" , " c" , " d" );
176+ }
177+ }
178+ ```
179+
180+ 输出:
181+
182+ ```
183+ ab
184+ a
185+ b
186+ c
187+ d
188+ ```
189+
190+ 另外,Java 的可变参数编译后实际会被转换成一个数组,我们看编译后生成的 ` class ` 文件就可以看出来了。
191+
192+ ``` java
193+ public class VariableLengthArgument {
194+
195+ public static void printVariable (String ... args ) {
196+ String [] var1 = args;
197+ int var2 = args. length;
198+
199+ for (int var3 = 0 ; var3 < var2; ++ var3) {
200+ String s = var1[var3];
201+ System . out. println(s);
202+ }
203+
204+ }
205+ // ......
206+ }
207+ ```
208+
130209### 注释
131210
132211Java 中的注释有三种:
0 commit comments