方法
方法的概念
Java的方法(Method)类似于其它语言的函数(Function),指一段可以直接被另一段程序或代码引用的程序或代码。
面向过程语言中,整个程序就是由函数(相互调用)组成的。
面向对象语言中,方法(函数)是类的组成部份,整个程序是由很多类组成的。
方法的组成要素
- 修饰符
- 返回值
- 方法名
- 参数
- 方法体
方法的优点
- 使程序变得更简短清晰
- 有利于程序的维护(修改)
- 可以提高开发效率
- 可以提高代码的重用性
方法的命名规则
- 方法名必须以字母、下画线 、$、数字组成
- 不能以数字开头
- 方法名尽量由单词组成,如果有多个单词,第一个单词首字母小写,其它单词首字母大写
- 在同一个类中,方法名一般不能重名(方法重载除外)
方法的声明
语法
访问权限修饰符 其它修饰符 返回值类型 方法名(参数列表){
方法体代码
return 返回值;(如果返回值类型为 void 此行可省略)
}
事例
public static void print(){
System.out.println("我是打印方法");
//return;因为返回值类型为 void 所以此行可省略
}
方法的调用
当函数定义以后,并不会主动执行,需要被调用才会执行。调用一个函数回进入到函数内部执行里面的代码,执行完毕后会回到调用语句的下一行继续执行。
public static void main(String[] args) {
sayHello();
sayHello();
}
注:如果本类调用直接 通过函数名字调用 ,如果跨类调用,需要通过类名.函数名
方法的参数
- 形参:就是方法声明中的参数,在方法调用前为没有赋值的变量
- 实参:方法调用时,写在方法名后面小括号中的变量或常量
- 传参:方法被调用时,用实参给形参赋值,这个过程叫传参
- 传参时需要注意的事项:实参的数量和类型必须和形参的数量和类型保持一致(相兼容的数据类型)
方法的返回值
- 在没有返回值的方法中使用 return 语句,要求 return单独成立一条语句,类似于break或者continue,后面不能跟任何的数值,直接跟一个分号,此时 return 语句作用为 结束整个方法的运行。
- 在有返回值的方法中使用 return 语句,要求 return后加加空格后跟着需要返回的变量和结尾的分号,此时 return语句作用为 结束整个方法的运行,并将返回的变量传给方法的调用者.要求 返回值的实际变量类型需要与方法声明的返回值类型保持一致。
- 如果方法声明中有返回值,在方法体中使用了选择语句,如果需要有不同情况下的返回结果,那就都需要写 return 语句
- 无论在方法体的任何位置出现 return 语句,本次方法的调用都立即结束,返回到调用者。
方法的内存展示(重)
java的内存分区
java将内存分成了5块儿,分别是堆区,栈区,方法区,本地方法区,寄存器
- 栈区:里面存放数据的特点是:先进后出,主要将加载时的局部变量和方法放在栈区,数据的特点是使用完立刻释放
- 堆区:存放的是实体(对象和数组),实体可以同时存放多个值,实体里面的变量如果不赋值,会有默认值。整型数据默认值是0,boolean—false
- 方法区:程序运行中的二进制文件等(比如.class)
- 本地方法区:存放外界引入的c,c++等的内容
- 寄存器:也可以称为计数器
注!!:堆区中的数据会在某个时刻被释放-通过垃圾回收机制。垃圾回收机制是通过一个线程控制的,由于这个线程的等级比较低,所以不会立刻执行,数据就不会立刻释放。
执行方法就是一个压栈的过程
方法的重载
定义:同一个类中,方法名字相同,参数列表不同,就叫方法重载
- 参数列表的不同包括,参数个数不同,参数数据类型不同,参数顺序不同
- 方法的重载与方法的修饰符和返回值没有任何关系
class OverloadingDemo
{
public static void show() {
System.out.println("无参无返回值的show");
}
//1.改变参数
public static void show(int a) {
System.out.println("int的show");
}
public static void show(String a) {
System.out.println("String的show");
}
public static void show(String a,int b) {
System.out.println("String int的show");
}
}