前言:
作者简介:爱吃大白菜1132
人生格言:纸上得来终觉浅,绝知此事要躬行
如果文章知识点有错误的地方不吝赐教,和大家一起学习,一起进步!
如果觉得博主文章还不错的话,希望三连支持!
目录
1.方法的概念
在编程中,某段功能的代码可能频繁使用到,如果在每个位置都重新实现一遍,会:
- 使程序变得繁琐
- 开发效率低下,做了大量重复性的工作
- 不利于维护,需要改动时,所有用到该段代码的位置都需要修改
- 不利于复用 因此,在编程中,我们也可以将频繁使用的代码封装成“方法”,需要时直接拿来使用即可,避免了一遍一遍的累赘。
上面这些问题很容易解决,通过方法就可以搞定。
方法的概念:
- 方法就是一个代码片段. 类似于 C 语言中的 "函数"。
- 是能够模块化的组织代码(当代码规模比较复杂的时候)。
- 做到代码被重复使用, 一份代码可以在多个位置使用。
- 让代码更好理解更简单。
- 直接调用现有方法开发, 不必重复造轮子。
2 方法使用
2.1方法定义方式
修饰符 返回值类型 方法名称([参数类型 形参 ...]){
方法体代码;
[return 返回值];
}
例如(判断是否为闰年):
// 修饰符 返回值类型 方法名称 参数类型
public static boolean isLeapyear(int y){
if((y%400==0)||(y%4==0&&y%100!=0)){
return true;
}else {
return false;
}
}
注:
- 修饰符:现阶段直接使用public static 固定搭配
- 返回值类型:如果方法有返回值,返回值类型必须要与返回的实体类型一致,如果没有返回值,必须写成 void
- 方法名字:采用小驼峰命名
- 参数列表:如果方法没有参数,()中什么都不写,如果有参数,需指定参数类型,多个参数之间使用逗号隔开
- 方法体:方法内部要执行的语句
- 在java当中,方法必须写在类当中
- 在java当中,方法不能嵌套定义
- 在java当中,没有方法声明一说
2.2方法调用的执行过程
调用方法--->传递参数--->找到方法地址--->执行被调方法的方法体--->被调方法结束返回--->回到主调方法继续往下执行
如图:
例子(判断闰年方法调用):
public static boolean isLeapyear(int y){
if((y%400==0)||(y%4==0&&y%100!=0)){
return true;
}else {
return false;
}
}
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
int year=scan.nextInt();
boolean b=isLeapyear(year); //调用
if(b==true){
System.out.println(year+"是闰年");
}else {
System.out.println(year+"不是闰年");
}
}
3.方法重载
概念:
在自然语言中,一个词语如果有多重含义,那么就说该词语被重载了,具体代表什么含义需要结合具体的场景。 在Java中方法也是可以重载的。
例如:
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;
}
public static void main(String[] args) {
int a=add(1, 2); // 调用add(int, int)
System.out.println(a);
double b=add(1.5, 2.5); // 调用add(double, double)
System.out.println(b);
double c=add(1.5,2.5, 3.5); // 调用add(double, double, double)
System.out.println(c);
}
当满足以下条件时才构成方法重载:
- 方法名必须相同
- 参数列表必须不同(参数的个数不同、参数的类型不同、类型的次序必须不同)
- 与返回值类型是否相同无关
- 编译器在编译代码时,会对实参类型进行推演,根据推演的结果来确定调用哪个方法
4.方法签名
在同一个作用域中不能定义两个相同名称的标识符。比如:方法中不能定义两个名字一样的变量,那为什么类中就 可以定义方法名相同的方法呢?
方法签名即:经过编译器编译修改过之后方法最终的名字。具体方式:方法全路径名+参数列表+返回值类型,构成方法完整的名字。
方法签名中一些特殊符号说明:
特殊符号 | 数据类型 |
V | void |
Z | boolean |
B | byte |
C | char |
S | short |
I | int |
J | long |
F | float |
D | double |
[ | 数组(以[开头,配合其他的特殊字符,表述对应数据类型的数组,几个[表述几维数组) |
L | 引用类型,以L开头,以;结尾,中间是引用类型的全类名 |