一. Day4内容的题目练习
注意:分数的结果是小数,因此需要用double类型变量来接收。且计算的时候注意int / int =int,而double / int = double。
注意:Math.pow(x,y)函数的返回值是double类型.
思路:
补充知识:一个技巧:如下图所示,最高位之后也有、如何才能将这个顿号去除
思路:通过操作
注意:下面的代码在上题中多加了一部,如果三次均错,则输出输入达上限,请明天再来
for循环实现方法:
while循环实现方法:
二. java中的函数
1. 为什么要定义函数
2. java中函数定义语法
(1)修饰符 返回值类型 函数名称 (参数类型 形参名称,..... ){}
(2)public static 返回值类型 函数名称(参数类型1 形参名称1,参数类型2 形参名称2....) {}
//注意1:函数定义中的形参之间用逗号分隔
//注意2:如果没有返回值则返回值类型写void,可以不写return语句,但若写return语句,则在return语句中不能返回其他类型的值,只能单写一个return,提前结束函数调用
//注意3:有没有返回值以及返回值的类型由函数的语义决定,具体问题具体分析
//注意4:函数的定义必须在类中定义,不能在其他函数中定义。java中没有函数声明的概念,定义一个函数必须写函数体的实现。
//注意5:函数的命名采用小驼峰命名法
//注意6:修饰符统一先使用public static
//注意7:函数在调用的代码前定义和调用的代码后定义没有区别都能运行(java是根据函数名称和函数的形参类型和个数来寻找函数的)
(3)例题:
用户输入一个真整数,判断这个数字是不是素数
例题1:
检测一个年份是否为闰年
例题2:
实现两数相加的方法
例题3:
//例题3:定义一个函数,传入一个参数,求出该数的阶乘值
//使用factor函数计算从1!+...+5!
3. 函数的调用:函数名称(参数)(注:参数的个数和类型要满足定义的函数的类型否则报错)
例子:输出1-100的所有素数,使用上面的isPrime函数
注意:由于定义1不是素数,因此i从2开始循环
4. 函数的形参与实参
(1)形参:函数定义时的参数称之为形参,此时不知道具体值,只知道类型
(2)实参:函数调用时候传递的参数称之为实参,此时知道具体值
(3)方法中实参和形参的关系(重点):实参和形参是两个相对独立的变量,实参赋值给形参只是把实参的值拷贝一份给形参(只是值传递),下图以交换函数举例
原理:函数的调用和执行的过程,使用操作系统的函数调用栈(先进后出)。每一个函数对应一个栈帧(存储对应函数的形参和局部变量)。每个函数的调用就对应一个栈帧的入栈和出栈过程。如下图所示a和b是在main函数中,而x,y是在swap函数中,而函数的调用只是简单的赋值。swap函数运行调用x,y的值,swap函数结束调用后x,y被销毁。而a,b的数值不受影响。
解决方案(数组解决)
5. 函数调用的执行过程
三、方法重载(overload)
1. 定义:
(1)在同一个类中定义
(2)若干方法名称相同,
(3)参数列表不同(参数类型或参数个数不同)
(4)与返回值无关
这样一组方法称为重载方法
2. 意义所在(应用场景)
(1)定义多个函数缺点(如下图)
(2)方法重载优点