JavaSE | 初识Java(五) | 方法的使用

方法就是一个代码片段, 类似于 C 语言中的 " 函数 "。
方法可以是我们代码逻辑更清晰,并且可以服用方法使代码更简洁
方法语法格式
// 方法定义
修饰符 返回值类型 方法名称([参数类型 形参 ...]){
方法体代码;
[return 返回值];
}

实例:实现一个两数相加的方法

public class Method{
// 方法的定义
public static int add(int x, int y) {
return x + y;
    }
}
注意事项
  1. 修饰符:现阶段直接使用public static 固定搭配
  2. 返回值类型:如果方法有返回值,返回值类型必须要与返回的实体类型一致,如果没有返回值,必须写成 void
  3. 方法名字:采用小驼峰命名
  4. 参数列表:如果方法没有参数,()中什么都不写,如果有参数,需指定参数类型,多个参数之间使用逗号隔开
  5. 方法体:方法内部要执行的语句
  6. java当中,方法必须写在类当中
  7. java当中,方法不能嵌套定义
  8. java当中,没有方法声明一说
方法调用过程
调用方法 --- > 传递参数 --- > 找到方法地址 --- > 执行被调方法的方法体 --- > 被调方法结束返回 --- > 回到主调方法继续往下 执行
注意事项
  • 定义方法的时候, 不会执行方法的代码. 只有调用的时候才会执行.
  • 一个方法可以被多次调用.

形参和实参的关系

实参 a b main 方法中的两个变量,其空间在 main 方法的栈 ( 一块特殊的内存空间 ) 中,而形参 x y swap 方法中 的两个变量,x y 的空间在 swap 方法运行时的栈中,因此:实参 a b 与 形参 x y 是两个没有任何关联性的变量,
swap 方法调用时,只是将实参 a b 中的值拷贝了一份传递给了形参 x y ,因此对形参 x y 操作不会对实参 a b 产生任何影响。
注意:对于 基础类型 来说 , 形参相当于实参的拷贝 . 传值调用

解决办法: 传引用类型参数

public class TestMethod {
public static void main(String[] args) {
int[] arr = {10, 20};
swap(arr);
System.out.println("arr[0] = " + arr[0] + " arr[1] = " + arr[1]);
}
public static void swap(int[] arr) {
int tmp = arr[0];
arr[0] = arr[1];
arr[1] = tmp;
    }
}
// 运行结果
arr[0] = 20 arr[1] = 10

方法重载

Java中的方法重载与C++的函数重载差不多

都支持相同的方法实现对不同类型的参数进行操作

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. 与返回值类型是否相同无关
需要值得一提的是: 返回值不同但参数相同不构成方法重载
在同一个作用域中不能定义两个相同名称的标识符。比如:方法中不能定义两个名字一样的变量,那 为什么类中就 可以定义方法名相同的方法呢?
原因是方法在编译的时候生成了方法签名,不同参数的方法生成的方法签名不一样
方法签名即:经过编译器编译修改过之后方法最终的名字。具体方式: 方法全路径名 + 参数列表 + 返回值类型,构成 方法完整的名字。
JavaSE | 初识Java(五) | 方法的使用_第1张图片

你可能感兴趣的:(JavaSE,java,开发语言)