在Java里的方法即是C语言中的函数,那么什么是方法/函数?作用又是什么呢?先看下面这组代码:
可以看到代码中的循环和打印语句有重复(
冗余
):
这里有的初学者想到了
Ctrl c
+
Ctrl v
解决。
但是!!!↓
方法/函数:
执行某一段特殊功能的一段代码,并且通过名字(方法名/函数名)反复使用
。
有些代码功能实现冗余,降低程序的可维护性 降低程序可读性;方法/函数可以完美的解决。
方法/函数的定义位置:
定义在类以内,其他函数以外(与main函数并列)。
方法/函数的语法:
class 类名{
// main函数
// 自定义的函数
public static void 函数名(){
// 函数的实现\函数体
}
}
注意:
public static void 函数名() →函数的声明
{} →函数实现
注意:函数名望文生义、驼峰命名(第一个单词首字母小写,其余单词首字母大写。
参数的定义及使用:
(形参)
(1) 形式参数:定义在函数名()中的变量称为形式参数,简称形参
(2) 形参作用:函数和调用者之间交互数据的一种约定;
约定函数的调用者需要给函数传递什么类型及几个数据。
(3) 形参的使用:形式参数相当函数内部的局部变量;
在函数{}中直接通过形参参数名字使用即可。
(4) 形参的定义:
public static void 函数(数据类型 参数名){
// 函数体、函数的实现部分
}
(5) 注意:函数中可以定义多个参数,所以将()中的内容称为参数列表。
方法/函数的调用:
函数名();
图中的test();这就是调用;一个函数可以通过函数名被多次的调用。
有参数的方法/函数调用:
(实参)
(1) 函数名(实参);
(2) 实际参数:函数调用者在函数调用时()中给定的具体数据,简称为实参
(3) 实参作用:实际参数给形参赋值
(4) 注意:实际参数的个数、类型、顺序必须和形参一致
方法/函数的返回值: 【
函数里的难点
】
干货满满哦~
(1) 函数返回值分为两大类:没有返回值和有返回值
如果返回值类型为 void ,代表当前函数不需要给调用者返回任何结果
如果返回值类型为 8种基本数据和对象类型,代表当前函数需要给调用者返回结果
(2) 函数返回值位置:
public static 返回值类型 函数名(形参列表){
// 函数体、函数实现
}
注意:返回值类型是函数和调用者之间的一种约定;
约定调用者可以通过函数的调用,获取哪一种数据类型的数据。
(3) 如果函数返回值类型为8种基本数据类型或是对象类型;
则需要通过 return xxxx;将函数 结果返回给调用者;
return后面返回值的数据类型必须和约定的返回值类型一致。
(4) 带有返回值的调用:
数据类型 变量名 = 函数名(实参);
注意:接受返回值的变量数据类型需要和函数的返回值类型一致。
(5) 调用者对返回值的处理方式通常有以下几种:
a. 利用和返回值同类型的变量将返回值存储,返回值可以被多次使用
b. 直接在应用返回值的地方调用函数:
System.out.println( add(66) );
c. 如果函数有返回值,调用者可以不进行处理、不接受
(6) return 的作用:
a. 将函数的值返回给调用者
b. 结束、终止当前函数
public static void 函数名(形参){
return; // 利用return空,结束终止当前函数
}
(7) 注意事项:
a. 如果函数的返回值类型为 void,则不能直接在打印语句中调用函数,否则编译报错。
错误信息为:此处不允许使用'空'类型
b. 如果函数的返回值类型不是 void 类型,则函数必须有 return 语句;
而且只能有一个 return语句(存在分支,只能在满足条件下,可执行return只能有一个)
c. 如果 return应用在分支结构、循环结构中,必须保证每个分支或是条件都有一个可执行 的return语句,否则编译报错。
错误信息为:缺少返回语句
方法/函数的
执行机制
:
main函数为程序上的入口,程序进入main函数之后;
从上往下依次执行
main函数中的代码,如果执行过程中,
遇到函数
的调用,则
优先执行被调
函数内部的代码,进入被调函数之后,
从上往下依次执行
,直到被调函数内部代码执行完毕,如果
有返回值则带着返回值返回函数的调用位置
,main
再继续
自己后续的代码。
方法/函数的
嵌套调用
:
被调用的函数内部又调用了其他的函数。
注意:
在一个函数内部自身调用自身的语法被称为
函数的递归调用
。
递归调用过程中
如果没有设置结束条件
,很容易出现无穷递归,
最终的报错信息
为:
Java.lang.StackOverflowError
(栈溢出)