关于java:确定方法不返回null之后,是否最好在方法中初始化对象?

Is it better to initialize an object in a method after we are sure the method doesn't return null?

我有一个方法,如果满足参数的条件,则可以返回null。例如

1
2
3
4
5
6
7
8
9
10
11
12
public static ObjectA newObjectA(String param) {
    ObjectB objB = new ObjectB();
    ObjectA objA;

    if (param == null) {
        return null;
    }

    // do something else

    return objA;
}

如果在检查空if (param == null)之后移动objB的初始化是否更好?就像这样:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public static ObjectA newObjectA(String param) {
    ObjectB objB;
    ObjectA objA;

    if (param == null) {
        return null;
    }

    objB = new ObjectB();

    // do something else

    return objA;
}

在避免objB的内存使用方面是否有任何改进?还是在检查像这样的null参数后移动对象的声明,这会更好吗?

1
2
3
4
5
6
7
8
9
10
11
12
public static ObjectA newObjectA(String param) {
    if (param == null) {
        return null;
    }

    ObjectB objB = new ObjectB();
    ObjectA objA;

    // do something else

    return objA;
}

谢谢你们。


这种方法更好-

1
2
3
4
5
6
7
8
9
10
11
12
public static ObjectA newObjectA(String param) {
    if (param == null) {
        return null;
    }

    ObjectB objB = new ObjectB(); // Occupied the memory required by for member variables of ObjectB along with the references
    ObjectA objA; // Occupy 4 bytes or 8 bytes as explained below.

    // do something else

    return objA;
}

因为未初始化的对象虽然不占用太多内存,但是它们确实占用了存储其引用所需的大量内存。在32位系统上,此内存为4字节;在64位系统上,此内存为8字节。