Когда я звоню System.out.println(new Date());
Я не называю конструктор в классе Date
? Пожалуйста, поправьте меня, если я ошибаюсь. Так в таком случае, как это возвращает ценность?Как конструктор Date() возвращает значение
ответ
Как уже отмечалось, вы действительно вызов конструктора для Date()
класса, и неявно вызывая метод toString()
. Если вы хотите знать, что этот метод делает, вам нужно посмотреть here.
Конструктор просто захватывает системное время в миллисекундах (часто в десятки миллисекунд, по-видимому) как long
и toString()
анализирует его, ссылаясь на методы, доступные в sun.util.calendar.CalendarDate
, а затем генерируют StringBuilder объект, который в конечном счете, что возвращается вам.
Так что, пока вы вызываете конструктор для объекта Date()
(и неявным образом вызываете его метод toString()
), под капотом происходит еще немного больше. Если ваша мотивация заключается в создании собственного анализатора даты, вы можете просмотреть источник для участвующих классов для руководства или просто сделать вызовы для этих классов и позволить им выполнять эту работу.
new Date()
- выражение, являющееся вызовом конструктора.
Результатом такого выражения является новый объект. (или исключение)
Он печатает значение, потому что вы неявно вызываете метод toString
нового объекта Date
.
Это эквивалентно следующему:
Date date = new Date();
System.out.println(date);
Конечно, вы звоните Дата конструктора. Каждый раз, когда вы используете «новый» оператор, вызывается конструктор. Вы просто не сохраняете ссылку на вновь созданный объект, поэтому он скоро получит сборку мусора. Так что же происходит:
- Дата Конструктор называется
- Экземпляр Дата передается Println метод, который принимает аргумент Object
- Println метод вызывает метод ToString() на дату и получает строку представление; печатает это
- метод возвращает, экземпляр даты получает garbaged собраны (в конечном счете)
- 1. Mongodb Date() возвращает неправильное значение
- 2. Конструктор Date (dateString) несовместим?
- 3. date ('H: i', $ ans) возвращает неправильное значение
- 4. Функция php date возвращает неправильное значение
- 5. Spring MVC date binding возвращает значение null
- 6. Java Date getTime возвращает отрицательное значение
- 7. JSON.stringify возвращает неверное значение для объекта Date
- 8. Конструктор класса Python возвращает пустое значение
- 9. C++ - Конструктор типа класса возвращает значение lvalue?
- 10. Javascript Date() конструктор не работает
- 11. Как вернуть значение Date
- 12. Возвращает переменную как функцию-конструктор.
- 13. date() возвращает пустую строку
- 14. Возвращает ли конструктор null?
- 15. Scala timestamp/date zero конструктор аргументов?
- 16. Этот конструктор возвращает экземпляр?
- 17. Конструктор возвращает неожиданный нуль
- 18. Почему Function.prototype.bind возвращает конструктор?
- 19. Что возвращает конструктор?
- 20. Конструктор GeoCodeRequest() возвращает null
- 21. SQLite date query возвращает запись
- 22. Почему класс getYear() Java Date возвращает неправильное значение?
- 23. Конструктор Date (...) устарел. Что это значит? (Java)
- 24. Вставить параметр Date в конструктор объекта класса
- 25. Android: Не удается разрешить конструктор 'Date()'
- 26. ifstream конструктор возвращает поврежденный объект
- 27. Java SimpleDateFormat возвращает неправильное значение в объекте Date
- 28. PHP date ("w", $ timein) возвращает неправильное значение с допустимой датой
- 29. Date :: ICal тайна (час не возвращает правильное значение
- 30. Javascript новая функция конструктор не возвращает требуемое значение
Вы, который возвращает объект типа 'Date' и' println() ', неявно вызывает' toString() 'на этом объекте. –
Почему это вниз? Просто просмотр вопросов по тегу java меня огорчает, большинство из них по крайней мере -1. Действительно ли люди java очень ненавидят вопросы? – arynaq
@arynaq: Непонятно, что этот вопрос задает. – SLaks