switch 中变量的生成和回收
来源:4-8 项目作业
RobertDuran
2020-03-06 23:20:16
switch (i){ case 1: Book book = new Book(); break; case 2: book = new Book(); break; }
变异不会出问题,但是如果代码运行时没有到case 1 的分支的话是否会报错?能否讲解下switch中变量生成的存储和释放的逻辑?
2回答
同学你好,
1、如果 i = 2,逻辑上来讲val的定义和初始化会跳过(都在case1中)那么case2 的赋值语句应该要报错,但是为什么编译没有错误。 那么val是在什么时候定义为int的呢?
不应该报错,val是在case1时就已经被定义好了,即使跳过了case1
,
2、如果变量不是基础类型而是对象的话,有什么不同呢?
同学是指如下这种吗?老师在这里并没有赋值,以空举例:
如果是以上这种,可以发现并没有区别。
3、switch case 下面语句块中变量的生存周期是什么样的呢?
在case语句中定义局部变量,它的作用域为它所定义的地方到它所在的语句块结束为止。
如果我的回答解决了你的疑惑,请采纳,祝学习愉快~
好帮手慕小脸
2020-03-07
同学你好,如果代码运行时没有到case 1 的分支的话是否会报错?
同学是指如下这种吗?
如果是,可以看到没有到case1并不会报错。
2、能否讲解下switch中变量生成的存储和释放的逻辑
老师未能理解同学的意思,同学可附上代码或截图,方便老师及时解决问题。
如果我的回答解决了你的疑惑,请采纳,祝学习愉快~
相似问题
回答 1
回答 8