Java方法
来源:互联网 发布:淘宝买铁观音 编辑:程序博客网 时间:2024/05/17 21:54
方法的定义与语法规则
Java中的方法,我们可以将其看成一个功能的集合,他们是为了解决特定问题的代码组合。比如司机会开车,老师会教书一样,不同的方法可以实现不同的功能。
方法的定义语法:
访问修饰符 返回值类型 方法名(参数列表){ 方法体}
在上面的语法说明中:
访问修饰符:代表方法允许被访问的权限范围, 可以是 public、protected、private 甚至可以省略 ,其中 public 表示该方法可以被其他任何代码调用,其他几种修饰符的使用我们会在后面章节中详细讲解。
返回值类型:方法返回值的类型,如果方法不返回任何值,则返回值类型指定为 void (代表无类型);如果方法具有返回值,则需要指定返回值的类型,并且在方法体中使用 return 语句返回值。
方法名:是方法的名字,必须使用合法的标识符。
参数列表:是传递给方法的参数列表,参数可以有多个,多个参数间以逗号隔开,每个参数由参数类型和参数名组成,以空格隔开。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。
方法体:方法体包含具体的语句,定义该方法的功能。
根据方法是否带参、是否带返回值,可将方法分为四类:
- 无参无返回值方法
- 无参带返回值方法
- 带参无返回值方法
- 带参带返回值方法
例如一下代码的calcSum方法用来计算两门课程的成绩总分:
public class PrintScore { public static void main(String[] args) { // 创建对象,对象名为a PrintScore a = new PrintScore(); int rSum; //设置一个int型变量,用来接收方法的返回值 // 调用方法,传入两门课程的成绩 rSum = a.calcSum(78,99); System.out.println("总分:"+ rSum); } /* * 功能:计算两门课程考试成绩的总分并输出总分 * 定义一个包含两个参数的方法,用来传入两门课程的成绩 */ public int calcSum(int a, int b){ int sum= a + b; return sum; }}
如上所示:方法名为calcSum
,它的修饰符是public
,它有两个参数int a
和int b
,在方法调用的时候必须传入这两个参数。它有一个int 型
的返回值,所以在方法里,有一条语句return sum;
用来返回sum
的值,其中sum
类型也为int 型
。而在方法调用的时候,我们用一个int 型
变量rSum
来接收这个返回值。方法calcSum
实现了将两门课程的总成绩算出并返回。
注意:
方法体放在一对大括号中,实现特定的操作
方法名主要在调用这个方法时使用,需要注意命名的规范,一般采用第一个单词首字母小写,其它单词首字母大写的形式
调用方法的语法是
对象名.方法名
(类和对象后面会讲到)
参数与参数列表
在现实生活中,我们为了完成某件事情之前是需要一些条件的,比如我们买东西肯定是需要钱的。当然,方法也是如此。我们需要方法帮我们完成某项功能的时候,需要根据需求去调整条件。于是就有了参数。
我们可以通过在方法中加入参数列表接收外部传入的数据信息,参数可以是任意的基本类型数据或引用类型数据。
例如:
public void printName(String name){ System.out.println(name);}
上面就是一个方法,方法名为printName
,无返回值,参数类型为String
,参数名name
,它的功能是打印姓名,我们通过参数将姓名传入到这个方法中,利用方法将姓名输出到控制台上。
调用带参方法与调用无参方法的语法类似,但在调用时必须传入实际的参数值。语法为对象名.方法名(参数1,参数2...)
在这里我们必须区分什么是实参什么是形参。我们先看一个例子。
public class PrintScore { public static void main(String[] args) { // 创建对象,对象名为a PrintScore a = new PrintScore(); double rAve; //用来存放返回的平均成绩 //两课的成绩,是我们实际的参数 int sub1 = 78; int sub2 = 99; // 调用方法,传入两门课程的成绩 rAve = a.calcAve(sub1,sub2); System.out.println("平均分:"+rAve); } /* * 功能:计算两门课程考试成绩的平均分并输出平均分 * 定义一个包含两个参数的方法,用来传入两门课程的成绩 * 两个参数 a 和 b 为我们的形参,只在方法内有效 */ public double calcAve(int a, int b){ double ave = (a + b) / 2; return ave; }}
我们可以通过内存的图示来简单地说明一下。
上图是方法调用前内存的情况,所有的变量都存放在桟中,由系统统一管理,因为我们在定义变量rAve
时未对它进行初始化,所以它的值是随机的,由它所在空间原有的值决定。
我们在创建对象时系统也会为对象分配内存空间,这里不详细说明。
方法调用时,系统会专门为方法开辟一块空间用来存放方法内的变量。此时大家可以看到,sub1
和sub2
两个实参其实并没有进入方法中,只是将它们两个的值赋值给了形参a
和b
。
方法调用结束后,系统会释放掉方法所产生的空间,回收系统资源。该方法有返回值,并被rAve
接收了。
注意:
调用带参方法时,必须保证实参的数量、类型、顺序与形参一一对应
调用方法时,实参不需要指定数据类型
当方法参数有多个时,多个参数间以逗号分隔
2.3 方法重载
在Java中通过在类中写多个方法,这类方法的方法名相同,方法的参数列表不同
(参数的个数和参数类型的不同)来实现方法的重载。所谓方法重载就是:在一个类中,有一系列的方法具有方法名相同,但参数列表不同,这类方法的实现就是方法重载。
public class Test { void f(int i) { System.out.println("i=" + i); } void f(float f) { System.out.println("f=" + f); } void f(String s) { System.out.println("s=" + s); } void f(String s1, String s2){ System.out.println("s1+s2="+(s1+s2)); } void f(String s, int i){ System.out.println("s="+s+",i="+i); } public static void main(String[] args) { Test test = new Test(); test.f(3456); test.f(34.56f); test.f("abc"); test.f("abc","def"); test.f("abc",3456); }}
运行结果:
在进行方法重载的时候需要遵循以下的规则:
- 在使用方法重载的时候,必须通过方法中不同的参数列表来实现方法的重载。如:方法的参数个数不同或者方法的参数类型不同。
- 不能通过访问权限,返回值类型和抛出的异常来实现重载
- 重载的方法中允许抛出不同的异常
- 可以有不同的返回值类型,只要方法的参数列表不同即可
- 可以有不同的访问修饰符
2.4 返回值
如上面的例子所示,方法是一个实现了条件输入和结果输出的过程,往往我们需要对方法的结果进行进一步的处理,这时候我们就需要方法返回值了。
注意:
如果方法的返回类型为 void ,则方法中不能使用 return 返回值。
方法的返回值最多只能有一个,不能返回多个值。
方法返回值的类型必须兼容,也就是说如果返回值类型为 int ,则不能返回 String 型值
调用带返回值的方法时,由于方法执行后会返回一个结果,因此在调用带返回值方法时一般都会接收其返回值并进行处理
- Java方法
- java 方法
- JAVA 方法
- java方法
- Java方法
- java方法
- java方法
- Java方法
- java方法
- JAVA 方法
- Java方法
- JAVA;方法
- java方法
- Java 方法
- Java 方法
- Java方法
- Java 方法
- Java 方法
- 送给还没炖熟的胖头鱼
- LeetCode----- 31.Next Permutation
- 联通宽带路由器的设置
- Python sys模块的常用方法
- 寻找遗失的Kernal32.dll—WinDbg&汇编—手动&动态
- Java方法
- HDU 1754 I hate it 线段树 单点修改、最大值
- 课本114页一维数组程序举例
- javascript-基础3
- git 命令合并分支代码
- java笔记杨枝11.11/11.12
- java使用flySaucer实现html转pdf
- 【NOIP普及组2017】图书管理员Librarian
- java后台面试题整理