【Java】方法

1.定义方法

修饰符 返回值类型 方法名 (参数列表){
// 方法体 ;
}

public static int max(int a,int b){
	int res;
	if(a>b)
		return a;
	return b;
}
  • 方法头 ( method header) 是指方法的修饰符 ( modifier)、返回 值类型 ( return value type)、方法名 (method name) 和方法的参数 (parameter)。
  • returnValueType 是方法返回值的数据类型。有些方法只是完成某些要求的操作,而不返回值。在这种情况下,returnValueType 为关键字 void。如果方法有返回值,则称为带返回值的方法 (value-returning method), 否则就称这个该方法为 void 方 法 (void method).
  • 定义在方法头中的变量称为形式参数 (formal parameter) 或者简称为形参 ( parameter) .参数就像占位符。当调用方法时,就给参数传递一个值,这个值称为实际参数 ( actual parameter) 或实参 (argument) .参数列表 ( parameter list) 指明方法中参数的类型、顺序和个数。方法名和参数列表一起构成方法签名 ( method signature )。参数是可选的,也就是说,方法可以不包含参数。
  • 方法体中包含一个实现该方法的语句集合。为使带返回值的方法能返回一个结果,必须要使用带关键字
    return 的返回语句。执行 return 语句时方法终止。
  • 在其他某些语言中,方法称为过程 ( procedure) 或函数 ( function)。这些语言中,带返回值的方法称为 函数,返回值类型为 void 的方 法称为过程。
  • 在方法 头中,需要对每一 个参数 进行单 独的数 据类型 声明。例如:max(int numl.int num2) 是正确的,而 max(int numl,num2) 是错误的。

2.调用方法

为了使用方法,必须调用 ( call 或 invoke) 它。
根据方法是否有返回值,调用方法有两种途径。

// 如果方法返回一个值,对方法的调用通常就当作一个值处理
int larger = max(3, 4);

// 如果方法返回 void, 对方法的调用必须是一条语句
System.out.println ( "Weicome to Java!") ;
//在 Java 中,带返回值的 方法也可以当作语句调用。这种情况下,函数调用者只需忽略返回值即可。

当程序调用一个方法时,程序控制就转移到被调用的方法。当执行完 return 语句或执行到表示方法结束的右括号时,被调用的方法将程序控制返还给调用者。
每当调用一个方法时,系统会创建一个活动记录(也称为活动框 架), 用于保存方法中的参数和变量。活动记录置于一个内存区域中,称为调用栈(callstack)。调用栈也称为执行栈、运行时栈,或者一个机 器栈,常简称为 “栈 当一个方法调用另一个方法时,调用者的活动记录保持不变,一个新的活动记录被创建用于被调用的新方法。一个方法结束运行返回到调用者时,其相应的活动记录也被释放。
调用栈以后进先出的方式来保存活动记录:最后调用的方法的活动记录最先从栈中移出。

3.按值传参

调用方法时,需要提供实参,它们必须与方法签名中
所对应的形参次序相同。这称作参数顺序匹配 (parameter order association)。
实参必须与方法签名中定义的形参在次序和数量上匹配,在类型上兼容。类型兼容是指不需要经过显式的类型转换实参的值就可以传递给形参(允许进行隐式转化)
当调用带参数的方法时,实参的值传递给形参,这 个过程称为按值传递( pass-byvalue)。如果实参是变量而不是字面值,则将该变量的值传递给形参。无论形参在方法中是否改变,该变量都不受影响。

4.重载方法

重载方法使得你可以使用同样的名字来定义不同方法,只要它们的参数列表是不同的。

public static int myPrint(int a,int b){};
public static int myPrint(double a){};
  • 重载方法可以使得程序更加清楚,以及更加具有可读性。执行同样功能但是具有不同参数类型的方法应该使用同样的名字。
  • 被重载的方法必须具有不同的参数列表。不能基于不同修饰符或返回值类型来重载方法

5.变量的作用域

变量的作用域 (scope of a variable) 是指 变量可以在程序中被引用的范围。
在方法中定义的变量称为局部变量 ( local variable)局部变量的作用域是从变量声明的地方开始,直到包含该变量的块结束为止。局部变量都必须在使用之前进行声明和赋值。

  • 参数实际上就是一个局部变量。一个方法的参数的作用域涵盖整个方法。
  • for 循环头中初始操作部分声明的变量,其作用域是整个 for 循环。在 for 循环体内声明的变量,其作用域只限于循环体内。一种常见的错误是在 for 循环中声明一个变量,然后试图在循环外使用它。
  • 可以在一个方法中的不同块里声明同名的局部变量,但是,不能在嵌套块中或同一块中两次声明同一个局部变量

*编程思想——方法抽象和逐步求精

方法抽象 ( method abstraction ) 是通过将方法的使用和它的实现分离来实现的。
方法的实现细节封装在方法内,对使用该方法的用户来说是隐藏的。这就称为信息隐藏( information hiding) 或封装( encapsulation)。
方法抽象的概念可以应用于程序的开发过程中。当编写一个大型程序时,可以使用“分治”(dividand-conquer) 策略,也 称为逐 步求精 ( stepwise refinement), 将大问题分解成子问题。子问题又分解成更小、更容易处理的问题。
“自顶向下”方法是自上而下,每次实现结构图中的一个方法。待实现的方法可以用存根方法 ( stub) 代替,存根方法是方法的一个简单但不完整的版本。使用存根方法可以快速地构建程序的框架。自底向上方法是从下向上每次实现结构图中的一个方法,对每个实现的方法都写一个测试程序 (称为驱动器 (driver)) 进行测试。
逐步求精将一个大问题分解为小的易于处理的子问题。每个子问题可以使用一个方法来实现。这种方法使得问题更加易于编写、重用、调试、修改和维护,又提高 了一个 程序中的方法重用。

  • 19
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值