方法简介
什么是方法
- 在java用来存放一小段代码或指定功能的工具,在调用该方法后可以实现内部存储的功能.
方法的定义
/* java中的方法: 就类似于python中的方法,就是在类的内部,封装一小段代码实现固定功能的代码块,想要执行此功能时直接调用方法即可 方法的定义: public static void main(String[] args) { } 修饰符 返回值类型 方法名 (参数类型 参数名称1, 参数类型 参数名称2.....) { 方法体: 要实现的功能代码. return 返回值; } 修饰符: 对于方法的权限,特性,调用方式等进行修饰 public 公共权限, static 静态方法 返回值类型: 标注我们要返回值数据的类型,如果返回值类型不匹配则报错 void 代表无返回值 参数: 参数类型 接收参数时只能接收固定类型的参数 参数名称 局部名称,出了方法就消失了 在定义位置的淡出叫做形参 在调用位置的参数叫做实参 方法体:实现功能的代码可以是一行,也可以是多行,但是务必注意,一个方法实现的功能尽量单一 return: 结束方法的执行,同时返回返回值,返回值类型要与方法定义时,标注的类型相同 方法的种类: 无参无返回值 无参有返回值 有参无返回值 有参有返回值 */ public class Demo01 { public static void main(String[] args) { //方法的调用 使用方法名称( 传参) 即可 func1(); func2("正国"); System.out.println(func3()); System.out.println(func4(5,4)); } /** * 无参无返回值方法 */ public static void func1(){ System.out.println("hello itcast!!!"); } /** * 有参无返回值 */ public static void func2(String name){ System.out.println("和" +name+"真开心呀!!"); } /** * 无参有返回值 */ public static String func3(){ return "我想去回家看电影,千万不要把我落下!"; } /** * 有参有返回值 */ public static int func4(int a, int b){ return a + b; } }
- 方法的注意事项
方法的使用
public static void main(String[] args) { int[] arr1 = {11, 22, 99, 44, 55}; printArray(arr1); System.out.println(getMax(arr1)); int[] arr2 = compute(3,4); printArray(arr2); } public static void printArray(int[] arr) { for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); } } public static int getMax(int[] arr){ int maxNum = arr[0]; for (int i = 1; i < arr.length; i++) { if(arr[i] >maxNum){ maxNum = arr[i]; } } return maxNum; } public static int[] compute(int a, int b){ // 1.创建一个长度为4的空数组 int[] arr = new int[4]; // 2. 计算加减乘除的结果,赋值给数组中的0-3号下标的元素 arr[0] = a + b; arr[1] = a - b; arr[2] = a * b; arr[3] = a / b; // 3.将数组返回 return arr; }
方法重载
/* 方法重载: 1. 方法名称相同 但是方法的参数列表不同 参数列表不同: double a, double b 数据类型不同 int a, int b 参数数量不同 int a, int b , int c 参数顺序不同 int b int a 2.和修饰符无关 3.和返回值类型无关 4.和参数名无关 需求: 1. 定义方法compare(), 用来比较两个整型数据是否相等. 2. 要求兼容所有的整数类型, 即(byte, short, int, long) */ public class Demo03 { public static void main(String[] args) { //定义不同数据类型的变量 byte a = 10; byte b = 20; short c = 10; short d = 20; int e = 10; int f = 10; long g = 10; long h = 20; System.out.println(compare(a, b)); System.out.println(compare(c, d)); System.out.println(compare(e, f)); System.out.println(compare(g, h)); // 方法重载我们一直在用 println } public static boolean compare(byte a, byte b) { return a == b; } /** * 可以使用方法重载,给同一个方法名添加不同的参数列表,使方法的兼容性增加 * 使用重载方法时,调用位置会根据传参数量,传参类型不同自动选择合适的方法进行使用 */ public static boolean compare(short a, short b) { return a == b; } public static boolean compare(int a, int b) { return a == b; } public static boolean compare(long a, long b) { return a == b; } }
public static void open(){}
public static void open(int a){}
static void open(int a,int b){}
public static void open(double a,int b){}
public static void open(int a,double b){}
public void open(int i,double d){}
public static void OPEN(){}
public static void open(int i,int j){}参数传递问题
/* 方法传参: 引用数据类型(String, int[], float[]..): 在传参时传递的是地址,叫做引用传递 引用类型数据,将数据传递到方法内部,修改内部数据后,外部数据受影响 基础数据类型(int float boolean..): 在传参的时候传递的是值, 叫做值传递 基础类型数据,将数据传递到方法内部,修改数据后,外部数据不受影响 */ public class Demo04 { public static void main(String[] args) { //创建一个引用类型数据 int[] arr1 = {11,22,33,44,55}; //将int[] 类型数据传入到方法中 func1(arr1); System.out.println(Arrays.toString(arr1)); // [199, 22, 33, 44, 55] int num = 5; func2(num); System.out.println(num); // 5 } public static void func1(int[] arr){ arr[0] = 199; } public static void func2(int a){ a = 10; } }