定义方法
方法头是指方法的修饰符、返回值类型、方法名和方法的参数。方法可以返回一个值。returnValueType是方法返回值的数据类型。有些方法只是完成某些要求的操作,而不返回值。在这种情况下,returnValueType为关键字void。如果方法有返回值,则称为带返回值的方法,否则就称这个该方法为void方法。
定义在方法头的变量称为形式参数,当调用方法时,就给参数传递一个值。这个值称为实际参数。参数列表指明方法中参数的类型、顺序和个数。为使带返回值的方法能返回一个结果,必须要使用带关键字return的返回语句。执行return语句时方法终止。
我们经常会说“定义方法”和“声明变量”。定义是指被定义的条目是什么,而声明通常是指被声明的条目分配内存来存储数据。
调用方法
如果方法返回一个值,对方法的调用通常就当作一个值处理。如果方法返回void,对方法的调用必须是一条语句,
当程序调用一个方法时,程序控制就转移到了被调用的方法。当执行完return语句或执行到表示方法结束的右括号,被调用的方法将程序控制返还给调用者。
main方法和其他方法很类似,区别在于它是由java虚拟机调用的。main方法的方法头永远都是一样的。它包括修饰符public和static,返回值类型void,方法名main,String[ ]表明参数是一个String型数组。main中的语句可以调用main方法所在类中定义的其他方法,也可以调用别的类中定义的方法。
通过传值进行参数传递
调用方法的时候是通过传值的方式将实参传给形参的。
方法的强大之处在于它处理参数的能力。调用方法时,需要提供实参,它们必须与方法签名中所对应的形参次序相同。这称作参数顺序匹配。实参必须与方法签名中定义的参数在次序和数量上匹配,在类型上兼容。类型兼容是指不需要经过显式的类型转换,实参的值就可以传递给形参。例如:将int型的实参值传递给double型的形参。
当调用带参数的方法时,实参的值传递给形参,这个过程称为按值传递。如果实参是变量而不是直接量,则将该变量的值传递给形参。无论形参在方法中是否改变,该变量都不受影响。
因为形参和实参是否同名是没有任何分别的。形参是方法中具有自己存储空间的变量。局部变量是在调用方法时分配的,当方法返回到调用者后它就消失了。
为了简便,Java程序员经常说将实参x传给形参y,实际含义是指将x的值传递给y。
重载方法
重载方法使得你可以使用同样的名字来定义不同的方法,只要它们的签名是不同的。在一个类中有两个方法,它们具有相同的名字,但有不同的参数列表。Java编译器根据方法签名决定使用哪个方法。
重载方法可以使得程序更加清楚,以及更加具有可读性。执行同样功能但是具有不同参数类型的方法应该使用同样的名字。
被重载的方法必须具有不同的参数列表。不能基于不同修饰符或返回值类型来重载方法。
变量的作用域
变量的作用域是指在程序中引用的范围。在方法定义的变量称为局部变量。局部变量的作用域从声明变量的地方开始,直到包含该变量的块结束为止。局部变量都必须在使用之前进行声明和赋值。
参数实际上就是一个局部变量。一个方法的参数的作用域涵盖整个方法。在for循环头初始动作部分声明的变量,其作用域只限于循环体内,是从它的声明处开始,到包含该变量的块结束为止。
可以在一个方法中的不同块里声明同名的局部变量,但是,不能在嵌套块中或同一块中两次声明同一个局部变量。