对课上问题的探究和思考2
所谓编程思维
在工程繁杂的项目里面,为了使得项目能够尽早地完成,不能只像愚公那样,一条路子走到底;而是要像李冰那样,学会去利用团队去更好地分配工作,更好地完成任务,这大概就是为什么“愚公移山”只存在在童话世界里面,而都江堰颇负盛名的原因了。
就像学习Java一样,不能只用一个方法走到底,不具有很好的可读性;这就要求我们在编程之前,需要理清楚自己的思路,将脑子里面的书整理好,才有了顺利地完成编程任务的前提。
当然,除了清晰的编程逻辑和灵活的编程思维之外,少不了平日里的练习
详解方法
1、JDK中的Math类
举例:Demo:TestMath.java中文件中的例子
其中,已知Math类中提供的均为静态方法,所以在主函数中可以直接调用;
那么,静态方法和非静态方法的区别是什么呢?
经过查找相关资料,可以得知,非静态方法在定义时并未分配内存,只有在调用该方法时才被分配内存;而静态方法在定义时就已经分配了内存
经过实验查证:静态方法只能调用静态成员或者方法;而非静态方法既能够调用非静态成员或者方法,也能能够调用静态成员或者方法
若是强行利用静态方法调用非静态成员或者方法,则会出现以下情况:
2、使用静态导入
所谓“静态导入”,即在导入类名时,import代表省略写包名,import static 代表直接省略类名
如下图所示:
同时也相当于一种全局变量:
举例:SquareInt.java 如图所示:
自定义了一个求平方数的静态方法
自定义Java方法示例,随机数生成方法示例:
一般使用方法:(int)(Math.random()*6)----代表从0到5的取值范围
示例:RandomInt.java
通过该示例,已了解并掌握随机数的生成方法
示例:使用Random类生成随机数
文件一:Demo:TestRandom.java
以此洒下随机数的种子,根据不同的数据类型得到不同种类的随机数值
文件二:Demo:TestSeed.java--以当前时间为随机数的种子进行生成随机数的操作
Random r=new Random(System.currentTimeMillis());
由图中结果可知:种子相同时,得到同一个随机数的概率较大,即随机数不一定永远随机,在次数增多的同时,随机数的取值可能会趋向于某一个数值
在使用当前时间作为种子时,随机数重复的概率较小,最好的“种子选手”
示例:随机数应用:RollDie.java--模拟骰子滚动的统计结果,并不是绝对平均的
3、动手动脑:编写一个实现纯随机数发生器
对了,别忘记将有关代码存储起来哦!放到一个代码仓库里面,那可比在搜索引擎里面的书海查找资料方便太多了!
4、示例:参数可变的方法--VariableArgumentsTest.java
...用在变量和变量名之间,前后有无空格均可
隐含创建一个数组,在方法体中以数组的形式访问可变参数
5、动手动脑--Demo:MethodOverLoad.java
这两个方法名相同,但是用途不同,一个承载int类型,一个承载double类型,参数个数相同,但能够区分
上述所示,即为“方法重载”--方法名相同,参数类型不同 or 参数个数不同 or 参数类型的顺序不同
注意:方法的返回值不作为方法重载的判断条件
发现:![](https://img2022.cnblogs.com/blog/2808014/202209/2808014-20220917162852167-281688532.png)
它是一个静态方法,只能在main中使用
6、递归
简言之:自己调用自己,但有调用循环的退出条件
示例:Demo:CalculateN.java---求n!
递归:先从大到小,再从小到大;
规模逐渐递减;
必须要保证递归调用的过程可以终结
每个递归函数的开头一定是判断递归结束条件是否满足的语句
至少有一句是“自己调用自己”的
一定有一个控制递归可以终结的变量
递归:----->------->------>|
<----<-----<----<----|
递推:---->----->----->---->
7、处理大数字与浮点数
计算机中的基本类型处理起来数据,它们的大小是有限度的,因此无法处理较大的数字和并不精确的小数