JAVA入门基础--方法


前言

提示:这里可以添加本文要记录的大概内容:

方法的定义和调用
方法的设计练习
方法的重载
方法的值传递机制


提示:以下是本篇文章正文内容,下面案例可供参考

一、方法的定义与调用

1、方法定义

方法:完成某一特定功能(如:求和,统计数量等)且可以被重复调用的代码块定义方法。
语法格式:

[修饰符] 返回值类型 方法名称(参数类型 参数名1,参数类型 参数名2...) {
 	// 方法体 
 	[return 返回值;]
  }

最熟悉的main方法的定义。
main方法的定义
格式分析:
修饰符:public、static等, static修饰的方法直接使用类名调用即可,目前都使用static修饰
返回值类型:限定返回值的类型,方法在完成一个功能后,是否需要给调用者返回一个结果?
如果需要给调用者返回结果,就写上返回数据的类型
如果不需要给调用者返回结果,此时使用关键字void,表示无返回值
方法名称:用于调用方法,遵循标识符规范,使用动词表示,首字母小写,采用用驼峰表示法
形式参数:方法圆括号中的变量,可以有多个,多个参数使用,号分割。
方法体:方法的{ }中的代码,编写如何完成该功能的代码

return关键字:在方法体中使用return关键字
功能1:把值返回给该方法调用者,此时该方法不能使用void修饰
功能2:结束当前方法
注意:方法体没有return时,方法的返回类型声明为void,表示无返回。
实际参数:在调用某一个具体方法时,实际传递的参数值

注意事项
· 方法必须定义在类中,在Java中最小的程序单元是类,必须先有类
· 一个类中可以定义多个方法
· 方法和方法是平行的,不能在方法中定义另一个方法
· 方法的定义没有先后顺序

2、方法调用

方法调用:
· 方法调用格式:因为方法是static修饰的,可以直接用方法所在类的名称调用。
如果方法有返回类型,此时需要返回类型定义变量,接受方法返回的结果,并打印,这才有意义。
调用方法的地方,可以称之为调用者/调用处

语法格式:

返回值类型 变量 = 方法所在类名.方法名(实际参数); 
int result = MethodDemo.getSum(2 , 3);
 System.out.println(result); //输出5

调用方法时,传递的参数2和3就是实际参数,简称实参,和顺序,类型有关。
在这里插入图片描述

形式参数:完成一个功能,存在哪些未知的因素,把它们作为方法定义时的参数(形式参数)
返回值类型:完成一个功能,要不要给调用者返回一个结果?
如果需要给调用者返回结果,就写上返回数据的类型
如果不需要给调用者返回结果,此时使用关键字void,表示无返回

在方法中传递数组有一种更简单的方式——方法的可变参数。

[修饰符] 返回值类型 方法名称(参数类型 参数1,xx,xx,可变参数类型...参数名) { 
	方法体;
	[return 返回值;] 
 }

方法的可变参数其底层是就是一个一维数组类型
可变参数必须作为方法的最后一个参数,避免多个参数的歧义性
推论:方法最多只有一个可变参数

二、方法的重载

方法的重载(Overload),在同一类中,方法名称相同,但参数列表不同多个方法构成方法重载。

方法重载判断原则:“两同一不同”

两同:在同一个类中,方法名是相同的
一不同:方法参数列表不同(参数类型、参数个数、参数类型的顺序
只要参数类型、参数个数、参数顺序任意一个不同,就叫参数列表不同

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

public class MethodSignDemo { 
	// addNum(int,int) 这个是方法的签名 
	public static int addNum(int num1,int num2) { 
	int result = num1 + num2; 
	return result; 
	}
	public static void main(String[] args) {
	} 
}

有了方法签名,重载:在同一类中,方法名称相同,但方法签名不同的多个方法构成方法重载。
注意:
方法重载和方法的返回值类型无关,只是一般要求返回值类型相同。
实际开发中,需要更简单、快速的识别方法重载 —— 方法签名
方法签名:方法名称 + 参数类型,在同一个类中,方法签名必须是唯一的,否则编译报错。

三、方法参数的值传递机制

值传递:方法在调用时,把实参的值复制一份给形参的过程称为值传递。java方法调用时的参数传递过程就采用值传递。

基本类型参数

public 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 change before,a=" + a);//10 
	change(a);
	System.out.println("main change after,a=" + a);//100? 10?
}

结果

main before,a=10 
change before,x=10 
change after,x=100 
main after,a=10

在这里插入图片描述
当把main方法中a变量的值复制一份,传递给change方法,main方法中的a变量的值不受改变。

引用类型参数

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 change before,a[0]=" + a[0]);//10 
   change(a); 
   System.out.println("main change after,a[0]=" + a[0]);//30 
}

输出结果:

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、付费专栏及课程。

余额充值