【发布时间】:2015-07-18 08:20:00
【问题描述】:
我在 Java 中有 4 个字符串参数(来自请求对象)
String dd = req.getParameter(dd);
String mm = req.getParameter(mm);
String yyyy = req.getParameter(yyyy);
在验证 dd,mm,yyyy 之后,我正在构建日期
在某些地方再次通过 buildingString date = dd+"/"+mm+"/"+yyyy; 在第 4 个字符串变量中创建对象我需要替换日期
格式如下,
date = yyyy+mm+dd;
date =mm+"/"+dd+"/"+yyyy; // storing in db need this format
由于需要传递 4 个对象,将消耗多少内存 直到坚持在桌子上?它是更昂贵的记忆调用吗?有没有最佳实践? Stringpool 中到底有多少个字符串对象?
【问题讨论】:
-
不要担心像这样对对象进行微观管理;像 JVM 这样的托管内存系统经过广泛优化,能够有效地处理这些操作。以最容易阅读的方式编写代码。但是,您可以考虑使用日期格式化程序而不是手动构造字符串。
-
在我看来,最好的做法是使用日历/日期。
-
对于大多数用例,您可以这样做。您也可以为此使用 StringBuilder,但由于您只创建一次字符串,因此不会有太大的不同
-
尽快将信息放入适当的日期表示对象中,并且仅在有要显示的内容时才创建字符串(使用格式)。在 Java 8 中,使用新的
java.time包。在早期版本中,使用Date和/或Calendar或 JodaTime。保存到数据库时不要使用字符串。 -
@RealSkeptic 是的,我同意你的观点,同时坚持在 db 中我只将日期转换为 Java.util.date 对象