int的错误无法解除引用?

时间:2015-01-29 11:03:47

标签: java arrays

我收到这个构造函数的错误,我不知道如何修复?我是java的初学者。这是我试图学习的一个示例练习:

/** 
 * Create an array of size n and store a copy of the contents of the
 * input argument
 * @param intArray array of elements to copy 
*/
public IntArray11(int[] intArray)
{
    int i = 0;
    String [] Array = new String[intArray.length];
    for(i=0; i<intArray.length; ++i)
    {
    Array[i] = intArray[i].toString();
    }
}

3 个答案:

答案 0 :(得分:16)

int不是java中的对象(它是primitive),因此您无法在其上调用方法。

解决它的一个简单方法是使用 Integer.toString(intArray[i])

答案 1 :(得分:5)

我会更喜欢这样写

public String[] convertToStrings(int... ints) {
    String[] ret = new String[ints.length];
    for(int i = 0; i < intArray.length; ++i)
        ret[i] = "" + ints[i];
    return ret;
}

或者在Java 8中你可以写

public List<String> convertToStrings(int... ints) {
    return IntStream.of(ints).mapToObj(Integer::toString).collect(toList());
}

这使用;

  • Java编码约定,
  • 变量i
  • 的范围有限
  • 我们使用String[]
  • 执行某些操作
  • 为方法指定一个有意义的名称,
  • 尝试使用编组格式。

如果我们担心效率,我们很可能完全取消这种方法。

String.valueOf(int)并不比Integer.toString(int)快。从String中的代码可以看出,String实现只调用了Integer.toString

/**
 * Returns the string representation of the {@code int} argument.
 * <p>
 * The representation is exactly the one returned by the
 * {@code Integer.toString} method of one argument.
 *
 * @param   i   an {@code int}.
 * @return  a string representation of the {@code int} argument.
 * @see     java.lang.Integer#toString(int, int)
 */
public static String valueOf(int i) {
    return Integer.toString(i);
}

答案 2 :(得分:4)

您的代码尝试调用int值的toString()方法。在Java中,int是一种原始类型,没有方法。改变这一行:

Array[i] = intArray[i].toString();

Array[i] = String.valueOf(intArray[i]);

并且代码应该运行。顺便说一下,你应该使用lowerCamelCase作为变量和字段。

编辑:对于它的价值,String.valueOf(int)比我系统上的Integer.toString(int)快一点(Java 1.7)。