在我的方法format(int n)
中,我只是尝试将传递的int值作为字符串返回。使用toString()
方法。
public String format(int n) {
return n.toString();
}
但是,我一直收到错误int cannot be dereferenced
。根据我的理解,这种情况正在发生,因为我将原始的int值视为一个对象,但我不知道如何修复它。我很感激任何帮助。
答案 0 :(得分:8)
您不能在基元上调用方法
您可以将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()
的方法?
答案 1 :(得分:0)
您还可以将int与空字符串连接起来,如下所示:
public String format(int n) {
return "" + n;
}
在引擎盖下,这最终调用String.valueOf(n)并使用StringBuilder将两者附加在一起,但是现代编译器会为您优化它,因此它不是性能权衡。