Советы по объединению строк в Java 1.6 с несколькими целыми числами - PullRequest
0 голосов
/ 09 мая 2018

У меня есть класс с 3 int переменными: день, месяц и год. У меня также есть метод с именем toString(), который принимает три поля и возвращает их в формате «дд / мм / гггг» (нет необходимости указывать 0, если день или месяц содержит только 1 число).

Каков наилучший способ сделать это?

public String toString(){
        String dateString = this.day + "/" + this.month + "/" + this.year;
        return dateString;
    }

OR

public String toString(){
        String dateString = Integer.toString(this.day) + "/" + Integer.toString(this.month) + "/" + Integer.toString(this.year);
        return dateString;
    }

Ответы [ 3 ]

0 голосов
/ 09 мая 2018

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

@Override
public String toString() {
    return (this.day + "/" + this.month + "/" + this.year);
}
0 голосов
/ 09 мая 2018

В качестве альтернативы я бы использовал String.format для создания этого String

return String.format("%d/%d/%d", day, month, year)

Вы хотите отформатировать дату с нулем в начале? Легко с форматером:

return String.format("%02d/%02d/%02d", day, month, year)

- 0 - use leading zero instead of spaces.
- 2d - Minimum two character to print (so "2" will use " 2")

Вы можете найти полную документацию о разрешенных флагах в Formatter

Простой пример:

String.format("%002d", 5);

005

И пример с датой,

String.format("%02d/%02d/%02d", 9, 5, 18);

09/05/18

0 голосов
/ 09 мая 2018

Первый без всяких сомнений, во втором вы явно конвертируете Integer в String, а затем снова конкатенируете в String при возврате, что не имеет особого смысла.

...