一,方法的调用
方法分为静态(static)和非静态方法。
·如果被调用的方法是有static,那么使用它的时候,可以 类名.方法名()的形式
·如果被调用的方法没有static,那么使用它的时候,需要 对象.方法名的形式。
·调用方法时,必须传入对应的类型,个数的参数值(无参/有参)。
·如果被调用的方法名前面时void,说明方法时没有结果返回,那么调用时,调用语句只能单独加 分号构成语句
·如果被调用的方法名前面不是void 说明方法是有结果返回的,那么调用时,就可以用变量来接受这个返回值,也可以直接输出这个返回值。
二,方法的特点
·方法不调用不执行
·方法调用1次执行1次
·main方法时java程序的入口
三,方法的调用过程分析
JVM的运行时内存:
·方法区(原空间)。用来存储加载的类型信息,即类型的定义信息,包括方法的定义信息。
·java虚拟机栈:用来存储“正在”调用的方法的局部变量信息。
·本地方法栈:用来存储“正在”调用的底层的C/C++的本地方法。
·堆:用来存储“new”出来的对象的信息,包括数组对象。
·程序计数器:先不讨论,和多线程有关。
四,方法的参数传递机制(面试题)
参数类型是基本数据类型时,实参给形参赋完值之后,它们就完全没有关系了,无论怎么修改,和实参都无关。
五,参数类型时引用数据类型
java中的引用数据类型:
·类(class)
·数组(【】)
·接口
·枚举
·注解
·记录
参数是引用数据类型(数组等),形参对元素的修改,相当于实参对元素的修改,因为此时形参和实参指向了同一个数组对象(数组也是对象)
如果形参重新newl,接下来的操作和实参无关了。
六,方法的重载
在同一个类中或父子类中,出现了方法名相同,形参列表不同(形参个数,数据类型,)和形参名无关的两个或多个方法,这种现象称为方法的重载(Overload)。注意:方法的重载和返回值类型无关。
1方法重载后匹配的原则
·先找最匹配的
实参的个数和类型与形参的个数和类型一致
·找可以兼容的
当没有最匹配的,可以找兼容的。
先找最匹配的,如果有最匹配的就不看其他的了。
如果及找不到最匹配的,也找不到可以兼容的,单兼容程度相同的方法只能1个。
换句话来说找不到兼容的,或者找到多个相同兼容的方法都会报错。
七,可变参数
参数的个数可变
语法格式
(数据类型...参数名)
(数据类型 参数名1,数据类型 参数名2,数据类型...参数名)
1.可变参数的特点和要求
·一个方法最多只能声明一个可变参数
·可变参数只能是参数裂变的最后一个参数
·可变参数的形参可以当初数组使用
·可变参数的实参可以是0-n个元素,或对应类型的数组对象
·如果多个方法都包含可变参数的话,可能会出现同时匹配的情况
八 .方法的递归调用
方法的递归调用:一个方法出现自己调用自己的情况,就成为递归调用。
注意:方法的递归如果没有调整好,会出现StackOverError。