本文主要是介绍《疯狂java讲义》学习(5):方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
方法详解
方法是类或对象的行为特征的抽象,方法是类或对象最重要的组成部分。但从功能上来看,方法完全类似于传统结构化程序设计里的函数。值得指出的是,Java里的方法不能独立存在,所有的方法都必须定义在类里。方法在逻辑上要么属于类,要么属于对象。
方法的属性
不论是从定义方法的语法来看,还是从方法的功能来看,都不难发现方法和函数之间的相似性。实际上,方法确实是由传统的函数发展而来的,方法与传统的函数有着显著不同:在结构化编程语言里,函数是一等公民,整个软件由一个个的函数组成;在面向对象编程语言里,类才是一等公民,整个系统由一个个的类组成。因此在Java语言里,方法不能独立存在,方法必须属于类或对象。方法也不能像函数那样被独立执行,执行方法时必须使用类或对象来作为调用者,即所有方法都必须使用“类.方法”或“对象.方法”的形式来调用。
同一个类的一个方法调用另外一个方法时,如果被调方法是普通方法,则默认使用this作为调用者;如果被调方法是静态方法,则默认使用类作为调用者。
Java语言里方法的所属性主要体现在如下几个方面:
- 方法不能独立定义,方法只能在类体里定义。
- 从逻辑意义上来看,方法要么属于该类本身,要么属于该类的一个对象。
- 永远不能独立执行方法,执行方法必须使用类或对象作为调用者。
使用static修饰的方法属于这个类本身,可以使用类调用,也可以使用对象调用,实际上还是使用这个对象所属的类作为调用者。没有使用static修饰的方法属于类的对象,只能使用对象调用,不能用类调用。
方法的参数传递
Java里方法的参数传递方式只有一种:值传递。所谓值传递,就是将实际参数值的副本(复制品)传入方法内,而参数本身不会受到任何影响,详细见:
public class PrimitiveTransferTest
{public static void swap(int a, int b){//下面三行代码实现a、b变量的值交换//定义一个临时变量来保存a变量的值int tmp=a;// 把b的值赋给aa=b;// 把临时变量tmp的值赋给ab=tmp;System.out.println("swap方法里,a的值是"+ a + ";b的值是" + b);}public static void main(String[] args){int a=6;int b=9;swap(a, b);System.out.println("交换结束后,变量a的值是"+ a + ";变量b的值是" + b);}
}
运行上面程序结果如下:
swap方法里,a的值是9;b的值是6
交换结束后,变量a的值是6;变量b的值是9
从上面运行结果来看,swap方法里a和b的值是9、6,交换结束后,变量a和b的值依然是6、9。从这个运行结果可以看出,main方法里的变量a和b,并不是swap方法里的a和b。当程序执行swap方法时,系统进入swap方法,并将main方法中的a、b变量作为参数值传入swap方法,传入swap方法的只是a、b的副本,而不是a、b本身,进入swap方法后系统中产生了4个变量。
前面看到的是基本类型的参数传递,Java对于引用类型的参数传递,一样采用的是值传递方式。但许多初学者可能对引用类型的参数传递会产生一些误会。下面程序示范了引用类型的参数传递的效果:
class DataWrap
{public int a;public int b;
}
public class
这篇关于《疯狂java讲义》学习(5):方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!