011_Java方法的定义及调用

一、方法定义 (MethodDefine)

1、是什么

方法(Method) 是 可实现某一特定功能可被重复使用 的代码片段。

Java中的方法Method其实就是C语言(C++)中的函数Function


2、作用

① 方法可实现某一特定功能
② 方法可实现代码的模块化重用


3、注意点
  • 方法定义在类体当中
  • 一个类体中可定义多个方法
  • 方法的定义无先后顺序
  • 方法体中不能再定义方法 (方法的定义不能嵌套包含)
  • 方法体中的程序自上而下依次逐行执行

4、🔺语法机制

[修饰符列表]   返回值类型   方法名(形式参数列表) {
         方法体;
}

解释

  1. 修饰符列表
    可选项,不是必须的
    []:中括号里面的内容是可选的。

  2. 返回值类型
    ① 可以是任何类型
    除void以外,其他返回值类型的方法体最后必须要有【return 值;】语句,否则报错。 如果返回值类型是void,那么方法体中不能有【return 值;】语句,否则报错。 但可以有【return;】语句,【return;】语句是用于终止当前的方法。
    ③【return 值;】中的"返回值"(数据)必须与方法的返回值类型对应相同。

  3. 方法名
    见名知意
    小驼峰命名法:第一个单词首字母小写,其他单词首字母大写

  4. 形式参数列表 (形参)
    形参中的参数都是局部变量,方法结束后立即释放内存空间。
    ② 形参的个数0~N个,参数有多个用逗号分隔。
    形参的数据类型起决定性作用

  5. 方法体
    由java语句组成,java语句以英语半角分号";"结尾。

这是一个比喻
方法 = 工厂
参数 = 原材料
方法体 = 加工
返回值 = 产出物


二、方法的调用(MethodInvoke)

1、🔺语法机制

① 静态方法的调用 (有带static)
类名.静态方法名(实参);

② 实例方法的调用 (不带static)
引用.实例方法名(实参);

解释

  1. 实际参数列表 (实参)
    实参和形参的数据类型个数要一一对应

  2. 静态方法的调用中
    同类调用,[类名.]可省略
    跨类调用,[类名.]不可省略

  3. 方法调用的过程
    ① 找到方法的调用处
    ② 传递参数
    ③ 执行方法体
    ④ [带着返回值]返回调用处

  4. 注意
    方法必须调用才能执行
    可以使用变量的形式去接收方法的返回值
    变量的数据类型要和返回值类型一致

2、“栗子”

"栗子1"

// 1、代码执行顺序:遵循自上而下的依次执行顺序
/* 2、方法的调用:
 5. 		类名.方法名(实际参数列表)
        同类调用,[类名.]可省略。   ————>若a方法和b方法在同一个类中,a调用b,[类名.]可省略	
        跨类调用,[类名.]不可省略。 ————>若a方法和b方法在不一个类中,a调用b,[类名.]不可省略
 */
public class MethodTest01 {
	public static void main(String[] args) {
		System.out.println("main begin!");
		MethodTest01.m1();		// 可省略成 m1();
		System.out.println("main over");
	}
	
	public static void m1() {
		System.out.println("MethodTest01's m1 begin!");
		MethodTest01.m2();		// 可省略成 m1();
		System.out.println("MethodTest01's m1 over");
	}
	
	public static void m2() {
		System.out.println("MethodTest01's m2 begin!");
		A.m1();
		System.out.println("MethodTest01's m2 over");
	}
}

class A{
	public static void m1() {
		System.out.println("A's m1 begin!");
		A.m2();
		System.out.println("A's m1 over");
	}
	
	public static void m2() {
		System.out.println("A's m2 begin!");
		System.out.println("*************************");
		System.out.println("A's m2 over");
	}
}

/* 运行结果:
main begin!
MethodTest01's m1 begin!
MethodTest01's m2 begin!
A's m1 begin!
A's m2 begin!
*************************
A's m2 over
A's m1 over
MethodTest01's m2 over
MethodTest01's m1 over
main over
 */

"栗子2"

// 分析以下代码,编译器会报错吗?
public class MethodTest02 {
	public static void main(String[] args) {
		int result = m();
		System.out.println(result);
	}
	public static int m() {
		boolean flag = false;
		if (flag) {
			return 1;
		}
	}
	/* 编译报错:This method must return a result of type int
						该方法必须返回一个int类型的结果
	        分析原因:编译器只负责检查java语法是否合法,不负责运行程序。
                                     编译器只知道flag变量是boolean类型,认为flag的值可能是true,也有可能是是false。
                                     【return 值;】可能执行不到,因此编译报错。
	 */
	
	// 正确代码
	// (注:编译运行时记得将以上错误的方法注释掉)
	// 第一种写法
	public static int m() {
		boolean flag = false;
		if (flag) {
			return 1;
		}
		return 0;
	}
	
	// 第二种写法:三目运算符
	public static int m() {
		boolean flag = false;
		return flag? 1: 0;
	}
}           

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值