第一章 方法
1.1 什么是方法
方法就是一个功能模块的集合。将很多行代码放置在一组{} 中,形成一个代码块。
1.2 为什么要使用方法
提高代码复用性
提高代码维护性
提高代码延展性
1.3 如何使用方法
1.3.1 方法的声明
//[]内可写可不写 {内必须写}
[修饰符] [static] {void|数据类型} 方法名称([参数列表]){
执行语句;
}
public static void method(){
System.out.println("这是我的第一个方法");
}
1.3.2 方法的使用
public class Method01 {
public static void main(String[] args) {
//告诉jvm 去执行method方法
method();
}
public static void method() {
System.out.println("我的第一个方法");
}
}
1.3.3 方法的命名规则
遵循标识符命名规则 首字母小写 驼峰原则 其他单词首字母大写
1.4 参数列表
方法可以接收参数完成方法
public static void method(int n)
参数列表声明在方法名后的小括号中,可以声明0个或者是多个。
参数的注意事项:
方法声明的参数为形式参数 只在方法内有效
调用进入的参数为实际参数 不只在方法内有效
方法声明的参数列表中只存在声明 不需要初始化就可以使用
方法调用者而言。在调用方法时不能只看方法名称,而且还需要查看方法的参数列表
在一个类中确定方法通过方法签名完成。方法签名(方法名称+参数列表)
对于参数列表而言,具体的参数类型、个数、顺序都有一定的要求,要求取决于业务逻辑
变量的分类
变量的三要素:数据类型、变量名、生命周期(作用范围)。
按照变量声明的位置的不同,将变量分为局部变量, 成员变量(全局变量、对象变量、实例变量)
局部变量:
定义在方法中或者是代码块中的变量,称之为局部变量,局部变量的生命周期只能在声明的{} 中有
效。出了这个位置就没有任何效果。方法的参数列表中的变量属于当前方法的局部变量。
优势:
1:缩减了变量的生命周期。
2:提高内存的使用率,降低内存开销
成员变量:
声明在类中,方法外的变量称之为成员变量。
成员变量可以不初始化就能够直接使用:
所有的整数(byte、short、int、long) ----> 默认值是0
所有的小数(float、double) -----> 默认值是0.0
字符类型(char) -----> 默认值是空格 ( \u0000 )
boolean 类型 ------> 默认值是false
所有的引用类型的默认值 ------> 默认值是null
1.5 返回值
用return语句返回给调用位置的值
被调用的方法可以将自己最后的计算结果返回给调用处,方便后续的业务逻辑执行。返回值对于某些方
法而言是极其有必要的。
public class Method06 {
public static void main(String[] args) {
int r = 10;//1:
double area = getCircleArea(r);//2 //8
}
public static double getCircleArea(int r) {//3
double pi = 3.14;//4
double area = pi*r*r;//5
System.out.println("半径"+r+"的圆的面积是:"+area);//6
return area;//7
}
}
1.6 如何定义方法
尽可能功能单一
目的是提高代码复用性
多练习
1.7 方法的重载
方法可以重名 java判定方法重复是名字和参数两者一起判定的。
两同三不同:同类 同名 参数列表不同(个数、类型、顺序) 注意返回类型和重载无关。
jvm中是名字和参数加返回值三者判定。
1.8 递归
递归是一种编程技巧,程序中自己调用自己。在递归程序中最重要的问题是:何时出递归程序。
在递归程序中存在一个出口–>递归头。
递归程序的最大优势在于编写时简单。
阶乘递归:
public static int fun(int n) {
if(n==1) {
return 1;
}
return fun(n-1)*n;
}
斐波那契递归:
public static int method(int n) {
if(n==1||n==2) {
return 1;
}
return method(n-1)+method(n-2);
}
递归特别慢
优化递归:
public static int fun(int n,int a){
if(n==1)
return a;
return fun(n-1,a*n);
//创建个参数把值带到下层递归 这样就不用等待返回
}
public static int fun(int n,int a){
if(n==1)
return a;
return fun(n-1,a*n);
//创建个参数把值带到下层递归 这样就不用等待返回
}