bobo老师,在自己实现的时候碰到了一个java语法问题

来源:7-7 基于二分搜索树的映射实现

Declee

2019-10-08

图片描述
bobo老师,在我自己实现这个结构的时候,发现如果在横线处有
if的话,会报错,但是把if删掉变成else的时候就不报错了.我猜想是因为当方法有返回值的时候,条件判断要满足所有可能出现的情况,所以需要else兜底,而当没有else的时候就可能出现有些条件没有返回值的情况,所以会报错,以上是我的猜想,不知道是不是这个原因呢.
另外bobo老师,else if这个结构一定要用到嘛?我发现全都用if的话也不会报错,感觉else if 和if完全可以互相替代(这些问题都是java基础语法问题,按理来说不应该在这儿提问,但还是希望老师可以随便答一下,麻烦老师了)

写回答

1回答

liuyubobobo

2019-10-08

如果是 else if,因为有 if,需要加条件:else if(什么条件)


else 的意思就是除了上面判断的条件之外的所有其他条件。


在这个例子中,确实可以不用 else if,因为一旦进了某个 if,直接 return,没有机会进入下一个 if。


但是,else if 和 if 不等价。比如:

int a = -100;
if(a < 0) System.out.println("a");
else if(a < 10) System.out.println("b");
else if(a < 100) System.out.println("c");


int a = -100;
if(a < 0) System.out.println("a");
if(a < 10) System.out.println("b");
if(a < 100) System.out.println("c");


输出不一样。


试试看?研究一下为什么不一样?:)


加油!:)


0
3
Declee
回复
liuyubobobo
好的谢谢bobo老师!
2019-10-08
共3条回复

玩转数据结构

动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…

6221 学习 · 1704 问题

查看课程