通俗的来说Java就是以方法为单位的程序模块组成的类,java程序模块使得程序更为简洁和便于维护
package 第三章;
public class 方法的定义和使用 {
public static void main(String[] args) {
dline();//调用时才会运行
//方法与调用它的程序处于同一类则类名可以省略
System.out.println("Hi , I am Alice .");
dline();
System.out.println("I have a good friend: Jack .");
dline();
}
public static void dline() {//方法的语法定义<修饰符(包括访问控制修饰符public和类型修饰符static)> type<方法名>
for(int i=0;i<30;i++)
System.out.print("-");
System.out.print("\n");
}
}
<方法修饰符>type<方法名>(type<参数1>,type<参数2>,…){
程序语块
}
(1)访问控制修饰符(public,protected和private)
(2)类型修饰符(static,final,abstract,native和synchronized)
(3)其中static声明的方法为静态方法,可直接通过类名来调用。若该方法与调用它的程序处于同一类中,则类名也可以省略
[类名].<方法名>(type<参数1>,type<参数2>……)
方法经定义后,是不会自动执行的(main()方法除外),它需要专门的语句去调用它,只有被调用时方法才会运行。
若调用语句与方法处于同一类中,则类名可以省略
方法调用的执行过程是:Java应用程序从man()方法开始按程序流程依次执行,一旦执行到方法调用语句,便转向该方法的所有过程,直到该方法被执行完毕,程序流程回到 main0方法中的方法调用语句的下一句语句处继续执行剩下的语句。
(1)代码(求圆面积与体积)
package 第三章;
public class 参数船底求圆面积与体积 {
static double v_Circle;//声明在这里的变量
static double s_Circle;
public static void main(String args[]) {
double radius=4;
area(radius);//实际参数,调用方法
volume(radius);
System.out.println("V="+v_Circle);
System.out.println("S="+s_Circle);
}
//方法定义
public static void area (double r1) {//形式参数
s_Circle=3.14*r1*r1;
}
//方法定义
public static void volume(double r2) {
v_Circle=3*3.14*r2*r2*r2/4;
}
}
(2)知识点
当调用的方法需要传递参数时,参数通过置于方法名后的小括号内来进行传递,括号内的参数可以是数值、字符串甚至是对象。
1.常量或者变量作为参数的传递
2.数组作为参数的传递
在下面例题中,分别定义了从main()方法中获得参数(半径)值后计算面积和体积的两个方法:area()与 volumeO。在调用方法area0时,通过参数(radius)传递的方式让area中的变量r得到数据并和类型修饰 立即运算面积。volume()的调用方式与area0)是完全相同的。最后回到main()方法中输出计算
态方法,可 结果。
路。这里其他 1.变量或常数作为参数的传递
(1)知识点
v_Circle和s_Circle,用于存放计算好的面积与体积值,这类成员变量称为类变量,它们获得数据的位置是在方法area()与方法volume()中,并且要将数据带回到main()方法中完成输出的任务,因此它们的作用范围为整个类,所以类变量的声明位置应该在所有方法(包括 main(方法)的外面
与类变量不同的是:在例3.6.2 有个变量和r,这两个变量的声明位置是在方法 area()与方法volume()中的参数部分,因此它们的作用范围只在其对应方法的内部,一旦程序流程执行完了其所在的方法体,该变量将被系统自动释放,因此在其所在方法以外的位置是获取不到该变量数值的,这种类型的变量被称为局部变量。
(1)代码(阶乘)
package 第三章;
public class 阶乘 {
public static void main(String[] args) {
int mm=Mul(6);
System.out.println("6!="+mm);
}
public static int Mul(int n) {//方法体
int m=1;
for(int i=1;i<=n;i++)
m=m*i;
return m;//返回m值
}
}
(2)代码(圆面积和体积)
package 第三章;
public class 有返回值圆面积 {
public static void main(String args[]) {
double v_Circle;//声明变量
double s_Circle;
double radius=4;
s_Circle=area(radius);//使用
v_Circle=volume(radius);
System.out.println("V="+ v_Circle);
System.out.println("S="+ s_Circle);
}
public static double area(double r1) {//方法体1,面积
double s=3.14*r1*r1;
return s;
}
public static double volume(double r2) {//方法体2,体积
double v=3*3.14*r2*r2*r2/4;
return v;
}
(3)知识点
Return语句一般处于方法主体之中,用于返回方法所运算的值给调用者,即主程序,并终止方法的执行,回到调用方法的程序。当系统在执行方法主体中的语句时,一旦遇到return 语句的定义便立即结束该方法的运行(即不再执行 return语句后面的语句),并且将该方法的运行结果(返回值)返回到代码中调用它时的位置。
(1)代码(计算C63)
package 第三章;
public class 组合 {
static int Mul(int n) {//方法Mul
int m=1;
for(int i=1;i<=n;i++)
m=m*i;
return m;
}
static int cc(int m,int n) {//方法cc
return Mul(m)/(Mul(n)*Mul(m-n));//调用方法
}
public static void main(String args[]) {//主函数main
System.out.println("C(6,3)="+cc(6,3));
}
}
(2)代码(嵌套实现圆面积)
package 第三章;
public class 嵌套实现圆面积 {
public static void main(String[] args) {//主函数main
double radius=4;
area(radius);
volume(radius);
}
public static void area(double r1) {//方法area
double s=3.14*r1*r1;
display("area",s);//调用方法display
}
public static void volume(double r2) {//方法volume
double v=3*3.14*r2*r2*r2/4;
display("volume",v);//方法display
}
public static void display(String st,double x) {//方法display
System.out.println(st+"="+x);//输出格式
}
}
(1)代码(求10的递归)
package 第三章;
public class 递归 {
static long Fact(int n) {//方法的定义
if(n==1)
return 1;//返回值为1,即Fact(1)=1
else
return n*Fact(n-1);
}
public static void main(String args[]) {//主函数,先执行主函数,在回去执行方法
int n=10;
System.out.println(n+"!="+Fact(n));
}
}
(2)代码
(3)知识点
递归结构主要包括:
1)可以把一个问题转化为一个新问题,而新问题的解决方法仍与原问题解法相同,只是处理的对象有所不同,但它们应是有规律可循的。如对阶乘问题,当n>1时,n!问题可转化成(n-1)!的问题,而(n-1)!的问题又可转化为(n-2)!的问题,它们之间的转化规律为j!=j(j-1)!(1
2)必须要有一个明确的结束条件,如当n=1时n!=1,在此称为递归终止条件,不然的话,递归将无休止地进行下去。当n=1时得到递归终止条件:1!=1,则按照递推公式我们就可以求运行结果 得2!,如此回推,直到求得n!的值,这个过程称为回归。
因此递归实际上就是递推与回归的结合。