Java 可变长度参数与数组,简单的语法糖?

2023-11-23

我正在当地社区大学学习数据结构和算法课程,以获取乐趣。该课程的教材是Y. Daniel Liang的Java 编程简介,第 10 版。这本书本身非常扎实。

在处理Java.util.Arrays,Liang提到了Java的“可变长度”参数。他写道(第 265 页):

Java 将可变长度参数视为数组。您可以通过 数组或可变长度的可变数量参数 范围。当调用具有可变数量参数的方法时, Java 创建一个数组并将参数传递给它。

一个例子是:

public static void (int... toes) {
    //... some code
}

然而,梁并没有解释变长参数的由来或优点。如果像Liang所说的那样,将变长参数“转换”为数组,那么它们的优势是什么?是否存在由可变长度参数促进的软件设计模式或工程目标?

换句话说,上面的代码片段提供了以下代码片段没有提供的内容:

public static void (int[] toes) { // ...

您正在谈论的“...”参数被称为varargs.

需要注意的一些差异:

  • 可变参数可以不传递任何参数(基本上被忽略)、null 或不确定数量的参数,而数组参数必须传递数组或 null
  • varargs must是方法的最后一个参数,而对于数组参数来说并不重要。这是因为 varargs 的特殊属性,这可能是您发布的两件事之间最显着的区别:

最终参数类型后面的三个句点表明 最终参数可以作为数组或参数序列传递

Source

例如,这个方法:

public void myMethod(String... args) {}

可以用以下任一方式调用:

String[] myStrings = {"a", "b", "c"};
myMethod(myStrings);
myMethod("a", "b", "c");

See this关于何时应使用可变参数的良好解释。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 可变长度参数与数组,简单的语法糖? 的相关文章

  • 使用 LinkedList 实现下一个和上一个按钮

    这可能是一个愚蠢的问题 但我很难思考清楚 我编写了一个使用 LinkedList 来移动加载的 MIDI 乐器的方法 我想制作一个下一个和一个上一个按钮 以便每次单击该按钮时都会遍历 LinkedList 如果我硬编码itr next or
  • 动态选择端口号?

    在 Java 中 我需要获取端口号以在同一程序的多个实例之间进行通信 现在 我可以简单地选择一些固定的数字并使用它 但我想知道是否有一种方法可以动态选择端口号 这样我就不必打扰我的用户设置端口号 这是我的一个想法 其工作原理如下 有一个固定
  • 如何在java中将一个数组列表替换为另一个不同大小的数组列表

    我有两个大小不同的数组列表 如何从此替换 ArrayList
  • 过滤两次 Lambda Java

    我有一个清单如下 1 2 3 4 5 6 7 和 预期结果必须是 1 2 3 4 5 6 7 我知道怎么做才能到7点 我的结果 1 2 3 4 5 6 我也想知道如何输入 7 我添加了i gt i objList size 1到我的过滤器
  • Pig Udf 显示结果

    我是 Pig 的新手 我用 Java 编写了一个 udf 并且包含了一个 System out println 其中的声明 我必须知道在 Pig 中运行时该语句在哪里打印 假设你的UDF 扩展了 EvalFunc 您可以使用从返回的 Log
  • Java 公历日历更改时区

    我正在尝试设置 HOUR OF DAY 字段并更改 GregorianCalendar 日期对象的时区 GregorianCalendar date new GregorianCalendar TimeZone getTimeZone GM
  • Java 集合的并集或交集

    建立并集或交集的最简单方法是什么Set在 Java 中 我见过这个简单问题的一些奇怪的解决方案 例如手动迭代这两个集合 最简单的单行解决方案是这样的 set1 addAll set2 Union set1 retainAll set2 In
  • 没有 Spring 的自定义 Prometheus 指标

    我需要为 Web 应用程序提供自定义指标 问题是我不能使用 Spring 但我必须使用 jax rs 端点 要求非常简单 想象一下 您有一个包含键值对的映射 其中键是指标名称 值是一个简单的整数 它是一个计数器 代码会是这样的 public
  • 检测并缩短字符串中的所有网址

    假设我有一条字符串消息 您应该将 file zip 上传到http google com extremelylonglink zip http google com extremelylonglink zip not https stack
  • Hibernate 的 PersistentSet 不使用 hashCode/equals 的自定义实现

    所以我有一本实体书 public class Book private String id private String name private String description private Image coverImage pr
  • Spring Boot Data JPA 从存储过程接收多个输出参数

    我尝试通过 Spring Boot Data JPA v2 2 6 调用具有多个输出参数的存储过程 但收到错误 DEBUG http nio 8080 exec 1 org hibernate engine jdbc spi SqlStat
  • 当 OnFocusChangeListener 应用于包装的 EditText 时,TextInputLayout 没有动画

    不能比标题说得更清楚了 我有一个由文本输入布局包裹的 EditText 我试图在 EditText 失去焦点时触发一个事件 但是 一旦应用了事件侦听器 TextInputLayout 就不再对文本进行动画处理 它只是位于 editText
  • tomcat 中受密码保护的应用程序

    我正在使用 JSP Servlet 开发一个Web应用程序 并且我使用了Tomcat 7 0 33 as a web container 所以我的要求是tomcat中的每个应用程序都会password像受保护的manager applica
  • 如何访问JAR文件中的Maven资源? [复制]

    这个问题在这里已经有答案了 我有一个使用 Maven 构建的 Java 应用程序 我有一个资源文件夹com pkg resources 我需要从中访问文件 例如directory txt 我一直在查看各种教程和其他答案 但似乎没有一个对我有
  • 尝试将 Web 服务部署到 TomEE 时出现“找不到...的 appInfo”

    我有一个非常简单的项目 用于培训目的 它是一个 RESTful Web 服务 我使用 js css 和 html 创建了一个客户端 我正在尝试将该服务部署到 TomEE 这是我尝试部署时遇到的错误 我在这里做错了什么 刚刚遇到这个问题 我曾
  • logcat 中 mSecurityInputMethodService 为 null

    我写了一点android应显示智能手机当前位置 最后已知位置 的应用程序 尽管我复制了示例代码 并尝试了其他几种解决方案 但似乎每次都有相同的错误 我的应用程序由一个按钮组成 按下按钮应该log经度和纬度 但仅对数 mSecurityInp
  • Eclipse 启动时崩溃;退出代码=13

    I am trying to work with Eclipse Helios on my x64 machine Im pretty sure now that this problem could occur with any ecli
  • Opencv Java 灰度

    我编写了以下程序 尝试从彩色转换为灰度 Mat newImage Imgcodecs imread q1 jpg Mat image new Mat new Size newImage cols newImage rows CvType C
  • Repa 数组上的并行 mapM

    在我最近的work https github com bgamari mixture model with Gibbs sampling 我一直在充分利用RVar http hackage haskell org packages arch
  • 如何防止在Spring Boot单元测试中执行import.sql

    我的类路径中有一个 import sql 文件 其中包含一些 INSERT 语句 当使用 profile devel 运行我的应用程序时 它的数据被加载到 postgres 数据库中 到目前为止一切正常 当使用测试配置文件执行测试时 imp

随机推荐

  • 基于自定义 HTTP 标头的 UrlRewrite 条件

    我正在尝试在 UrlRewrite 中配置一个有 2 个条件的规则 HTTP 标头HTTP HOST需要匹配某个域 api contoso com 自定义 HTTP 标头x app version需要出现在 HTTP 请求中 根据此信息 我
  • 如何将鼠标滚轮输入定向到光标下方进行控制而不是聚焦?

    我使用了许多滚动控件 TTreeViews TListViews DevExpress cxGrids 和 cxTreeLists 等 当鼠标滚轮旋转时 无论鼠标光标位于哪个控件上 具有焦点的控件都会接收输入 如何将鼠标滚轮输入定向到鼠标光
  • 如何使用 SWIG 从 C++ 调用 Java?

    我可以使用 SWIG 从 Java 调用 C 代码 但我找不到任何有关如何执行相反操作 从 C 调用 Java 的文档 官方 SWIG 文档说 http www swig org Doc1 3 Java html java overview
  • Laravel eloquent 模型模型属性转换(我应该转换哪些属性类型?)

    我不确定我是否完全理解 Laravel Eloquent 属性转换 根据文件 https laravel com docs 8 x eloquent mutators attribute casting 这些是支持的类型 整数 实数 浮点
  • MATLAB 支持前向声明吗?

    是否可以在 m 文件中使用函数 该函数在同一文件的后面部分中实现 以与其他编程语言 例如 C 类似的风格 当然 在这样的 m 文件中 局部函数将在主函数之后声明 例如 function y main func x This is the m
  • 加速熊猫 cummin/cummax

    Pandas cummin and cummax对于我的许多组的用例来说 函数似乎真的很慢 我怎样才能加快他们的速度 Update import pandas as pd import numpy as np from collection
  • 折线图中的条件背景颜色

    我目前正在尝试将我们的图表从 PQ Systems Chartrunner 转换为 SSRS 2008 图表 我目前正在 SSRS 2008 中使用折线图 并尝试让背景颜色针对不同的西格玛进行更改 我能够计算并绘制标准差西格玛线 但我无法更
  • 如何检索 COM 类的接口 ID,以便将其传递给 CoCreateInstance?

    我想以编程方式检索任何类的接口 ID 以便可以将其传递给 CoCreateInstance 很感谢任何形式的帮助 请参阅下面的 如何获取此内容 HRESULT hResult CLSID ClassID void pInterface if
  • 转储到 JSON 添加了额外的双引号和引号转义

    我正在使用 Python 工具检索 Twitter 数据 并将这些数据以 JSON 格式转储到我的磁盘上 我注意到用双引号括起来的推文的整个数据字符串被意外转义 此外 实际 JSON 格式的所有双引号都用反斜杠转义 它们看起来像这样 cre
  • 如何跟踪WPF中TextBox中的哪个字符被删除?

    我想跟踪用户通过Delete或BackSpace键删除了哪个字符 我正在处理文本框的 TextBox ChangedEvent 我可以从中提取删除的字符吗文本更改事件参数 e 变更如果是的话我该怎么做 我想限制用户从文本框中删除任何字符 我
  • 如何更改 xcode 中的 subversion 设置?

    我已经在 Xcode 中运行了 subversion 一段时间 subversion 的集成始终悬而未决 然而我的 subversion 服务器已经改变了它的 ip 地址 并且我的 xcode 项目仍然尝试在旧 ip 上查找源 我已经通过
  • Prolog:带有内置命令的“Vanilla”元解释器

    这个答案Jan Burse 展示了 Prolog 中元解释器最简单的实现之一 solve true solve A B solve A solve B solve H clause H B solve B 我想扩展这个解释器 以便它可以调用
  • 如何将cURL转换为axios请求

    我正在尝试将 cURL 请求转换为here到 axios curl d grant type client credentials client id YOUR APPLICATION S CLIENT ID client secret Y
  • 具有多客户端通信的 Java 服务器。

    我正在为一项任务制作一个游戏 我有一个用 Java 设置的服务器和多客户端 我们使用的是 MVC 我需要让客户端将他们的名字发送到服务器 然后当有两个玩家存在时 我需要将两个名字以及他们的玩家编号 玩家一或玩家二 发送回客户端 我不明白如何
  • 如何在 C# 中的控制台窗口上显示列表项

    我有一个List包含所有数据库名称 我必须在控制台中显示该列表中包含的项目 使用Console WriteLine 我怎样才能实现这个目标 实际上你可以做得很简单 因为列表有一个ForEach方法 因为你可以传入Console WriteL
  • Python Tornado - 困惑如何将阻塞函数转换为非阻塞函数

    假设我有一个长时间运行的函数 def long running function result future Future result 0 for i in xrange 500000 result i result future set
  • { } 和等号变量之间的区别

    我对 C 编程有点陌生 我在谷歌上找不到我的答案 所以希望它能在这里得到答案 以下之间有区别吗 unsigned int counter 1 or unsigned int counter 1 这本书使用了第一个选项 它让我感到困惑 因为它
  • 检查 typescript 类是否有 setter/getter

    我有一个打字稿类 它具有以下属性 export class apiAccount private balance apiMoney get balance apiMoney return this balance set balance v
  • 在iPhone上,是否可以查出我们连接的是哪个WIFI网络?

    如果是的话 我们还可以获得有关网络配置的其他信息吗 一种有用的方法是获取当前网络的 SSID 有 API 可以做到这一点吗 更新 我在这里发现了类似的问题 iPhone SDK能否获取当前连接的Wi Fi SSID 尝试以下方法 impor
  • Java 可变长度参数与数组,简单的语法糖?

    我正在当地社区大学学习数据结构和算法课程 以获取乐趣 该课程的教材是Y Daniel Liang的Java 编程简介 第 10 版 这本书本身非常扎实 在处理Java util Arrays Liang提到了Java的 可变长度 参数 他写