程序模块化和可重用性是软件工程的中心目标之一。Java提供了很多有助于完成这一目标的有效结构。函数(方法)就是一个这样的结构。
函数
为什么要有循环?
将重复性的代码进行封装 避免代码冗余
函数主要解决 功能行代码 重复的问题
功能行代码:该段代码具有独立的小功能
函数的定义格式
访问修饰符 函数类型 返回值类型 函数名(参数列表){
函数体;
return 返回值;
}
具体一下:
1、访问修饰符:public protected 默认 private
2、函数类型:static静态函数 Synchronized同步函数
native本地函数 默认 成员函数
3、返回值类型:函数的计算结果(返回值)是什么类型 这就是什么类型(向下兼容)
4、函数名:对该功能的定义
5、参数列表:参数类型1 参数名1, 参数类型2 参数名2,…
6、函数体:只的就是具体的代码实现细节
7、return:仅仅表示结束当前函数(弹栈) 如果有返回值则返回
8、返回值:如果没有返回值 返回值类型void
返回值一次只能返回一个值
public static int pow(int x,int n){
int res=1;
for(int i=1;i<=n;i++){
res=res*x;
}
return res;
}
上面的程序就是一个简单的函数。
当程序调用一个函数时,程序控制就转移到被调用的函数。被调用的方法执行到该方法的return语句或到达方法结束的右括号时,将程序还给调用者。
在函数中声明的变量称作局部变量。局部变量的作用域是从声明它的地方开始,到包含这个变量的块结束为止。局部变量在使用前必须声明和初始化。
参数列表是指方法中参数的类型、次序和数量。函数名和参数列表一起构成方法签名。参数是可选的,也就是说,一个函数可以不包含参数,对于参数和返回值,具体的分为以下几种情况:
有参有反:正常情况
有参无反:
无参有反:函数内部一般操作的是全局变量
无参无反:
对于无返回值的函数而言 不能输出 不能赋值 不能参与计算 只能调用
对于有返回值的函数而言 都行 也可直接调用
函数重载(多态的表现)
重载的表现就是同一个类中 有多个同名函数
public static int add(int a,int b){
return a+b;
}
public static double add(double a,double b){
return a+b;
}
两个函数参数数量和次序都是一样的,但是定义参数的类型不同,一个是int型,一个是double型,这就是一个明显的函数重载。
如何区分重载?
主要看参数类型的排列组合(顺序,个数)
Java提供的常用的函数有Math工具类、String类,里面就有函数重载。