Для всех браузеров, особенно на 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
}
}
С Java 5 автоупаковка, можно просто сделать:
Integer a = new Integer(2); // or even just Integer a = 2;
a *= 10;
System.out.println(a);
Строковый подход забавен, но почти наверняка плохой способ сделать это.
Получение международного значения Целого числа и создание нового будут очень быстры, где, поскольку parseInt был бы довольно дорогим для вызова.
В целом, я согласился бы с Вашим исходным подходом (который, как другие указали, может быть сделан без такой помехи, если у Вас есть автоупаковка, как представлено в Java 5).
Проблемой со вторым путем является способ, которым Строки обрабатываются в 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, автоупаковка/распаковывание является внутренне тем же как первым методом.
Держитесь подальше от второго подхода, лучший выбор был бы автоупаковкой при использовании java 1.5, что-нибудь ранее, что первый пример был бы лучшим.
Решение с помощью Строкового метода не так хорошо для ряда причин. Некоторые - эстетические причины, другие практичны.
На практической передней стороне больше объектов создается Строковой версией, чем более нормальная форма (как Вы выразили в своем первом примере).
На эстетической ноте я думаю, что вторая версия затеняет намерение кода, и это почти столь же важно как то, чтобы заставлять это привести к результату, который Вы хотите.