day_04 方法续、内存划分、递归

1.流程控制:控制程序的不同执行分支。
    1.顺序结构

    2.分支结构
        1.if……else……
            单、双、多分支。(多分支如果最后是else if,那么此分支有不执行情况)
            扩展:判断控制台输入(判断年龄)
        2.switch   (default放哪都行)
            只能判断相等,不能判断范围!
            如果分支没有break,会导致case穿透。
            case合并:利用case穿透,做到 || 效果。

            思想:switch不可以传小数,只能是int和字符串,录成绩时先强制转换为int型。

    3.循环结构
        1.for
            计数循环。 初始值可以写在外面。
        2.while
            判断次数。 为假跳出。
            注:for(;true;) 等价于 while(true)。
        3.do…while
            保证循环至少执行一次。
        4.break和continue
            break:结束当前循环。想在内层循环中终止外层循环,给外层循环起个名outerFor,break outerFor (找书,找到停手)
            continue:跳过当前次循环,继续下次。 (点名)
        5.嵌套循环:
            练:九九乘法表、矩阵(先加一个空格,再起一次空白)。

2.方法 (也还行的重点)
    函数(全局的;C,C++)
    方法(局部的;Java)
    
    1.目的:可重用性,方便。使程序更加简短。
    2.方法声明(怎么创建):
        修饰符列表 返回值类型 方法名(参数列表){方法体} 

        修饰符列表:
            权限修饰:public protected private 不写  四选一
            其他修饰:static(静态变量) synchronized 【abstract  final】二选一
            返回值类型:(给他东西)11种数据类型任意一种(自动转换),不需要返回值写void
            参数列表:(他给东西)需要的必备条件,可以作为入参,多个用逗号隔开

                形参:再方法声明的时候,定义的参数列表
                实参:方法调用时,实际传入的参数
                注:
        
        3.方法分类:
            1.静态方法:使用static修饰的方法
            2.成员方法:没有static修饰的方法
            3.构造方法:创建对象使用

        4.调用:
            静态方法:类名.静态方法名(参数),同类中 类名可以省略。
            成员方法:对象引用.成员方法名(参数)
        
        方法不调用不执行,调用才执行,并把结果返回到调用处。

        编写方法 只考虑功能的实现,最终这个方法被用来做什么,与声明无关。

    3.出参 方法名(入参){  return 出参;} 


    4.方法重载(overload):方法名相同, 参数列表不同(个数不同或类型不同),根据参数列表自动匹配功能。

3.内存划分:
    1.程序计数器:一小块内存区域,作用是可以看作当前程序的位置指示器。
    2.静态区/方法区:保存程序文件(class文件)以及静态数据,方法被调用之前,也保存在静态区,内部还有运行时常量池。
    3.VM栈(栈内存):以栈数据结构为模型开辟的一段空间,特性:先进后出
                     栈:一种数据结构,先进后出。
                     栈构成:
                        栈空间:栈内存,内部空间。
                        栈帧:栈内每一个元素。
                        栈底元素:第一个放进去的栈帧。
                        栈顶元素:最后一个放进去的栈帧。
                     栈操作:
                        压栈:往栈中放栈帧。
                        弹栈:把元素弹出去的过程。
                     栈内存:是用来执行方法的,所有方法必须在栈内运行。
    4.本地方法栈:用来执行一些本地方法,比如hashCode 等 , 模型和操作都和VM栈一致 , 不用管,
    5.堆内存:保存对象。

    程序运行机制:1.Java程序编写
                 2.javac编译,得到class文件。
                 3.Java命令运行:
                        1.开启JVM,把运行的程序载入内存,把class文件保存到静态区。
                        2.加载完后,JVM自动调用程序中的main方法。
                        3.在栈内开辟栈帧,执行main方法。
    
    方法调用:压栈
    方法执行完成:出栈
    加载:
        静态加载:程序开始运行,就把相关所有文件全部一次性载入内存。
        动态加载:只载入核心文件,用到什么加载什么。(java)

4.递归:
    1.概述和基本使用:
        递归:方法中调用当前方法。
        递归思想:
            递归和迭代是等价的,就是循环。
        应用场景:
            循环和递归都能做的,优先使用循环,递归十分消耗内存,运行效率低。
            树状结构非递归莫属。
        注:必须有终止条件,否则死循环,一直压栈不弹栈。
    2.斐波那契数列:n>=2时,值为(n-1)*(n-2);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值