Да, это нормально, но не совсем понятно, о чем вы беспокоитесь.Если вы думаете, что это вызывает метод append
во время конструктора StringBuilder
, это не так.Этот код эквивалентен:
StringBuilder tmp = new StringBuilder();
tmp = tmp.append(mMonth + 1);
tmp = tmp.append("-");
tmp = tmp.append(mDay);
tmp = tmp.append("-");
tmp = tmp.append(mYear);
tmp = tmp.append(" ");
String date = tmp.toString();
Каждый вызов append
фактически возвращает this
в StringBuilder
, но в других подобных API-объектах объект может быть неизменным, и каждый метод будет создавать new возьмите и верните, что ... вызывающий код будет выглядеть одинаково.
(я предполагаю, что в реальном коде был вызов toString
, конечно, иначе он не скомпилировался бы.)
Обратите внимание, что на самом деле это эквивалентно:
String date = (mMonth + 1) + "-" + mDay + "-" + mYear + " ";
..., который на самом деле более читабелен, чем исходный код, и делает то же самое .В любом случае Java-компилятор будет использовать StringBuilder
.Конечно, вы действительно должны использовать SimpleDateFormat
или Joda DateTimeFormatter
для форматирования дат, конечно ...