1.什么是方法(method)
在java中方法就是一个代码片段.。几乎相当于c语言的函数。
2.方法定义
方法跟函数是几乎一样的。所以语法是大差不差的。就多了一点东西。之前我们在c语言里已经很详细讲过了函数。这里就简便的讲一下。
相比c语言函数多了个修饰符 。
现在看下其注意事项:
1. 修饰符:现阶段直接使用public static 固定搭配
2. 返回值类型:如果方法有返回值,返回值类型必须要与返回的实体类型一致,如果没有返回值,必须写成 void。而且返回一个值所有情况都要考虑,否则会报错。
3. 方法名字:采用小驼峰命名
4. 参数列表:如果方法没有参数,()中什么都不写,如果有参数,需指定参数类型,多个参数之间使用逗号隔开
5. 方法体:方法内部要执行的语句
6. 在java当中,方法必须写在类当中
7. 在java当中,方法不能嵌套定义
8. 在java当中,没有方法声明一说,而在c语言是有函数声明的。这是因为c语言编译是自上而下,而java编译是全局的
9.跟c语言一样,在Java中main方法也作为程序的入口从而运行,其有且只能有一个,如果缺少main方法则不能运行该程序。之后随着学习更多的知识会对其有更清晰的认识,现在对其的认知还是太模糊了。 比如我们不清楚是一个类中只能有一个main函数还是一个文件中只能有一个main函数。
3. 方法调用
这个很简单直接看文案吧。
4.方法中实参和形参的关系
跟c语言一样,也有传值调用和传址调用。
传值调用
太简单了直接看文案
传值调用不影响函数外部的值,如果要影响,则要传址调用
传址调用
在c语言里传址调用是用了指针,而在java中没有指针这种语法,所以java需要用到其他东西。 而这些东西我们现在还没学,所以等到学习数组再详细解释吧。
5.没有返回值的方法
很简单,直接看文案吧。
6.方法的重载
在Java中,如果多个方法的名字相同,参数列表不同,则称该几种方法被重载了。
public class TestMethod {
public static void main(String[] args) {
add(1, 2); // 调用add(int, int)
add(1.5, 2.5); // 调用add(double, double)
add(1.5, 2.5, 3.5); // 调用add(double, double, double)
}
public static int add(int x, int y) {
return x + y;
}
public static double add(double x, double y) {
return x + y;
}
public static double add(double x, double y, double z) {
return x + y + z;
}
}
方法的重载注意事项:
1. 方法名必须相同
2. 参数列表必须不同(参数的个数不同、参数的类型不同、类型的次序不同,其中有一个不同参数列表就不同了)
3. 与返回值类型是否相同无关
// 注意:两个方法如果仅仅只是因为返回值类型不同,是不能构成重载的,下面就是个很好的例子
如果发生了方法的重载,编译器在编译代码时,会对实参类型进行推演,根据推演的结果来确定调用哪个方法。
7.方法签名
在同一个作用域中不能定义两个相同名称的变量。那为什么类中就可以定义方法名相同的方法呢?
这里就要说到方法签名了。
方法签名即:经过编译器编译修改过之后方法最终的名字。具体方式:方法全路径名+参数列表+返回值类型,构成方法完整的名字即方法签名。(这才是方法真的名字)
下面给大家看下文案吧,方法签名这个知识点知道就好,不需要过度讲述。
8.递归
递归在c语言里就学过了,在java中递归跟c语言的是完全一样的,所以我们就复习一下,看个文案就行了。
这里就说一个重点:递归不能没有起始条件,否则会死循环运行,从而一直产生栈帧,导致栈溢出,程序崩溃