在java中创建对象(或任何东西)时,做和做的区别是什么,例如,
Dog d = new Dog();
而不是做
Dog d;
然后,用
完成它(有时在方法内部和方法的开头)d = new Dog();
第一个不是更简单更容易吗?为什么人们会采用第二种方式?
最佳答案
考虑以下场景。假设 Dog
的构造函数可以抛出异常:
try {
Dog d = new Dog();
} catch(Exception ex) {
// treat exception
}
d.bark();
这不会编译,因为 d
在 try
block 之外是不可见的。你需要做的是:
Dog d = null;
try {
d = new Dog();
} catch(Exception ex) {
// treat exception
}
if(d != null) d.bark();
像这样的情况还有很多。例如,您可能有一个 if-else block ,其中 d
根据某些条件进行不同的初始化:
Dog d = null;
if(/* condition */)
d = new Dog("Lassie");
} else {
d = new Dog("Sam");
}
d.bark();
关于Java:声明对象或整数时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8948519/