欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java类与对象:方法的定义与调用

程序员文章站 2024-02-26 20:06:28
...

对象和类当中的方法
【开放问题】
分别求出1到10、20到30、35到45的整数和。
我们该怎么做呢?
在经过前面的学习,我们很自然的想到通过循环累加求和的方法计算

int sum = 0;
for (int i = 1;i  <= 10;i++)
	sum +=i;
System.out.println("Sum for 1 to 10 is " + sum);

然后对20到30求和再写这样一段代码

sum = 0;
for (int i = 20;i  <= 30;i++)
	sum +=i;
System.out.println("Sum for 20 to 30 is " + sum);

当求35到45又写一段这样的代码

sum = 0;
for (int i = 35;i  <= 45;i++)
	sum += i;
System.out.println("Sum for 35 to 45 is " + sum);

在写完后我们会发现,我们的代码在重复:

int sum = 0;
for (int i = 1;i  <= 10;i++)
	sum +=i;
	
System.out.println("Sum for 1 to 10 is " + sum);


sum = 0;
for (int i = 20;i  <= 30;i++)
	sum +=i;
	
System.out.println("Sum for 20 to 30 is " + sum);


sum = 0;
for (int i = 35;i  <= 45;i++)
	sum += i;
	
System.out.println("Sum for 35 to 45 is " + sum);

只有循环变量的值不同。
那么这样一段代码,可能会被反复使用的时候,我们会不会反复去写呢?显然不会,那么怎么解决呢?
我们的解决方案往往是我们今天要学习的方法

public static int sum(int i1,int i2) {
	int sum = 0;
	for(int i = i1;i <= i2;i++)
		sum +=i;
	return sum;
}
public static void main(String[] args) {
	System.out.println("Sum for 1 to 10 is " + sum(1,10));
	System.out.println("Sum for 20 to 30 is " + sum(20,30));
	System.out.println("Sum for 35 to 45 is " + sum(35,45));	
}

把反复执行的独立代码放到一个方法当中,下次要使用的时候就使用该方法并赋予相应的值。这样我们就可以反复使用它了,且得到效果相同。这就是方法解决问题,比原始途径简捷得多。

【方法】

  1. 方法的定义
  2. 方法的调用
  3. 参数传递
  4. 方法的优点

什么是方法?
方法是完成特定功能的、相对独立的程序段(方法是为完成一个操作而组合在一起的语句。)
方法一旦定义,就可以在不同的程序段中多次调用,故方法可以增强程序结构的清晰度,提高编程效率。

1.方法的定义

在Java程序中,方法只能在类中声明,格式如下:

	[修饰符] 返回值类型 方法名 ([参数])
		{
			//声明部分
			//语句部分

第一行为方法头,下面的大括号与大括号里的内容为方法体。


例如:我们定义一个方法来比较两个数得其中较大的数
Java类与对象:方法的定义与调用
定义在方法头的变量被称作形式参数。

2.方法的调用

方法的调用实质上把实际参数传递给形式参数的过程。
对于有返回值的方法作为表达式或表达式的一部分来调用,其在表达式中出现的形式为:
方法名 ([实际参数表])

当方法被调用时,就传递给参数一个值。这个值被称作实际参数或实参。
Java类与对象:方法的定义与调用
方法可以返回一个值。返回值类型是方法返回值的数据类型。如果方法不返回值,那么返回值类型就是关键字void。例如在main方法中返回值类型就是void。
一旦一个方法有返回值类型,那么这个方法里面至少有一条return语句。
多条return语句以后再讲。
调用方法
Java类与对象:方法的定义与调用
注意:
在有返回值的方法而言,return语句是必需的。下图(a)中的方法在逻辑上是正确的,但是它会有编译错误,因为Java认为该方法可能不是返回任何值。
Java类与对象:方法的定义与调用
为解决这个问题,需要删除(a)中的if(n < 0),这样,不管if语句怎么执行,编译器总可以到达return语句。

方法的调用存在特殊的嵌套和递归调用。

(1) 方法的嵌套调用
在一个方法内调用另一个方法称为方法的嵌套调用
(2) 方法的递归调用
递归就是依照自身定义事物的过程,递归是允许方法调用自身的过程。

3.参数传递

值传递(按值传参)

当调用带参数的方法时,实参的值传递给形参,这个过程称为按值传递。如果实参是变量而不是字面值,则将该变量的值传递给形参。无论形参在方法中是否改变,都不影响实际参数。

引用传递

引用就像是一个对象的名字或者别名,引用传递也称为地址传递。方法调用时,如果对方法传入参数,实际上传入的是远程控制的拷贝。形式参数在方法中所做的改变会影响实际参数。

参数的类型时基本数据类型就使用值传递,如果参数属于数组、类、接口等引用数据类型,那么使用的就是引用传递。这两种最主要的区别就是如果传递的实参是不是一个字面值,而是一个变量的时候,我们是将变量的值传递给它,这时候值传递是无论形参在方法中是否改变,都不影响实际参数。而形式参数在方法中所做的改变会影响实际参数。
就是前者不会对方法内部数据作出改变,而后者却改变了方法中的数据。

方法的优点
一旦写出一个方法就可以在任何地方重用它。
信息隐藏:方法的实现细节封装在方法内,对使用该方法的用户来说是隐藏的。
减少复杂度。

相关标签: Java学习