1、函数的定义
什么是函数?
函数就是定义在类中的具有特定功能的一小段独立的代码,也称为方法。
函数格式:
修饰符 返回值类型 函数名称(参数类型 参数1,参数类型参数2, . . . ){
函数执行代码;
return 返回值;
}
eg:
public static int addFunc(int a,int b){
return a+b;
}
返回值类型:函数运行后的结果类型
参数类型:是形式参数的数据类型
形式参数:是一个变量,由于存储调用函数时传递给函数的实际参数
实际参数:传递给函数的具体值
return:用于结束函数
返回值:函数运算后的结果值,该值会返回给该函数的调用者
注意:当函数没有返回值类型是用void来表示
如果返回值类型是void,name函数中的return语句可以省略不写
例如:
public static void sout( int a){
System.out.println(a);
}
2、函数的特点
定义函数可以将功能代码进行封装使用
便于对该功能进行复用
函数只有被调用时才会执行
函数的出现提高了代码的复用性
注意:
函数中只能调用函数,不可以在函数内部定义函数。
定义函数时函数的结果应该返回给调用者,交给叫用着处理。
3、函数的应用
定义函数的两大原则:
(1)明确函数的功能结果是什么,确定函数的返回值类型。
(2)明确这个功能实现过程中是否需要未知内容参与运算,这就是函数的参数列表(参数的个数,参数的类型)。
示例:
/*
需求1: 定义一个功能,完成两个整数的和的获取。
思路:既然定义功能,就是可以用函数来体现。
如何定义一个函数呢?
通过两步骤完成。
步骤一:这个功能的结果是什么?
是和--->返回值类型是int 。
步骤二:这个功能实现过程中是否需要未知内容参与运算?
有,加数和被加数
注意:返回值类型和参数类型没有直接关系。
*/
public static int myAdd(int a,int b)
{
int sum = a+b;
return sum;
}
/*
需求2: 定义一个功能,画一个矩形在控制台。
步骤一:这个功能的结果是什么?
没有结果----> void
步骤二:这个功能实现过程中是否需要未知内容参与运算?
有,行和列不确定----->(a int,b int)
*/
public static void myDraw(int row,int col)
{
for (int x=1; x<=row ;x++ )
{
for (int y=1;y<=col ; y++ )
{
System.out.print("*");
}
System.out.println();
}
}
/*
需求3: 定义一个功能,比较两个数是否相等。
步骤一:这个功能的结果是什么?
有 ----> boolean.
步骤二:这个功能实现过程中是否需要未知内容参与运算?
有 ----> (int a,int b)
*/
public static boolean myEquals(int a,int b)
{
/*
if(a==b)
return true;
else
return false;
boolean x ;
if(a==b)
x = true;
else
x = false;
return x;
*/
// return (a==b)?true:false;
return a==b;
}
4、函数的重载
函数的功能是一样的,只是参与运算的未知内容不同时,可以定义多个函数,使用同一函数名称,虚拟机通过参数列表的不同来区分同名函数。
(1)概念:在一个类中允许存在一个以上的同名函数,只要他们的参数个数或者参数类型不同即可。
(2)特点:与返回值类型无关,只看参数列表
(3)好处:方便阅读,优化程序设计
示例:
package com.home.study.function;
/*
函数重载:
1、同一个类中
2、同名称
3、参数个数不同,或者参数类型不同
4、与返回值类型无关
*/
public class FunctionDemo {
public static void main(String[] args) {
int a=3;
int b=5;
int c=7;
// a+b
int sum=0;
double sum_d =0.0;
sum = add(a, b);
System.out.println(sum);
sum = add(a, b, c);
System.out.println(sum);
sum_d = add(a, b);
System.out.println(sum_d);
}
public static int add(int a, int b){
return a+b;
}
public static double add(double a,double b){
return a+b;
}
public static int add (int a, int b,int c){
return a+b+c;
}
}