当前位置: 首页 > 面试题库 >

Java varargs和“…”参数

宇文俊明
2023-03-14
问题内容

考虑方法声明:

String.format(String, Object ...)

该Object …参数只是对Objects 数组的引用。有没有办法在引用实际Object数组时使用此方法?如果我将Object数组传递给…参数-结果参数值将是一个二维数组-因为an Object[]本身就是an Object:

Object[] params = ....; // Make the array (for example based on user-input)
String s = String.format("%S has %.2f euros", params);

因此,数组的第一个组件(String.format方法中使用了哪个)将是一个数组,他将生成:

[class.getName() + "@" + Integer.toHexString(hashCode())] 

然后由于数组大小为1而发生错误。

该大胆的顺序是真正的问题。
这是第二个问题:是否一个…数组/参数有名字吗?


问题答案:

从varargs的文档中:

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

因此,你可以传递多个参数或一个数组。

以下工作正常:

class VarargTest {
  public static void main(String[] args) {
    Object[] params = {"x", 1.2345f};
    String s = String.format("%s is %.2f", params);
    System.out.println(s); // Output is: x is 1.23
  }
}


 类似资料:
  • 3. 形参和实参 下面我们定义一个带参数的函数,我们需要在函数定义中指明参数的个数和每个参数的类型,定义参数就像定义变量一样,需要为每个参数指明类型,参数的命名也要遵循标识符命名规则。例如: 例 3.4. 带参数的自定义函数 #include <stdio.h> void print_time(int hour, int minute) { printf("%d:%d\n", hour, mi

  • 问题内容: 尝试使用HttpServlet#doPut从PUT请求中获取参数: 使用curl发送请求: 使用doGet和GET curl请求可以正常工作。我想念什么吗? 问题答案: 基于评论和进一步的研究,我意识到Servlet无法假定有关将数据放入服务器的任何信息,因此不会解析名称/值对。 以下解决方案似乎是处理通过PUT传递的任何数据的正确方法,并且可以解析为XML,名称/值等。

  • 对于变量和参数,不管是已经敲代码多年的老鸟,还是刚刚接触编程的小白,都会有时候清楚,有时候又有点模糊。因为,在实际应用中,它们之间分分离离,比如,敲代码都知道,x=3中x是变量,它不是参数,但是在函数y=3x+4中,x是变量,也是参数。那么什么这两个到底有什么区别和联系呢?我在网上搜了一下,发现很多说法,虽然大同小异,但是似乎只有下面这一段来自微软网站的比较高度抽象,而且意义涵盖深远。我摘抄过来,

  • 问题内容: 我需要用JSP做一些小任务;对JSP而言,我是一个非常新的人,我想知道是否有可能从HTTP请求中仅 获取GET 或 POST 参数。 我已经看到了ServletRequest.getParameter(等等),但是这些方法似乎同时具有GET 和 POST参数。是否有一种方法可以只获取其中一个,而无需自己解析URL或请求正文?如果不是,是否存在优先值规则覆盖哪些值(例如POST参数始终覆

  • 问题内容: 我有一些存储过程 当我调用此proc时,它的效果很好。 但是,如果使用俄语字母来称呼它,则无法正常工作。 通话再次正常。 我有一个客户端应用程序,…我需要在参数中添加N前缀吗?如果是,该怎么办? 问题答案: 仅在将.net代码中的字符串串联时才需要N(手动)。如果将SQLParameter声明为nvarchar,这是自动的:框架会为您处理它。 因此,您的客户端代码 不正确 ,使您可以进

  • 问题内容: 我想从查询中获取ID,但是我得到的是NULL,我的错误在哪里? 为什么@Id参数始终为null?我看不到我的错误? 问题答案: 首先,选择所希望的使用的输出变量然后分配该中值使用可变。另外,您应该使用变量在where子句中传递数据,以避免类似sql的注入问题(即,您不应像那样将其串联起来)。试试这个 : 在这里查看详细信息