对象的创建

object obj = null; --1
obj = new object();

object obj_1 = new object(); --2

帮我介绍下着两种的区别;我遍历时老是创建对象,遍历的次数挺多的,上述两种方法哪种更加节约资源!

转载:

Java代码

  for (int i = 0; i < 10000; ++i) {

  Object obj = new Object();

  System.out.println("obj= " + obj);

  }

  上面的做法会浪费较大的内存空间。正确的做法如下所示:

  Java代码

  Object obj = null;

  for (int i = 0; i < 10000; ++i) {

  obj = new Object();

  System.out.println("obj= "+ obj);

  }

  采用上面的第二种编写方式,仅在内存中保存一份对该对象的引用,而不像上面的第一种编写方式中代码会在内存中产生大量的对象引用,浪费大量的内存空间,而且增大了垃圾回收的负荷。因此在循环体中声明创建对象的编写方式应该尽量避免。

object obj = null; --1
obj = new object();

object obj = null; --1
obj = new object();

这种代码比较好点,节省空间

直接上字节码
1、
Object o1 = new Object();

0: new #2; //class java/lang/Object
3: dup
4: invokespecial #1; //Method java/lang/Object."":()V
7: astore_1

2、

Object o1 = null;
o1 = new Object();

0: aconst_null [color=red] //会先存个null[/color]
1: astore_1
2: new #2; //class java/lang/Object
5: dup
6: invokespecial #1; //Method java/lang/Object."":()V
9: astore_1
10: return

使用上的问题,别纠结。
1、@kayban 说的情况;

理论上第一种必然要好一点。不过个人感觉两种做法差不多,可能要看你循环的次数吧。引用相比于对象要小很多,就是个零头,引用是在栈里,而对象是在堆里。大家平时都说避免在循环体中创建对象,因为创建对象的消耗比较大。