1.方法概述 就是一个独立的代码集。//一个方法一般会独立的去完成一个单独的功能。 特点: 不调用不执行。 2.方法定义和调用 定义格式: public static void 方法名(){ 方法体; } 调用格式: method(); 3.方法的调用过程 public static void main(String [] args){//是程序的主入口 //当程序开始运行的时候,由虚拟机来调用main方法的。 System.out.println(111); method(); System.out.println(222); } public static void method(){ System.out.println(333); System.out.println(444); System.out.println(555); } //简单理解: 当方法被调用的时候,如果方法中的代码没有执行完毕,那么方法下面的代码永远执行不到。 public static void main(String [] args){ System.out.println(111); method(); System.out.println(222); } public static void method(){ while(true){} } 结论: 此时程序在method方法中的无限循环中不断的执行,永远执行不到222。 理由: 当方法被调用的时候,如果方法中的代码没有执行完毕,那么方法下面的代码永远执行不到。 4.快速生成一个方法的快捷键: alt + 回车 5.形参和实参 public static void main(String [] args){ getSum(2,3); int a = 10; int b = 20; getSum(a,b); } public static void method(int a, int b){ System.out.println(a + b); } 形参(形式参数):在方法定义的时候,小括号中的变量。在上面的案例中有两个形参。 参数列表:所有的形参组成的这个整体 实参(实际参数):在方法调用的时候,实际传递过来的值。在上面的案例中有两个实参。 关系: 形参和实参:一一对应。,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 6、带返回值方法定义和调用 定义格式: public static 返回值类型 方法名(参数列表){ 方法体; return 变量; } return :将结果返回给调用处 停止方法 引申: return 关键字的作用: 在有返回值的方法中:将结果返回给调用处 停止方法 在没有返回值的方法中: 停止方法 7.return break continue 关键字的区别。 break continue:跟方法本身没有什么关系的。跟循环有关的。 return :跟循环是没有任何关系的,跟方法有关。 但是方法都停止了,那么方法中的循环也就没有了。 8.关于方法的定义 我到底要不要写返回值类型?我到底要写几个形式参数? 当不知道如何写一个方法的时候,建议你问一下自己以下的这几个问题? 1.我要干嘛? --- 决定了方法体 2.我干这件事情,需要什么?---- 决定了方法的形参 3.我干完了,要不要把结果告诉调用者? --- 决定了方法的返回值 练习: 1、我要求两个长方形的周长和。 public static void main(String [] args){ //1、我要求两个长方形的周长和。 //(长 + 宽) * 2 //1.我要干嘛? // 求长方形的周长 // 2.我干这件事情,需要什么? //长和宽 // 3.我干完了,要不要把结果告诉调用者? //要。因为这个方法只能求一个长方形的周长。 int result = getLen(10,5) + getLen(3,2); System.out.println(result); } public static int getLen(int length,int width){ return (length + width) * 2; } 2、想打印一个N行M列的矩形。 print(3,5); public static int print(int a,int b){ //a表示的是行数 //b表示的是列数 for (; ; ){ for (; ; ){ } } } 9.方法重载的概念 重载: 在同一个类,有相同方法名的方法,参数列表不同,与返回值无关。 参数列表不同: 参数的个数不同。 method(int a); method(int a,int b); method(int a,int b,int c); 参数的类型不同。 method(int a); method(double a); method(String a); 参数的类型顺序不同。 method(int a,double b); method(double a,int b); 10.方法的重载中调用关系。 优先调用实际参数跟形式参数数据类型完全一致的那个方法。 如果没有,就自动类型提升。 11.方法参数传递基本类型 针对于基本类型数据来讲: 变量只在本方法中有效,在方法A中不能修改方法B中的值。 结论: 方法中形式参数如果是基本数据类型。 在方法中修改变量的值,不会影响到调用者变量的值。 练习1: public static void main(String[] args) { int number = 10; System.out.println("①" + number); method(number); System.out.println("④" + number); } public static void method(int number) { System.out.println("②" + number); number = 200; System.out.println("③" + number); } 练习2: public static void main(String[] args) { int number = 10; System.out.println("①" + number); method(number); System.out.println("④" + number); } public static int method(int number) { System.out.println("②" + number); number = 200; System.out.println("③" + number); return number; } 练习3: public static void main(String[] args) { int number = 10; System.out.println("①" + number); number = method(number); System.out.println("④" + number); } public static int method(int number) { System.out.println("②" + number); number = 200; System.out.println("③" + number); return number; } 12.方法的参数是引用数据类型 练习1: public static void main(String[] args) { int [] arr = {1,2,3}; System.out.println("①" + arr[0]);//1 method(arr); System.out.println("④" +arr[0]); } public static void method(int [] arr) { System.out.println("②" +arr[0]); arr[0] = 10; System.out.println("③" +arr[0]); } 练习2: public static void main(String[] args) { int [] arr = {1,2,3}; System.out.println("①" + arr[0]);//1 method(arr); System.out.println("④" +arr[0]); } public static void method(int [] arr) { arr = new int[3]; System.out.println("②" +arr[0]); arr[0] = 10; System.out.println("③" +arr[0]); }