【问题标题】:Java: trying to convert an int value to a StringJava:尝试将 int 值转换为 String
【发布时间】:2017-12-05 21:21:08
【问题描述】:

在我的方法format(int n) 中,我只是试图将传递的 int 值作为字符串返回。使用toString() 方法。

public String format(int n) {

    return n.toString();
}

但是,我不断收到错误 int cannot be dereferenced。据我了解,这是因为我将原始 int 值视为对象,但我不知道如何修复它。我将不胜感激。

【问题讨论】:

  • return "" + n;
  • int 等原始类型不是对象,因此没有方法。你可以使用String.valueOf(n)
  • 我刚刚发布了一个答案并注意到@MuratK。已经发布了相同的:D

标签: java string int primitive


【解决方案1】:

您不能在原语上调用方法。
您可以将int 框到Integer 并在其上调用toString()

return ((Integer)n).toString();

感谢自动装箱,您甚至可以通过将 int 替换为 Integer 来直接重写您的方法:

public String format(Integer n) {    
    return n.toString();
}

并以这种方式调用它(在传递参数时,编译器会将int 框到Integer):

int x = ...;
format(x);

但更简单的方法是使用String.valueOf(int) 方法:

public String format(int n) {
    return String.valueOf(n);
}

在这种情况下,真的需要创建一个只委托给String.valueOf() 的方法吗?

【讨论】:

    【解决方案2】:

    您也可以像这样将 int 与空字符串连接起来:

    public String format(int n) {
        return "" + n;
    }
    

    这最终会调用 String.valueOf(n) 并使用 StringBuilder 将两者附加在一起,但现代编译器会为您优化它,因此这不是性能折衷。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多