函数:也可以叫做方法,函数是对功能代码块的封装。
(1)定义在类中,有特定功能的一段小程序,可以提高代码的复用性和维护性。
(2)函数的格式:
修饰符 返回值类型 函数名(形参类型 形式参数1,形参类型 形式参数2...)
{
函数体;
reutrn 返回值;
}
A:修饰符:方法的修饰符比较多,有对访问进行限定的。
如静态修饰符static,最终修饰符final等等。
B:返回值类型:用于限定方法返回值的数据类型,程序最终结果的数据类型。
C:函数名:其实就是函数的名称,方便我们调用。
D:参数
形参类型 数据类型
形式参数 就是接收实际参数的变量
实际参数 就是实际参与操作的变量(常量)
注意:如果方法不需要接收任何参数,则参数列表为空,即括号内()不写任何东西。
E:函数体:就是按照正常的逻辑完成功能的代码。
F:返回值:就是程序的最终结果。返回值的类型必须为方法返回值类型,如果方法中
没有返回值,返回值类型要声明为void。
G:reutrn 返回值 哪里调用程序,return就把结果返回到哪里。
函数其实是有关键字return让他结束的。
注意:void类型的函数,其实最后一行。默认有一个return;但是省略了。
(3)函数的特点:
A:函数与函数之间是平级关系。不能在函数中定义函数。
因为函数体是完成功能的代码是由语句组成的,
所以里面可以由顺序执行语句 选择语句 循环语句 等 各种语句
B:运行特点 函数只有被调用才执行。
(4)案例:
有明确返回值的例子:
A:求两个数据的和
public static int sum(int a,int b)
{
return a+b;
}
B:求两个数据的最大值
public static int getMax(int a,int b) //形式参数,形式参数
{
return a>b?a:b;
}
C:比较两个数是否相等
public static boolean compare(int a,int b)
{
return a==b;
}
void类型例子:
A:nn乘法表
B:根据给定的行和列输出一个*组成的长方形
public static void printChangFangXing(int row,int col)
{
for(int x=0; x<row; x++)
{
for(int y=0; y<col; y++)
{
System.out.print("*");
}
System.out.println();
}
//return;void的只有默认return,没有返回值,通常省略
}
(5)函数的调用
A:有明确返回值
a:单独调用:一般没有意义。
b:输出调用但是如果想拿结果继续操作,就有问题了。所以,不好。
c:赋值调用:推荐方式。首先看函数,返回值类型是什么,你就用什么类型接收。
B:void类型
单独调用。compare(x,y);
// A.举例说明
class Demo1
{
public static void main(String[] args)
{
int x = 10;
int y = 20;
/*单独调用
compare(x,y); 结果是:30,但是程序没有输出*/
System.out.println(compare(x,y)); //输出调用
//赋值调用
int a=copare(x,y);
System.out.println(a);
}
public static int compare(int x,intx)
{
return x+y;
}
易错题:注意参数传递时的内存变化
class Demo
{
public static void main(String[] args)
{
int a = 10;
int b = 20;
System.out.println("a:"+a+",b:"+b); //a=10, b=20
change(a,b);
//这里要谨记,上一句虽然调用了函数,但是一调用完在内存就给处理掉,ab给释放了。
System.out.println("a:"+a+",b:"+b); //a=10, b=20
int[] arr = {1,2,3,4,5};
change(arr);
System.out.println(arr[1]); //arr[1]=4
}
public static void change(int a,int b)
{
System.out.println("a:"+a+",b:"+b); //a=10, b=20
a = b;
b = a + b;
System.out.println("a:"+a+",b:"+b); //a=20 , b=40
}
public static void change(int[] arr)
{
for(int x=0; x<arr.length; x++)
{
if(arr[x]%2==0)
{
arr[x]*=2;
}
}
}
}
|
|