java学习day004

一.方法

java中只有方法没有函数

1.1 基本认知

概念:

一堆代码的集合,使用这个方法就等于使用这些命令

优点: ​ 1 使程序变的更加简洁,可读性较强 ​ 2 有利于维护和扩展 ​ 3 提高代码复用,提高开发效率 ​ 4 提高程序灵活度

方法,不调用不执行,调用才执行,并把结果返回给调用处

1.2 方法声明

修饰符列表 返回值类型 方法名 (参数列表) {方法体}

修饰符列表: 可以有,可以没有,可以有多个(有的不可以同时出现) ​ 权限控制: public private protected 不写 四选一 ​ 其他: static 静态, final 最终, abstract 抽象, ...

返回值: 11种数据类型中任意一种,如果没有返回值,则写void(根据需求确定返回值类型或者是否需要返回值)

方法名: 符合命名规则即可

参数列表: (),没有参数又称为无参,多个参数 用逗号隔开,参数列表中的变量为局部变量 ​ 要做─件事,需要用到的必要的未知数

方法体: {}, 功能代码

return: 1 终止方法运行, 2 返回数据 ​ 如果方法有返回值,那么方法体中必须有return语句 返回数据并终止执行; ​ 如果没有返回值,那么return可以加可以不加,就算加,也只能终止执行

1.3 方法调用

静态方法调用: 类名.静态方法名(参数)调用,如果是调用当前类中的静态方法,类名可以省略

成员方法调用: 对象.成员方法名(参数)调用

1.4 方法分类

静态方法 成员方法 构造方法 (方法与方法是平级的不可以在方法里面创造方法)

静态方法: 使用static修饰

成员方法: 没有使用static修饰

构造方法: 用于创建对象使用

1.5 入参和出参

入参 : 参数列表 做这件事需要用到的未知数

出参 : 返回值 做完一件事之后,需要返回的数据,是出参,一般是你的打印语句

带返回值的需要接受返回值

写方法,只保证功能的实现,最终这个方法被用在什么地方,与声明无关

1.6 方法重载

java中如何确定方法的唯一性 : 方法名和参数列表

方法重载目的: 相同功能,相同名字,方便记忆.书写方便

方法重载: 方法名相同,参数列表不同.(1.个数不同 2.类型不同)

二.栈内存

2.1栈

java 中的内存划分和管理

java Runtime Data Area : java运行时区域,一般叫JVM内存

五大块区域: 程序计数器 , 方法区/静态区 , VM栈内存,本地方法栈,堆内存

程序计数器: 是一块较小的空间,主要保存该线程执行的行号

方法区: 保存静态资源文件,包括运行的class文件

VM栈: 以栈数据结构为模型开辟的─块空间, 用于执行方法调用(只有此进行方法) ​ 栈数据结构∶先进后出

        栈帧∶栈空间中的元素数据,称为栈帧 ​
        栈顶元素:最后一个添加的栈,在最上面 ​
        栈底元素:第一个添加的栈,在最下面

        压栈∶把栈帧放到栈空间的过程 ​
        弹栈:把栈帧在栈空间弹出的过程

本地方法栈: 用于执行本地方法,不用管

维内存: 保存对象及数组

2.2 栈运行

过程:

        编码,得到.java文件,然后进行 jiavac,编译,生成class文件,通过java命令执行s文件 ​
        1.开启jvm虚拟机,然后把相关class文件载入到JVM内存中的方法区 ​
        2.调用class 中的main方法,在栈内存开辟栈帧 ​
        3.执行main方法,如果main方法中没有其他引用,执行完后,JVM关闭 ​
        4.如果main方法中有其他方法引用,则再次创建新的栈帧来执行新方法(如果该去是其他类中的,则需要先把相关类加载方法区) ​
        5.如果被调用方法中,还有其他方法调用,则继续创建新栈帧 ​
        6.直到所有栈帧执行完毕,最后执行完毕main方法,则运行结束,JVM关闭.

三.递归

3.1 使用

直接递归: 自己调用自己,在当前方法中,对自身方法进行调用

public static void m1(){
    m1();
}

间接递归: 我调用你,你调用我

public static void m2(){
    m3();
}
public static void m3(){
    m2();
}

递归思想: 以此类推,和循环是一样的,都是以此类推的意思 递归和迭代是等价,都需要起始值,终止条件,步长,否则就会出现死循环

public static void main(String[] args){
    System.out.println( m2(3));
}
public static int m2(int n){
    if (n == 1) {
        return 1;
    }
return n + m2(n-1);
}

3.2 常见异常

栈内存溢出

3.3 斐波那契数列

//斐波那契数列
//前两位是1,后面的每一位的值都等于前两位的和
//1 1 2 3 5 8 13 21 34 55....
//使用递归方法
public static void Fibonacci(int n){
    if (n == 1 || n == 2){
        return 1;
    }
    return Fibonacci(n-1)+Fibonacci(n-2);
}
//使用循环方法
public static void Fibonacci(int n){
    if (n == 1 || n == 2){
        return 1;
    }
    long a = 1;
    long b = 1;
    long c = 1;
    for(int i = 3; i <= n; i++){
        c = a + b;
        a = b; 
        b = c;
    }
    return c;
}
  • 24
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值