请教一个java基础new问题,探讨内存占用和效率

tomorrower 2019-07-17 08:46:38
写法一:
List<MailTrace> mailTraces = new ArrayList<MailTrace>(); //mailTraces 是一个实体类,自定义的

mailTraces = GetJdptGzxx.getGzxx(yjhm); //GetJdptGzxx.getGzxx(yjhm)是一个自定义方法,返回类型为List<MailTrace> mailTraces

写法二:

List<MailTrace> mailTraces = GetJdptGzxx.getGzxx(yjhm); //mailTraces 是一个实体类,自定义的,GetJdptGzxx.getGzxx(yjhm)同上

请问这两个写法,对java来说是否一样?效率和内存分配上有区别吗?
方法二是不是用的引用?什么时候分配资源的?

...全文
69 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
tomorrower 2019-07-17
  • 打赏
  • 举报
回复
请教maradona1984一个问题: ArrayOfMail yjGzxxList = new ArrayOfMail(); //循环外定义变量yjGzxxList 是一个List while (rs_yjxx.next()) { yjhm = rs_yjxx.getString(1); // 邮件号码 yjGzxxList=null; // 开始获取跟踪信息,调用外部方法赋值 yjGzxxList = GetEmsWlxxWS.getEmsxxByWS(yjhm); } 请问,这样循环调用变量赋值,为了防止每次调用的结果不同, yjGzxxList=null; --这句话是不是必须的??? 我发现循环里面,变量没有初始化也没有发现问题
tomorrower 2019-07-17
  • 打赏
  • 举报
回复
谢谢maradona1984的回答 我第二种方法,发现也是调用了构造器的,虽然没有new对象,实际上还是隐式调用了
maradona1984 2019-07-17
  • 打赏
  • 举报
回复
你也就浪费了new ArrayList<MailTrace>()的空间和时间 但这种问题意义真不大,除非对象很重,需要大量时间去初始化,才有优化的价值 当然实际情况中,自然是第二种写法,如果因为作用域,那也会写

List<MailTrace> mailTraces = null;
但你第一种写法也不会让你性能得到肉眼可见的提升,如果需要在意这种细微的性能问题,那也不是java的应用场景,应该考虑其他语言

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧