Как умножиться 10 к “Целочисленному” объекту в Java?

Для всех браузеров, особенно на Android. Возможно, вы можете добавить это

   try{
       blob = new Blob( byteArrays, {type : contentType});
    }
    catch(e){
        // TypeError old chrome and FF
        window.BlobBuilder = window.BlobBuilder || 
                             window.WebKitBlobBuilder || 
                             window.MozBlobBuilder || 
                             window.MSBlobBuilder;
        if(e.name == 'TypeError' && window.BlobBuilder){
            var bb = new BlobBuilder();
            bb.append(byteArrays);
            blob = bb.getBlob(contentType);
        }
        else if(e.name == "InvalidStateError"){
            // InvalidStateError (tested on FF13 WinXP)
            blob = new Blob(byteArrays, {type : contentType});
        }
        else{
            // We're screwed, blob constructor unsupported entirely   
        }
    }
9
задан display_name 30 January 2014 в 07:17
поделиться

5 ответов

С Java 5 автоупаковка, можно просто сделать:

Integer a = new Integer(2); // or even just Integer a = 2;
a *= 10;
System.out.println(a);
26
ответ дан 4 December 2019 в 06:27
поделиться

Строковый подход забавен, но почти наверняка плохой способ сделать это.

Получение международного значения Целого числа и создание нового будут очень быстры, где, поскольку parseInt был бы довольно дорогим для вызова.

В целом, я согласился бы с Вашим исходным подходом (который, как другие указали, может быть сделан без такой помехи, если у Вас есть автоупаковка, как представлено в Java 5).

7
ответ дан 4 December 2019 в 06:27
поделиться

Проблемой со вторым путем является способ, которым Строки обрабатываются в Java:

  • "0" преобразовывается в объект постоянной строки во время компиляции.
  • Каждый раз этот код называют, s создается как новый Строковый объект, и javac преобразовывает тот код в String s = new StringBuilder().append(integerObj.toString()).append("0").toString() (StringBuffer для более старых версий). Даже если Вы используете то же integerObj, т.е.

    String s1 = integerObj + "0"; String s2 = integerObj + "0";

    (s1 == s2) был бы false, в то время как s1.equals(s2) был бы true.

  • Integer.parseInt внутренне вызовы new Integer() так или иначе, потому что Integer неизменно.

BTW, автоупаковка/распаковывание является внутренне тем же как первым методом.

3
ответ дан 4 December 2019 в 06:27
поделиться

Держитесь подальше от второго подхода, лучший выбор был бы автоупаковкой при использовании java 1.5, что-нибудь ранее, что первый пример был бы лучшим.

1
ответ дан 4 December 2019 в 06:27
поделиться

Решение с помощью Строкового метода не так хорошо для ряда причин. Некоторые - эстетические причины, другие практичны.

На практической передней стороне больше объектов создается Строковой версией, чем более нормальная форма (как Вы выразили в своем первом примере).

На эстетической ноте я думаю, что вторая версия затеняет намерение кода, и это почти столь же важно как то, чтобы заставлять это привести к результату, который Вы хотите.

1
ответ дан 4 December 2019 в 06:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: