type
status
date
slug
summary
tags
category
icon
password
Property
对于一个java程序来说,如果没有“方法”,会存在什么问题?代码无法得到复用
怎么提高复用性?可以定义方法,然后需要使用该功能的时候,直接调用一下方法即可
方法的定义
修饰符列表不是必选项,是可选的,方法的修饰符可以包括:public,protected,private,abstract,static,final,synchronized,其中public,protected,private不能同时存在
如果没有返回值使用void关键字;如果存在返回值可以是基本类型和引用类型。
如果存在返回值,使用return语句。return语句后面不能再执行语句,因为不可能会执行到,编译器会发生错误。只要有“return”关键字的语句执行,当前方法必然结束。
如果返回值类型是void,那么在方法体当中不能有“
return 值;
”这样的语句。但是可以有“return;
”语句,这个语句“return;”的作用就是用来终止当前方法的。形式参数列表中的每一个参数都是“局部变量”,方法结束之后内存释放。
方法的调用
实参和形参的类型必须一 一对应,个数也要一 一对应
方法调用的时候,什么时候“类名.”是可以省略的,什么时候不能省略?
a()方法调用b()方法的时候,a和b方法都在同一个类中,“类名.”可以省略,不在同一个类中“类名.”不能省略。
可变参数
可变参数用
类型...
定义,可变参数相当于数组类型:完全可以把可变参数改写为
String[]
类型:但是,调用方需要自己先构造
String[]
,比较麻烦另一个问题是,调用方可以传入
null
:而可变参数可以保证无法传入
null
,因为传入0个参数时,接收到的实际值是一个空数组而不是null
方法执行过程中,内存在JVM的分配
JVM三块主要的内存:栈内存、堆内存、方法区内存。堆内存和方法区内存各有一个,一个线程一个栈内存。
- 方法区最先有数据:方法区中放代码片段,存放class字节码,在类加载的时候载入
- 栈内存:方法调用的时候,该方法需要的内存空间在栈中分配;方法不调用是不会在栈中分配空间的。栈中主要存储的是方法体中的局部变量。
- 堆内存:在程序执行过程中使用new创建对象时,对象内部有实例变量,所以实例变量存储在堆内存中
变量分类:
- 局部变量:类的方法中的变量
- 成员变量:独立于方法之外的变量
- 类变量(静态变量):有 static 修饰,存储在方法区内存中
- 实例变量:没有 static 修饰
方法只有在调用的时候才会在栈中分配空间,并且调用时就是压栈。
方法执行结束之后,该方法所需要的空间就会释放,此时发生弹栈动作