Java int to String - Integer.toString(i) vs new Integer (i).toString()

Иногда java меня озадачивает.
У меня есть огромное количество инициализаций int.

Какая реальная разница?

  • Integer.toString(i)
  • new Integer(i).toString()

Ответ 1

Integer.toString вызывает статический метод в классе Integer. Ему не нужен экземпляр Integer.

Если вы вызываете new Integer(i), вы создаете экземпляр типа Integer, который является полным Java-объектом, инкапсулирующим значение вашего int, Затем вы вызываете метод toString на нем, чтобы попросить его вернуть строковое представление самого себя.

Если вы хотите напечатать int, вы должны использовать первый, потому что он легче, быстрее и не использует дополнительную память (кроме возвращаемой строки).

Если вы хотите, чтобы объект представлял целочисленное значение, например, чтобы поместить его в коллекцию, вы использовали бы второй, поскольку он дает вам полноценный объект для выполнения всех видов вещей, которые вы не можете сделать с помощью голый int.

Ответ 2

new Integer(i).toString() сначала создает объект (избыточный) обертки вокруг i (который сам по себе может быть объектом-оболочкой Integer).

Integer.toString(i) является предпочтительным, поскольку он не создает ненужных объектов.

Ответ 3

Другим вариантом является статический метод String.valueOf.

String.valueOf(i)

Он чувствует себя немного лучше, чем Integer.toString(i) для меня. Когда тип я изменяется, например, от int до double, код будет оставаться верным.

Ответ 4

  • new Integer(i).toString();

    Этот оператор создает объект Integer, а затем вызывает его методы toString(i) до возвращает представление String значения Integer.

  • Integer.toString(i);

    Он возвращает объект String, представляющий конкретный int (integer), но здесь toString(int) - это метод static.

Резюме в первом случае возвращает строковое представление объектов, где, как и во втором случае, оно возвращает строковое представление целого числа.

Ответ 5

Я также настоятельно рекомендую использовать

int integer = 42;
String string = integer + "";

Простой и эффективный.

Ответ 6

Хотя мне нравится fhucho рекомендация

String.valueOf(i)

Ирония заключается в том, что этот метод фактически вызывает

Integer.toString(i)

Таким образом, используйте String.valueOf(i), если вам нравится, как он читает, и вам не нужен radix, но также зная, что он менее эффективен, чем Integer.toString(i).

Ответ 7

Что касается измерения производительности, если вы рассматриваете производительность по времени, то Integer.toString(i); стоит дорого, если вы звоните менее 100 миллионов раз. Если это более 100 миллионов вызовов, то новый Integer (10).toString() будет работать лучше.

Ниже код через u может попытаться измерить производительность,

public static void main(String args[]) {
            int MAX_ITERATION = 10000000;
        long starttime = System.currentTimeMillis();
        for (int i = 0; i < MAX_ITERATION; ++i) {
            String s = Integer.toString(10);
        }
        long endtime = System.currentTimeMillis();
        System.out.println("diff1: " + (endtime-starttime));

        starttime = System.currentTimeMillis();
        for (int i = 0; i < MAX_ITERATION; ++i) {
            String s1 = new Integer(10).toString();
        }
        endtime = System.currentTimeMillis();
        System.out.println("diff2: " + (endtime-starttime));
    }

В терминах памяти

new Integer (i).toString();

будет занимать больше памяти, так как каждый раз будет создавать объект, поэтому произойдет фрагментация памяти.

Ответ 8

лучше:

Integer.valueOf(i).toString()

Ответ 9

Простой способ состоит только в конкатенации "" с целым числом:

Int i = 100;

String s = ""+ i;

теперь s будет иметь "100" как строковое значение.

Ответ 10

Здесь Integer.toString вызывает статический метод в классе Integer. Он не требует вызова объекта.

Если вы вызываете new Integer(i), сначала создаете экземпляр типа Integer, который представляет собой полный объект Java, инкапсулирующий значение вашего int i. Затем вы вызываете метод toString на нем, чтобы попросить его вернуть строковое представление самого себя.

Ответ 11

1. Integer.toString(i)

Integer i = new Integer(8);
    // returns a string representation of the specified integer with radix 8
 String retval = i.toString(516, 8);
System.out.println("Value = " + retval);

2. new Integer(i).toString()

 int i = 506;

String str = new Integer(i).toString();
System.out.println(str + " : " + new Integer(i).toString().getClass());////506 : class java.lang.String