JAVA基础学习5(方法)

什么是方法

方法就是 我们做一件事情的时候需要一个方法,比如说我们需要一份蛋炒饭,我们用什么方法可以得到一份蛋炒饭呢,我们可以用买的方法,也可以用自己做的方法,这些都是方法,就是我们提供或者不提供一个东西都行,通过一个方法去做到。这是日常生活中的方法,java中的方法也是这样,我们想要去实现一个功能,比如说我们想要实现两个数相加,那么我们就应该去用两个数相加这个方法,我们去用这个方法的时候,就叫调用这个方法。

方法的定义

按照上边说的,方法就是用来帮我们实现一个功能的,所以方法的定义就是一个可以完成特定功能的代码块。
语法:(方括号里边的内容不是必须存在的)
[修饰符] 返回值类型 方法名(参数列表){实现方法的具体代码;[return 返回值;]}
比如说熟悉了的主方法的定义

public static void main(String[] args){
//方法体
}
//举例
//定义一个返回值为int类型的方法,方法名为getSum,方法体实现传递过来的两数之和
static int getSum(int a, int b) {
	int c = a + b;
	return c;	//返回 a + b之和
}

其中public和static是修饰符;
void是返回值类型;
main是方法名;
String[] args是参数列表;
修饰符: 就目前来说我们应该用到的都是static
返回值类型: void是这个方法没有返回值的时候使用,其他的时候,返回什么类型的值就写什么类型。
注意:

  • 方法和方法之间都是平行的,不分前后。
  • 方法里边不能定义方法。
  • 方法必须定义在类中。

方法的调用

语法格式:
返回值类型 变量 = 方法所在类名.方法名(实际参数);

//调用getSum方法
public static void main(String[] args){
	//调用
	//返回值为int ,所以要用int 的数据类型的变量来接收
	int sum = getSum(23);//如果调用的方法与调用者在同一个类里边,那么就可以省略类名。
	//2和3为实参,也就是实际的参数,是要传递给调用方法中参数列表的形参。
}

练习:
第一题MethodDemo1.java(重点)
需求:定义求两个整数之和的方法
步骤:
(1)定义方法
确定方法名,修饰符(暂时使用static)
确定是否需要形式参数
确定是否需要返回
(2)调用方法
确定调用语法(暂时类名调用方法)
确定需要传入什么实际参数
确定是否需要定义变量接收返回值

public class MethodDemo1{
	/**
	定义方法:修饰符 返回值类型 方法名(参数列表){方法体[返回值;]}
确定方法名,修饰符(暂时使用static)
确定是否需要形式参数:因为是计算两个数的和,所以肯定是需要两个数
确定是否需要返回:要求两个整数之和,所以要的是结果和,是需要返回数据的,而且是int型的数据
	*/
	static int getSum(int a,int b){
		int c = a + b;//计算和
		return c;// 返回计算出来的和
	}

	/**
	调用方法
确定调用语法:数据类型 变量名 = 类名.方法名(参数,参数...)  
			如果在同一个类里边,类名可以不写 可以直接 = 方法名(参数,参数...)
确定需要传入什么实际参数:因为是计算两个整数的和,所以肯定要给这个方法两个整数
确定是否需要定义变量接收返回值:考虑我们调用的方法有没有返回值,如果有的话就定义一个和返回值类型相同的数据,如果没有的话就不用定义
	*/
	//main是主方法
	//我想在同一个类里的主方法里边调用getSum
	public static void main(String[] args){
	   //调用方法
		int sum = getSum(2,3);
		//输出结果
		System.out.print(sum);
	}
}

可变参数

  • 可变参数的底层就是一个一维数组,只是一种简化的语法
  • 在需要一个一维数组且数组元素的数量不确定的时候使用
  • 可变参数必须在参数的最后一个,为了避免参数的歧义性,所以一个方法只能有一个可变参数

方法的重载

方法的重载意思就是在定义方法的时候,可以存在方法名相同但是参数列表不同的情况
就相当于 方法名和参数列表在一起才是方法的主键,才能区分出来不同的方法
参数列表:
参数的类型、参数的个数、参数顺序
方法重载判断原则:“两同一不同”
- 两同:在同一个类中,方法名是相同的
- 一不同:方法参数列表不同(参数类型、参数个数、参数顺序)
- 只要参数类型、参数个数、参数顺序任意一个不同,就叫参数列表不同

方法重载的作用:屏蔽了同一功能的方法由于参数不同所造成方法名称不同。

注意:方法重载和方法的返回值类型无关,只是一般要求返回值类型相同。

方法参数的值传递机制

基本类型参数
传递的是参数值,就是相当于把值复制了一份过去

static void change(int x) {
	System.out.println("change before,x=" + x);//10
	x = 100;// 修改x变量的值
	System.out.println("change after,x=" + x);//100
}

public static void main(String[] args) {
	int a = 10;
	System.out.println("main before,a=" + a);//10
	change(a);
	System.out.println("main after,a=" + a);//100? 10?
}

得到的结果
main before,a=10
change before,x=10
change after,x=100
main after,a=10

内存分析图

引用类型参数
传递的是参数的地址

static void change(int[] arr) {
	System.out.println("change before,arr[0]=" + arr[0]);//10
	arr[0] = 30;//修改数组中第一个元素的值
	System.out.println("change after,x[0]=" + arr[0]);//30
}

public static void main(String[] args) {
	int[] a = new int[] { 10, 90 };
	System.out.println("main before,a[0]=" + a[0]);//10
	change(a);
	System.out.println("main after,a[0]=" + a[0]);//30
}

得到的结果
x main before,a[0]=10
change before,arr[0]=10
change after,x[0]=30
main after,a[0]=30
内存图分析

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值