Java:声明对象或整数时

标签 java object declare

在java中创建对象(或任何东西)时,做和做的区别是什么,例如,

Dog d = new Dog();

而不是做

Dog d;

然后,用

完成它(有时在方法内部和方法的开头)
d = new Dog();

第一个不是更简单更容易吗?为什么人们会采用第二种方式?

最佳答案

考虑以下场景。假设 Dog 的构造函数可以抛出异常:

try {
    Dog d = new Dog();    
} catch(Exception ex) {
    // treat exception
}

d.bark();

这不会编译,因为 dtry 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/

相关文章:

java - 无法理解正则表达式拆分字符串的结果

java - 重复扫描仪临时创可贴? ( java )

java - JPQL 查询转换为 SQL 查询

Javascript动态选择构造函数,这是不正确的吗?

android - 哪个才是真正的androidmanifest.xml?

与结构的混淆以及如何在 C 中使用指针存储值

java - 在java中将字符串转换为java.Security.Publickey

python - 在Python中使用ctypes访问DLL返回的对象的内容

c# - 拆箱后无法访问类(class)成员

c - 在 C 中声明 void 函数