@@ -127,6 +127,85 @@ JRE 是 Java 运行时环境。它是运行已编译 Java 程序所需的所有
127
127
> java 编程思想第四版:2.2.2 节
128
128
> ![ ] ( https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/18-9-15/86735519.jpg )
129
129
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
+
130
209
### 注释
131
210
132
211
Java 中的注释有三种:
0 commit comments