方法_Method

方法

返回值

方法中的返回值有两种情况,即有返回值和无返回值,如果定义方法时有返回值类型,就需要返回相对应的数据类型

基本数据类型
    值传递,不改变自身
引用数据类型
    引用传递,改变自身
void
    无返回值
1、一个方法只能有一个返回值
2、分支结构的每一个分支都需要正确的返回值
3、返回值可以接收也可以不接收
return 关键字
作用

结束当前方法,返回至调用方法处,如果定义了返回值类型就返回对应类型的数据

【注意】数据类型一致化

格式
return 需要返回的数据;
注意
1、单一职能原则,一个方法只做一件事
2、注意形参和实参数据类型一致化
3、返回值类型和参数没有关系
4、方法名要符合小驼峰命名规则
5、return的下一行代码不会执行

有返回值方法调用

无参有返回值的方法:give me five
class TestMethod1 {
	public static void main(String[] args) {
		System.out.println(giveMeFive());
	}
	
	/**
	* 返回一个整数 5
	*
	* @return 5 int类型
	*/
	public static int giveMeFive() {
		return 5;
	}
}
有参有返回值的方法:两个数求和
public class MethodDemo6 {
	public static void main(String[] args) {
		/*
		 * 调用自定义getSumOfTwoNumber方法,需要两个int类型的参数,并得到一个int类型的返回值
		 * 
		 * 参数列表一定要和方法声明上的参数类型完全一致
		 */ 
		int total = getSumOfTwoNumber(1, 2);
		
		System.out.println(total);
    }
    
    /**
	 * 两个整数进行求和
	 * 
	 * @param num1 求和的第一个数
	 * @param num2 求和的第二个数
	 * @return 返回两个参数的和,int类型
	 */
	public static int getSumOfTwoNumber(int num1, int num2){
		return num1 + num2;
	}
}

【注意】调用带有多参数的方法,要求传入的参数数据类型,个数和顺序还有数据类型必须和方法声明一致

规范化return

在一个方法中,return出现的次数要尽可能得少,为了提高阅读性和逻辑性

class TestMethod4 {
	public static void main(String[] args) {
		System.out.println(getCompare(3,2));
	}
	
	/**
	* 比较大小,返回较大的那个数
	*
	* @param num1 int类型
	* @param num2 int类型
	* @return int类型的结果
	*/
	public static int getCompare(int num1, int num2) {
		return num1 > num2 ? num1 : num2;
	}
}
总结
1、break 是退出当前循环结构,return 是退出当前方法

2、如果返回值类型是 void ,可以返回 null 或者不返回或者 return;

3、一个方法可以有多个 return,但只能有一个返回值

4、返回值可以接收也可以不接收,由调用者决定如何调用

5、分支结构里的每一个分支都需要有正确的返回值

6、对返回值的处理方式因情况而定,可以打印、参与运算或者当做其他方法的实参

7、调用带有多参数的方法,要求传入的参数数据类型,个数和顺序和类型必须和方法声明一致

【注意】方法具有单一职能原则,一个函数只做一件事

方法重载【Overload】

概念

一个类或者接口中定义多个相同名称的方法

要求
1、必须在同一个类中
2、方法名必须一致
3、参数必须不一致(个数,顺序,类型)	
4、与访问修饰符、返回值类型无关
public class MethodDemo9 {
	public static void main(String[] args) {
		// 调用同名方法,传入不同的参数列表,即可实现方法的重载
		play();
		play("英雄联盟");
		play("红色警戒", 2);
		play(1, "DNF");
	}
	
	public static void play() {
		System.out.println("玩王者荣耀");
	}
	
	public static void play(String gameName) {
		System.out.println("玩" + gameName);
	}
	
	public static void play(String gameName, int time) {
		System.out.println("玩" + gameName + time + "小时");
	}
	
	public static void play(int time, String gameName) {
		System.out.println("玩" + gameName + time + "小时");
	}
	
	/* 
	 * Duplicate method play(String, int) in type MethodDemo9
	 * 
	 * 跟返回值类型无关,只关注方法名和参数类型
	 */
//	public static String play(String gameName, int time) {
//		return "玩" + gameName + time + "小时";
//	}
}
优点

满足需求多样化,屏蔽使用差异,灵活、方便

总结

方法的重载我们只关注方法名和参数类型,要求方法名必须一致,参数列表必须不一致(个数,顺序,类型)

局部变量

概念

在方法内部或者形参列表上定义的变量(包括mian方法)

作用域

从定义局部变量的那一行到所在的代码块结束

for (int i = 1; i <= 10; i++) {
    
}

for (int i = 1; i <= 10; i++) {
    
}

【注意】两个for循环中,i 循环变量分别属于不同的大括号以内,不同的作用域空间,并不冲突

生存期

从方法被调用的时刻算起到函数返回调用处的时刻结束

for (int i = 1; i <= 10; i++) {
    
}

System.out.println(i); // 报错,找不到符号

【注意】for 循环结束时局部变量 i 的生存期结束,在 for 循环外无法使用 i

单一性,不能重名
// 报错!
for (int i = 1; i <= 10; i++) {
    for (int i = 1; i <= 10; i++) {
        
    }
}

【注意】在一个方法内局部变量不能多次定义

值传递
class Test {
	public static void main(String[] args) {
        int num = 5;
        test(num);
        
        System.out.println(num);	// 5
    }
    
    public static void test(int num) {
        num = 10;
    }
}

【注意】基本数据类型作为参数传递给局部变量时,传递的是值,局部变量的更改不影响实参本身

| 值传递分析图 |
在这里插入图片描述

引用传递
public class MethodDemoC {
	public static void main(String[] args) {
		int[] arr = new int[5];

		System.out.println("调用方法前:" + arr[0]);

		test(arr);

		System.out.println("调用方法后:" + arr[0]);
	}

	public static void test(int[] arr) {
		arr[0] = 1;
	}
}

【注意】引用数据类型传递时传递的是地址,局部变量直接作用于实参本身

| 引用传递分析图 |
在这里插入图片描述

总结
局部变量声明在函数中,从定义的那一行开始到函数结束时被销毁
局部变量必须先赋值再使用
局部变量不能重复定义
值传递:基本数据类型的传递不改变实参
引用传递:引用数据类型的传递会改变实参
Java中只有值传递,引用传递传递的是地址值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值