在Java中,一个变量重新new,重新分配空间进行复用,和重新定义一个变量使用哪个好?
例如:
// 方式一
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sdf.parse(time);
sdf = new SimpleDateFormat("yyyy-MM-dd");
sdf.parse(time2);
// 方式二
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sdf.parse(time);
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
sdf2.parse(time2);
哪一种方式比较好,求解答?
方式一好些,因为每次new都会开辟一块内存,方式一共new了两次,sdf 原来是指向new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
在sdf = new SimpleDateFormat("yyyy-MM-dd");之后 ,sdf 就不在指向 new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");了,而是指向 new SimpleDateFormat("yyyy-MM-dd");所开辟的内存,那么new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");开辟的内存空间会被回收,因为没有引用指向它了
看上去两者并没有什么区别,其实有一个内存分配的问题,方式1,对于SimpleDateFormat的分配空间只分配了一个,方式二,分配了两个SimpleDateFormat,方式一节省个内存
求采纳啊老铁。。。。需要点金币下载资料!!!!
补充:
// 方式二
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sdf.parse(time);
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
sdf2.parse(time2);
sdf 一直指向 new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") 所开辟的内存空间,比如 0xx1
sdf2 一直指向 new SimpleDateFormat("yyyy-MM-dd"); 所开辟的内存空间, 比如 0xx2
0xx1 和 0xx2 都不会被回收 ,如果这两个对象你是在方法里创建的,方法运行结束之后 这两块内存才会被回收,
求采纳求采纳求采纳求采纳求采纳求采纳求采纳求采纳求采纳求采纳求采纳