标签:学c语言 引用 关系 左右 传递 存在 字符串 lse ora
学习了第十一章“异常”和第十二章“递归”。自己思考后总结如下:
throws()
关键字,方法体中用throw
来抛出可能发生的异常。try()catch(){}
语句块中可以有多个 catch(){}
字段,分别来对应处理可能会出现的错误。try()catch(){}
字段,则代表:对相应的异常进行了捕获并处理 ,那么异常发生后面的程序也可以被执行。反之,如果没有try...catch
字段则一遇到异常就会终止这段程序的运行,如果是被调用的则转向调用的方法那里,如果是main方法就直接结束整个程序了,并且打印出栈调用的轨迹和相应的异常信息。if-else
语句,用if-else
其中某个分支来处理基础情形(base case)的情况,另外一个分支负责来调用自身。throws
关键字和throw
的区别,还有try-catch
语句块。问题的详细描述如下:什么时候需要用到throws
?用在哪里?throw
关键字也是有同样的问题?很明显的一个就是,好像在使用java自带的又可能出现异常的方法的时候就不需要用到throws
和throw
关键字了,如果要捕获异常得用到try-catch
语句块。但是,如果你自己编程序来自定义一个自己想要的必检异常,那么则需要用到throws
关键字来附加到函数名字的尾部,同时,在会发生异常的部分来使用throw
关键字来抛出异常。同理捕获得用那个语句块。throws
和throw
,这两个关键字。throws
是用在方法名的后面 throws xxxxException
,这个方法就是那个可能会出现异常的方法。而throw
关键字是用在这个方法体之中,通常是在一个if-else
的某一个分支中,这个分支对应了出现了异常时应该进行的操作,即:使用throw
关键字来抛出异常类对象。异常类是你自己自定义的异常类xxxxException
。定义这个异常类时注意是用到extend
关键字来继承Exception
类的。"DONE" != str_input
有问题的,我发现我输入的"DONE"字符串str_input
根本和不等号的右边 "DONE" 是不等的。然后就知道了,什么是对象的别名,什么是对象的引用,我上图程序中的做法是在比较 str_input
这个 “门牌号” 会不会等于DONE,这当然永远不等啊!而我的初衷是想比较 str_input
这个“门牌号”对应的房间里住着的内容是不是DONE
,不是来比较“门牌号”的。 所以正确的做法如下图:这里充分体现了“门牌号”的概念,而且我自己编了一个程序,所以对书上之前讲的一点内容有了更深入的理解:自己编的程序如下图所示:
实际上,字符串常量str3
就是一个给门牌号赋值的过程,它使得str3这个门牌号就是Hello,而不是像str1或者str2那样的数字门牌号,所以那一条语句才是真的。
书上的内容如下:
由此可见:在比较对象时,“ == ” 是用来判断这个关系操作符左右两边的“门牌号”是否是贴在一个房间的门上,如果这两个门牌号对应是两个单独的房间则是不等的,只有两个门牌号贴在同一个房间上才是等的。
所以,比较字符串对象内容是否是相等的,只能调用方法equals()
,不能用关系操作符 “==”, 这是和面向过程编程不同的!
length 是一个局部变量,每次递归调用时都会重新初始化,并且返回时,也能够正常返回到原来的初始值。但是 n 就不一样了,n是一份成员变量,我每次递归调用getValue()
方法时,n的确初始值是对的,因为有 n = number
,每次递归调用时的 number
是在变化的,但是递归返回时,就有问题了,递归返回时,因为n 是成员变量,所以你在 getValue()
方法中对 n 进行的操作都会被保存着,它并不像形参 number 那样对实参没有影响,n并不能回到调用它时侯的方法。
这一点通过Debug也能看出来,所以,在用递归编程时候,尽量去用局部变量,而不是去用成员变量。
next()
。str_input
变量名。这一次的学习让我对递归有了更深的了解,同时也反映了我以前基础不扎实的事实。但是,自己能够编写程序来验证自己的猜想,是一个很不错的做法。就是想自己来猜想 ==这个运算符的时候,一开始还没有反应过来这是门牌号的差异。所以就想着自己编个简单的程序来验证一下 == 真的不能用来比较相等吗?一编程序,发现真的不对,然后就去反思了。所以,以后出现了问题,真的可以尝试编一个简单的小程序来验证自己的想法。
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第七次 | 2329/5000 | 1/18 | 无记录 | 递归和验证的方法思想 |
标签:学c语言 引用 关系 左右 传递 存在 字符串 lse ora
原文地址:https://www.cnblogs.com/alan6y/p/10263368.html