算法(4th ed)(31):基础——基础编程模型 3.6.3

阅读数:12 2019 年 10 月 30 日 06:46

算法(4th ed)(31):基础——基础编程模型 3.6.3

(静态方法:方法的性质)

对方法所有性质的完整描述超出了本书的范畴,但以下几点值得一提。

  • 方法的参数按值传递:在方法中参数变量的使用方法和局部变量相同,唯一不同的是参数变量的初始值是由调用方提供的。方法处理的是参数的值,而非参数本身。这种方式产生的结果是在静态方法中改变一个参数变量的值对调用者没有影响。本书中我们一般不会修改参数变量。值传递也意味着数组参数将会是原数组的别名(见 1.1.5.4 节)——方法中使用的参数变量能够引用调用者的数组并改变其内容(只是不能改变原数组变量本身)。例如,Arrays.sort() 将能够改变通过参数传递的数组的内容,将其排序。
  • 方法名可以被重载:例如,Java 的 Math 包使用这种方法为所有的原始数值类型实现了 Math.abs()Math.min()Math.max() 函数。重载的另一种常见用法是为函数定义两个版本,其中一个需要一个参数而另一个则为该参数提供一个默认值。
  • 方法只能返回一个值,但可以包含多个返回语句:一个 Java 方法只能返回一个值,它的类型是方法签名中声明的类型。静态方法第一次执行到一条返回语句时控制权将会回到调用代码中。尽管可能存在多条返回语句,任何静态方法每次都只会返回一个值,即被执行的第一条返回语句的参数。
  • 方法可以产生副作用:方法的返回值可以是 void,这表示该方法没有返回值。返回值为 void 的静态函数不需要明确的返回语句,方法的最后一条语句执行完毕后控制权将会返回给调用方。我们称 void 类型的静态方法会产生副作用(接受输入、产生输出、修改数组或者改变系统状态)。例如,我们的程序中的静态方法 main() 的返回值就是 void,因为它的作用是向外输出。技术上来说,数学方法的返回值都不会是 voidMath.random() 虽然不接受参数但也有返回值)。

2.1 节所述的实例方法也拥有这些性质,尽管两者在副作用方面大为不同。

评论

发布