yanhui007 发表于 2008-2-4 13:59

请教: IF(){}ELSE{}的问题

本人对IF()}ELSE IF{}有一问题不清楚想请高手解释:
TreeNodeBase two;
if (organization2.getType().equalsIgnoreCase("department")) {
two = new TreeNodeBase("rootNode-link",
organization2.getName(), false);
} else if (organization2.getType().equalsIgnoreCase("subbranch")) {
two = new TreeNodeBase("rootNode", organization2.getName(), false);

} else {
two = new TreeNodeBase("rootNode-link2",organization2.getName(), false);
                }
two.setIdentifier(organization2.getOid().toString());

象上面的代码: TreeNodeBase two ;这样定义就可以了

但是如果条件变成
if (organization2.getType().equalsIgnoreCase("department")) {
two = new TreeNodeBase("rootNode-link",
organization2.getName(), false);
} else if (organization2.getType().equalsIgnoreCase("subbranch")) {
two = new TreeNodeBase("rootNode", organization2.getName(), false);

}

必须要初始化TreeNodeBase two =???

不知道为什么???

想你的天空 发表于 2008-2-8 06:46

思路不清楚吧?  要测试这个知识点可以简单一点实验呀

farain 发表于 2008-2-10 16:23

如果是在方法内声明的变量,则必须进行变量的初始化,即赋初始值。

huangl89 发表于 2008-2-13 09:23

呵呵,我是新手我说说看法行不?不知道我理解得对不?

TreeNodeBase two;这名已经说明了two 是 TreeNodeBase类了;
所以你只要NEW 一个对象出来就可以了;

但是下部份的语句,two什么都不是,所以要先初始化;

huwangvs 发表于 2008-2-14 10:21

局部变量必须要赋值。这个肯定都知道。
就是这个原因。
楼主的第一个程序,无论发生什么情况。two都能被赋值。
而第二段代码,如果一二两个条件都不满足的话,two就没有值了。这是不允许的,所以就要先给two初始化了。。。

hwoarangzk 发表于 2008-2-14 10:34

LS正解,if else必须要列出所有可能的情况,就是说有if必须要有else才行,不然没有值

页: [1]

编程论坛