您的位置:首页 > 汽车 > 新车 > 黄页网络的推广软件下载_北京传媒公司_制作网页用什么软件_北京百度竞价托管

黄页网络的推广软件下载_北京传媒公司_制作网页用什么软件_北京百度竞价托管

2025/6/3 14:32:55 来源:https://blog.csdn.net/ChenShan3/article/details/146982607  浏览:    关键词:黄页网络的推广软件下载_北京传媒公司_制作网页用什么软件_北京百度竞价托管
黄页网络的推广软件下载_北京传媒公司_制作网页用什么软件_北京百度竞价托管

文章目录

      • **Java 可变参数(Varargs)使用指南**
        • **1. 基本语法**
        • **2. 调用方式**
        • **3. 关键注意事项**
        • **4. 底层实现**
        • **5. 实际应用场景**
        • **6. 总结**

Java 可变参数(Varargs)使用指南


1. 基本语法
  • 定义方式:在方法参数中使用 类型... 参数名,且必须是最后一个参数。
  • 示例
public void printValues(String prefix, int... numbers) {System.out.print(prefix + ": ");for (int num : numbers) {System.out.print(num + " ");}System.out.println();
}

2. 调用方式
调用方式示例输出
传递多个值printValues("结果", 1, 2, 3);结果: 1 2 3
传递数组int[] arr = {4, 5, 6}; printValues("数组", arr);数组: 4 5 6
空参数printValues("空");空: (无数字)

3. 关键注意事项
  1. 参数位置
    • 可变参数必须为最后一个参数,否则编译错误。
    • ❌ 错误示例:
public void errorExample(int... nums, String str) {} // 编译错误
  1. 方法重载优先级
    • 固定参数方法优先于可变参数方法:
void test(int a, int b) {}    // 优先调用
void test(int... nums) {}     // 参数不匹配时调用
    * `test(1, 2)` → 调用第一个方法。  * `test(1)` → 调用第二个方法。
  1. 避免重载歧义
    • 两个可变参数方法会导致编译错误:
void test(int... nums) {}
void test(String... strs) {}
test(); // 编译错误:无法确定调用哪个方法
  1. 处理 null
  • 情况 1:可变参数本身为 <font style="color:rgb(64, 64, 64);">null</font>
printValues(null, 1, 2);  // 第一个参数是 prefix,被赋值为 null
- **<font style="color:rgb(64, 64, 64);">风险</font>**<font style="color:rgb(64, 64, 64);">:若方法内直接使用 </font>`<font style="color:rgb(64, 64, 64);">prefix</font>`<font style="color:rgb(64, 64, 64);">(如 </font>`<font style="color:rgb(64, 64, 64);">prefix.length()</font>`<font style="color:rgb(64, 64, 64);">),会抛出 </font>`<font style="color:rgb(64, 64, 64);">NullPointerException</font>`<font style="color:rgb(64, 64, 64);">。</font>
  • 情况 2:可变参数数组为 <font style="color:rgb(64, 64, 64);">null</font>
int[] nums = null;
printValues("前缀", nums);  // 可变参数 numbers 接收 null
- **<font style="color:rgb(64, 64, 64);">风险</font>**<font style="color:rgb(64, 64, 64);">:遍历 </font>`<font style="color:rgb(64, 64, 64);">numbers</font>`<font style="color:rgb(64, 64, 64);"> 时(如 </font>`<font style="color:rgb(64, 64, 64);">for (int num : numbers)</font>`<font style="color:rgb(64, 64, 64);">),会抛出 </font>`<font style="color:rgb(64, 64, 64);">NullPointerException</font>`<font style="color:rgb(64, 64, 64);">。</font>
  • 直接传递 null 可能引发 NullPointerException,建议检查:
prefix = (prefix == null) ? "默认前缀" : prefix;
//或者
if (numbers == null) {numbers = new int[0];  // 替换为空数组}

4. 底层实现
  • 可变参数在编译后会转换为数组:
// 源码
void sum(int... nums) {}// 编译后等价于
void sum(int[] nums) {}

5. 实际应用场景
  1. 日志工具类
public class Logger {public static void log(String format, Object... args) {format = format == null ? "[无消息]" : format;args = args == null ? new Object[0] : args;String message = String.format(format, args);System.out.println(message);}
}// 调用示例
Logger.log(null, "Alice");          // 输出: [无消息]
Logger.log("用户: %s", null);       // 输出: 用户: null
Logger.log("数据: %d", (Object)null); // 输出: 数据: null
  1. 数学计算
public static int max(int... numbers) {if (numbers == null || numbers.length == 0) {throw new IllegalArgumentException("参数不能为null或空");}int max = numbers[0];for (int num : numbers) {if (num > max) max = num;}return max;
}// 调用示例
max(1, 3, 2);     // 正常返回 3
max(null);        // 抛出 IllegalArgumentException

6. 总结
优点注意事项适用场景
简化调用,参数数量灵活必须作为最后一个参数日志、工具方法、参数数量不确定时
代码更简洁避免重载歧义String.format()、集合操作
兼容数组传参处理 null 值防崩溃

核心原则

  • 可变参数提供灵活性,但需谨慎设计方法签名以避免冲突。
  • 适合同类型参数数量不确定的场景。

参考:博客园

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com