java语法基础4——方法

方法

方法的定义和调用

/*	方法定义语法:
	[修饰符] 返回类型 方法名(形式参数列表) {
		方法体;
		return;
	}
*/
// 定义求两个整数数和的方法
public static int getSum(int a, int b) {
	return a + b;	// 本方法返回类型是int所以需要return,如果返回类型是void则不需要return
} 
// public和static都是修饰符,public修饰表示是公共的方法,可以在任何地方调用,static修饰的方法叫做静态方法,在本类中可以直接使用类名调用,当然修饰都是可写可不写的

/*	方法调用语法:
	类名.方法名(实际参数列表);
*/
// 例如本类是Sum类
Sum.getSum(2,3); // 或者 getSum(2,3);
// 需要注意的就是形参和实参,方法中需要用到运算的变量未知,就用形式参数来表示,调用时传入实际参数

方法的设计练习

如何定义一个方法?主要是确定有没有参数,是什么参数,有没有返回,返回什么。
1.形式参数:完成一个功能,存在哪些未知的因素,把它们作为参数
2.返回类型:完成一个功能要不要给调用者返回一个结果?
如果需要给调用者返回结果,就写上返回数据的类型
如果不需要给调用者返回结果,此时使用关键字void,表示无返回
// 需求:定义一个方法,传入两个参数,一个double数组表示多个货品的价格,一个double类型的折扣,返回货品总价格

// 定义方法
static double totalPrice(double[] price, double discount) {
	double total = 0;		// 定义总价变量,用来接收累加的结果
	for (double ele : price) {	// for-each遍历数组
		total += ele * discount;
	}
	return total;	// 返回总价格
}

// 调用方法
public static void main(String[] args) {
	int[] price = {2, 3.5, 5, 6, 9};
	System.out.println(totalPrice(price,0.8));
}

方法的可变参数

在方法中传递数组有一种更简单的方式——方法的可变参数,其本质是一个简写,目的是让开发者写代码更简单。

1.方法的可变参数其底层就是一个一维数组
2.可变参数必须作为方法的最后一个参数,避免多个参数的歧义性

// 需求:定义一个方法,传入两个参数,一个double数组表示多个货品的价格,一个double类型的折扣,返回货品总价格(使用可变参数)

// 定义方法
static double totalPrice(double discount, double... price) {	// 使用可变参数
	double total = 0;		// 定义总价变量,用来接收累加的结果
	for (double ele : price) {	// for-each遍历数组
		total += ele * discount;
	}
	return total;	// 返回总价格
}

// 调用方法
public static void main(String[] args) {
	System.out.println(totalPrice(0.8,2,3.5,5,6,9));	// 调用时按照顺序列举就行,不用先传入数组
}

方法的重载

方法的重载:一同二不同。方法名相同,返回类型不同,参数列表不同。

1.参数列表不同:参数个数、参数顺序、参数类型之中任意一个不同都可以说是参数表不同
2.作用:屏蔽了同一功能的方法由于参数不同所造成方法名称不同
3.注意:方法重载和方法的返回值类型无关,只是一般要求返回值类型相同

// 需求:多个数求和,两个数求和,三个数求和,四个数求和
// 方法重载
static int getSum(int a, int b) {	// 两个数之和
	return a + b;
}

static int getSum(int a, int b, int c) {	// 三个数之和
	return a + b + c;
}

static int getSum(int a, int b, int c, int d) {		// 四个数之和
	return a + b + c + d; 
}

// 调用
public static void main(String[] args) {
	// 通过参数列表判断使用哪一个方法
	getSum(2, 3);
	getSum(2, 3, 4);
	getSum(2, 3, 4, 5);
}

方法的值传递机制

1.基本数据类型传递的是值
2.引用数据类型传递的是地址(这里以数组为例)

方法值传递机制分析图:
在这里插入图片描述

// 方法的值传递机制
static void getNum(int a) {
	System.out.println(a);
	a = 100;
	System.out.println(a);
}

static void getNum(int[] arr) {
	// java.util.Arrays.toString(数组名);这个是调用jdk里面的类打印数组
	System.out.println(java.util.Arrays.toString(arr));
	arr[0] = 100;
	System.out.println(java.util.Array.toString(arr));
}

public static void main(String[] args) {
	// 基本数据类型值传递
	int a = 10;
	System.out.println(a);
	getNum(a);
	System.out.println(a);
	//	控制台打印结果依次为:10, 10, 100, 10
	// 基本数据类型传递的是值,只在自己的作用域内有用

	// 引用数据类型值传递
	int arr[] = {1,2,3};
	System.out.println(java.util.Arrays.toString(arr));
	getNum(arr);
	System.out.println(java.util.Arrays.toString(arr));
	/*	控制台打印结果依次为:
		[1, 2, 3]
		[1, 2, 3]
		[100, 2, 3]
		[100, 2, 3]
		引用数据类型传递的是地址,是把数组在堆空间分配的地址传了过来,当对数组进行更改以后,再调用数据已经发生了改变
	*/
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值