方法
1.方法的定义
-
方法的定义
public static void 方法名称() { 方法体 }
-
关于方法的几点补充
方法名称的命名规则和变量一样,使用小驼峰。
方法体:也就是大括号当中可以包含任意条语句。 -
注意事项
- 方法定义的先后顺序无所谓。
- 方法的定义不能产生嵌套包含关系。
- 方法定义好了之后,不会执行的。如果要想执行,一定要进行方法的【调用】。
-
方法的调用
调用方法的格式:方法名称();
-
创建一个方法类,定义一些方法并调用查看
// 用 'static' 关键字修饰的方法称为静态方法,也就是说当前方法属于这个类,因此在调用的时候可以直接通过方法名来调用. public class Demo11Method { public static void main(String[] args) { farmer(); // 调用农民的方法 seller(); // 调用小商贩的方法 cook(); // 调用厨子的方法 me(); // 调用我自己的方法 } // 厨子 public static void cook() { System.out.println("洗菜"); System.out.println("切菜"); System.out.println("炒菜"); System.out.println("装盘"); } // 我 public static void me() { System.out.println("吃"); } // 小商贩 public static void seller() { System.out.println("运输到农贸市场"); System.out.println("抬高价格"); System.out.println("吆喝"); System.out.println("卖给厨子"); } // 农民伯伯 public static void farmer() { System.out.println("播种"); System.out.println("浇水"); System.out.println("施肥"); System.out.println("除虫"); System.out.println("收割"); System.out.println("卖给小商贩"); } }
2.方法的具体描述
-
定义方法的完整格式
修饰符 返回值类型 方法名称(参数类型 参数名称, ...) { 方法体 return 返回值; }
-
对完整格式的声明
- 修饰符:现阶段的固定写法,public static
- 返回值类型:也就是方法最终产生的数据结果是什么类型
- 方法名称:方法的名字,规则和变量一样,小驼峰
- 参数类型:进入方法的数据是什么类型
- 参数名称:进入方法的数据对应的变量名称
- 如果参数数目有多个,使用逗号进行分隔
- 方法体:方法需要做的事情,若干行代码
- return:两个作用
- 第一停止当前方法
- 第二将后面的返回值还给调用处
- 返回值:也就是方法执行后最终产生的数据结果
- return 使用的注意事项 ::return后面的“返回值”,必须和方法名称前面的“返回值类型”,保持对应。
-
方法分析 : 定义一个两个int数字相加的方法。
返回值类型:int ,方法名称:sum ,参数列表:int a, int b
public static int sum(int a, int b) { System.out.println("方法执行啦!"); int result = a + b; return result; }
-
方法的三种调用
- 单独调用:方法名称(参数);
- 打印调用:System.out.println(方法名称(参数));
- 赋值调用:数据类型 变量名称 = 方法名称(参数);
public class Demo02MethodDefine { public static void main(String[] args) { // 单独调用 sum(10, 20); System.out.println("==========="); // 打印调用 System.out.println(sum(10, 20)); // 30 System.out.println("==========="); // 赋值调用 int number = sum(15, 25); number += 100; System.out.println("变量的值:" + number); // 140 } }
3.方法的参数
-
回顾完整格式
修饰符 返回值类型 方法名称(参数类型 参数名称, ...) { 方法体 return 返回值; }
-
对方法参数的声明
- 有参数:小括号当中有内容,当一个方法需要一些数据条件,才能完成任务的时候,就是有参数。
- 例如两个数字相加,必须知道两个数字是各自多少,才能相加。
- 无参数:小括号当中留空。一个方法不需要任何数据条件,自己就能独立完成任务,就是无参数。
- 例如定义一个方法,打印固定10次HelloWorld。
public class Demo03MethodParam { public static void main(String[] args) { method1(10, 20); System.out.println("=============="); method2(); } // 两个数字相乘,做乘法,必须知道两个数字各自是多少,否则无法进行计算 // 有参数 public static void method1(int a, int b) { int result = a * b; System.out.println("结果是:" + result); } // 例如打印输出固定10次文本字符串 public static void method2() { for (int i = 0; i < 10; i++) { System.out.println("Hello, World!" + i); } } }
- 有参数:小括号当中有内容,当一个方法需要一些数据条件,才能完成任务的时候,就是有参数。
4.方法的返回值
-
问题描述和相应的模型判断
- 题目要求:定义一个方法,用来【求出】两个数字之和。(你帮我算,算完之后把结果告诉我。)
- 题目变形:定义一个方法,用来【打印】两个数字之和。(你来计算,算完之后你自己负责显示结果,不用告诉我。) ====> 需要返回值.
-
注意事项
- 对于有返回值的方法,可以使用单独调用、打印调用或者赋值调用。
- 但是对于无返回值的方法,只能使用单独调用,不能使用打印调用或者赋值调用。
-
代码展示
public class Demo04MethodReturn { public static void main(String[] args) { // 我是main方法,我来调用你。 // 我调用你,你来帮我计算一下,算完了之后,把结果告诉我的num变量 int num = getSum(10, 20); System.out.println("返回值是:" + num); System.out.println("=============="); printSum(100, 200); System.out.println("=============="); System.out.println(getSum(2, 3)); // 正确写法 getSum(3, 5); // 正确写法,但是返回值没有用到 System.out.println("=============="); // 对于void没有返回值的方法,只能单独,不能打印或者赋值 // System.out.println(printSum(2, 3)); // 错误写法! // System.out.println(void); // int num2 = printSum(10, 20); // 错误写法! // int num3 = void; // void num4 = void; } // 我是一个方法,我负责两个数字相加。 // 我有返回值int,谁调用我,我就把计算结果告诉谁 public static int getSum(int a, int b) { int result = a + b; return result; } // 我是一个方法,我负责两个数字相加。 // 我没有返回值,不会把结果告诉任何人,而是我自己进行打印输出。 public static void printSum(int a, int b) { int result = a + b; System.out.println("结果是:" + result); } }
5.定义方法练习
-
练习一 : 比较两个整数是否相同
-
分析: 定义方法实现功能,需要有两个明确,即 返回值 和 参数列表 。
- 明确返回值:比较整数,比较的结果只有两种可能,相同或不同,因此结果是布尔类型,比较的结果相 同为true。
- 明确参数列表:比较的两个整数不确定,所以默认定义两个int类型的参数
-
代码实现
public class Method_Demo3 { public static void main(String[] args) { //调用方法compare,传递两个整数 //并接收方法计算后的结果,布尔值 boolean bool = compare(3, 8); System.out.println(bool); } /* 定义比较两个整数是否相同的方法 返回值类型,比较的结果布尔类型 参数:不确定参与比较的两个整数 */ public static boolean compare(int a, int b) { if (a == b) { return true; } else { return false; } } }
-
-
练习二: 计算1+2+3…+100的和
-
分析:
- 明确返回值:返回一个int 类型的整数
- 明确参数列表:需求中已知到计算的数据,没有未知的数据,不定义参数
-
代码展示 ;
public class getSum { public static void main(String[] args) { System.out.println(getSun()); } public static int getSun(){ int sum = 0; for (int i = 1; i <= 100; i++) { sum += i; } return sum; } }
-
-
练习三: 实现不定次数打印
-
分析:
- 明确返回值: 不需要返回值,可以为 void
- 明确参数列表: 需要传入一个参数来控制打印次数 int x
-
代码展示
public class Print { public static void main(String[] args) { printX(9); } public static void printX(int x){ for (int i = 0; i < x; i++) { System.out.println("方法 你好!!!!"); } } }
-
5.方法定义的注意事项
-
定义位置,类中方法外面。
- 代码展示
-
返回值类型,必须要和 return 语句返回的类型相同,否则编译失败
-
代码展示
// 返回值类型要求是int public static int getSum() { return 5;// 正确,int类型 return 1.2;// 错误,类型不匹配 return true;// 错误,类型不匹配 }
-
-
不能在 return 后面写代码, return 意味着方法结束,所有后面的代码永远不会执行,属于无效代码。
-
代码展示
public static int getSum(int a,int b) { return a + b; System.out.println("Hello");// 错误,return已经结束,这里不会执行,无效代码 }
-
6.方法重载
-
方法重载:指在同一个类中,允许存在一个以上的同名方法,只要它们的参数列表不同即可,与修饰符和返
回值类型无关.
-
参数列表:个数不同,数据类型不同,顺序不同。
-
重载方法调用:JVM通过方法的参数列表,调用不同的方法。
-
方法重载的相关练习
-
练习一:比较两个数据是否相等。参数类型分别为两个 byte 类型,两个 short 类型,两个 int 类型,两个 long 类型,并在 main 方法中进行测试。
public class DemoOverload { 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)); } public static boolean compare(byte a, byte b) { System.out.println("byte"); return a == b; } public static boolean compare(short a, short b) { System.out.println("short"); return a == b; } public static boolean compare(int a, int b) { System.out.println("int"); return a == b; } public static boolean compare(long a, long b) { System.out.println("long"); return a == b; } }
-