Java温习——方法

来源:互联网 发布:见微数据 搜披露 编辑:程序博客网 时间:2024/05/22 00:34

1 方法引入

把处理相同功能的代码写到一起,且重复使用,利于代码维护;


2 方法的定义和基本调用操作

(1)方法概念

程序中完成独立功能,并可重复使用的一段代码的集合


注:

函数(function) —— 可独立存在

方法(method) —— 依赖于对象


(2)方法定义的语法格式

[修饰符] <返回值类型> <方法名>([形式参数列表]){<方法体>return [返回值];}


注:

方法必须调用才能生效;

若方法使用static修饰,调用该方法的格式是类名.方法名(参数列表);若方法不使用static修饰,需要使用方法所在类的对象进行调用;

main方法专门由JVM负责调用执行,程序员只需启动JVM;


(3)方法定义位置

a. 在类中定义(在Java中最小的程序单元是类);

b. 方法定义在其他方法外——方法和方法是师弟关系;

c. 方法定义的先后顺序不影响,但方法调用的先后顺序影响;


3 方法中的术语

(1)修饰符

包含访问修饰符(public/ protected/ friendly/ private)、static、final、abstract、synchronized;


(2)返回值类型

事先约定返回值的数据类型;

若无返回值,则使用关键字void声明;


(3)方法名

遵循标识符规范;

使用动词表示,且首字母小写,若由多个单词组成,使用驼峰表示法(如getStuName);


(4)形参

形式参数,定义在方法圆括号中的变量;

可有0个或多个形参;

在方法被调用时用于接收外界传入的数据;


(5)参数列表

包含参数的个数、类型、顺序;


(6)方法签名

包含方法的名称、参数列表;

在同一个类中,方法签名是唯一的!!!


(7)方法体

方法的花括号{}中的代码,表示具体完成该功能的代码;


(8)返回值

在方法体内,使用关键字return,用于给调用者返回一个结果值(不能使用void修饰),或结束当前方法;


(9)实参

实际参数,调用者调用方法时,实际传递给形参的数据;


4 如何定义方法

(1)定义什么功能方法?

不要太纠结,熟能生巧;

(2)是否需要返回值类型?

方法就是完成某一功能,结束时是否需要给调用者返回一个结果数,若否,使用void声明;若是,把该结果的数据类型作为该方法的返回值类型;

(3)是否需要形参?

方法在完成某一功能过程中,是否有未知的因素参与,若有,作为参数传递;若无,没有形参;


5 方法的执行流程分析



如发短信功能方法实现



如登录功能方法实现



6 方法重载Overload

(1)定义

在同一类中个,某方法允许存在一个以上同名的方法,只要参数列表不同即可;


(2)作用

屏蔽了同一功能的方法由于参数不同而导致的方法名不同;


(3)判断原则 —— “两同一不同”

两同 —— 同类、同方法名

一不同 —— 方法参数列表不同(参数类型、个数、顺序)


注:

方法重载只要参数类型、参数个数、参数顺序中的一个不同即可;

方法重载与返回值无关,一般要求返回值一致;


如实现int和double类型的两数相加功能

class OverloadDemo {static int add(int num1, int num2){return num1 + num2;}static double add(double num1, double num2){return num1 + num2;}public static void main(String[] args) {System.out.println(OverloadDemo.add(3.25, 8.29));System.out.println(OverloadDemo.add(3, 8));}}


7 方法重载在JDK中的使用举例



8 方法的递归操作Recursion

方法自己调用自己;

必须有出口,否则为死循环;


如斐波那契数列,其通项公式是f(0)=0, f(1)=1, f(n)=f(n-1)+f(n-2) (其中,n>2),使用递归实现

static int func(int num){if( num == 0 ){return 0;}else if( num ==1 ){return 1;}else{return func(num -1) + func(num - 2);}}


9 JVM内存模型


JVM内存划分是人为地根据不同内存空间的存储特点及存储的数据进行的;

(1)程序计数器(不常用)

当前线程所执行的字节码的行号指示器;


(2)本地方法栈(不常用)

为虚拟器使用的native方法服务;


(3)Java虚拟机栈(常用)

描述Java方法执行的内存模型,每个方法被执行的同时,创建一个栈帧来存储局部变量表、操作栈、动态链接、方法出口等信息;

每个方法创建一个栈帧,当方法调用完毕,该方法的栈帧就被销毁;


(4)Java堆(常用)

被所有线程共享的一块内存区域,在虚拟机启动时创建;

所有的对象实例数组在堆上分配;


(5)方法区(常用)

线程共享的区域,存储已被虚拟机加载的类信息、常量、静态变量即时编译器编译后的代码数据等;

该区域的内存回收目标主要针对常量池的回收和对类型的卸载;


10 垃圾回收器GC (Garbage Collection)

Java自动垃圾回收机制,简单理解为,程序员不需手动控制内存的释放,当JVM发现内存资源紧张时,会自动清理无用对象(没有被引用到的对象)所占用的内存空间;


注:

Java的垃圾回收器,自动回收的是堆空间的内存;

而栈空间内存会随对应方法的执行结束而自动释放该方法的栈帧内存;


0 0
原创粉丝点击