Day-03

目录

1. 程序的执行流程有几种

2. 整理选择分支的语法

3. 整理循环语法

4. 什么是静态函数, 函数的组成部分, 函数调用时需要注意什么

   5. 参数

6. 返回值

7. 什么是类加载

8. 什么是方法区

9. 静态变量与局部变量的区别

10. 什么是栈, 什么是栈帧

11. break、continue、return的作用和区别

12. 画出JVM内存结构图

13. 什么是debug

14. 什么是递归

15. 整理以下关键字


1. 程序的执行流程有几种

    1). 顺序结构
    2). 分支结构 (单路分支, 多路分支)
    3). 循环结构 
    4). 函数的调用与返回

2. 整理选择分支的语法

    单if
    互斥 if...else
    多分支互斥 if...else if...else if...else
    嵌套的if 
    switch...case


3. 整理循环语法

    while
    do...while
    for

循环的4要素

1.循环变量初始化
2.循环条件
3.循环条件的迭代
4.循环体

什么是函数?
    函数是一系列指令的集合, 通过函数封装指令, 可以达到代码复用的目的
    函数是组织代码的最小单元
    类是程序的最小单元

4. 什么是静态函数, 函数的组成部分, 函数调用时需要注意什么

静态成员函数是类的成员函数,该函数不属于该类申请的任何一个对象,而是所有该类成员共同共有的一个函数。

主函数和普通函数的区别是什么

1.区别在于调用,java函数都是为调用而生,main函数也不例外,而它与普通函数的区别在于调用者,main是一个jvm所识别的固定名字,所以类中的main函数是由jvm所调用的,程序的固定入口。

而普通函数的调用可以通过类调用或对象调用,调用者为其他类或对象。

2.main函数与普通函数另一个区别为写法:

普通函数的写法根据业务与java规范而定,但是main函数的写法是为了被jvm调用,所以写法固定(除了参数名字,但是参数类型是固定的字符串数组)
 

主函数可以用private修饰吗? 为什么?

不可以,因为main()方法是由Java虚拟机调用的,所以必须是public

   1. 权限修饰符
           public : 公共的, 可以在任何外部类中调用
           private: 私有的, 只能在本类的内部调用
           (default)默认不写权限修饰符: 同包的, 只能在同一个包里面调用
   2. 静态修饰符
           static 函数必须添加static修饰符, 如果没有static修饰, 就不是函数, 而是方法
           方法的调用方式跟函数是不一样的

   3. 返回值类型
           写 void 代表函数没有返回值
           写一种具体的类型 代表函数有返回值, 并且约定了返回值的类型
               例如: 返回值类型的double, 那么调用方调用后, 只能用double类型的变量来接受函数的返回值
                     并且函数内必须用return返回值的double类型的操作数出去
   4. 函数名

必须写 函数的标识符 调用方通过函数名进行调用
   5. 参数列表

可以有参数,也可以没有参数,但是()一定要有 可以有一个参数,也可以有多个参数

定义参数的时候需要指定参数的类型和参数名,不需要写参数值,参数值是由调用方在调用函数的时候指定的调用方在调用函数的时候,必须要给参数列表中所有参数的值,参数个数和数据类型必须一一匹配的

形式参数:函数定义的参数 例如 int r

实际参数:函数调用时传递的值 例如15

   6. 函数体

就是具有独立功能的代码块。
   7. 返回值

指的是这一具有独立功能的代码块的运算结果,这个运算结果需要传递给外界(配合return使用)。

   
5. 参数

调用者向被调用者内部传递的数据
形式参数(形参):相当于函数内部的局部变量
实际参数(实参):为形参赋值


6. 返回值

被调用者返回给调用者的数据
void 没有返回值
八种基本数据类型
引用数据类型
注意:返回值的数据类型,必须和返回值类型保持一致


7. 什么是类加载

java文件通过编译器变成了.class文件,接下来类加载器又将这些.class文件加载到JVM中。其中类装载器的作用其实就是类的加载。


8. 什么是方法区

方法区,也称非堆(Non-Heap),是一个被线程共享的内存区域。

其中主要存储加载的类字节码、class/method/field等元数据对象、static-final常量、static变量、jit编译器编译后的代码缓存等数据。另外,方法区包含了一个特殊的区域“运行时常量池”。

方法区包含:

类信息:修饰符(public、abstract、final)、全类名、接口列表、父类全类名
域(Field,即方法中成员变量)信息:域名称、域类型、域修饰符:private int num;
方法信息:方法名称、返回类型、参数名称及类型、异常信息等:public void delete (String path) throws IOException{ }
运行时常量池:字面值(比如字符串值)、符号引用
静态变量(static、非final):静态变量会在类加载时,赋初始值;final变量(常量)在编译期就被确定,放在运行时常量池中
对类加载器的引用
对Class类的引用
方法表
 


9. 静态变量与局部变量的区别


     定义的位置不同
         静态变量: 定义在函数外面, 类的里面
         局部变量: 定义在函数里面
     作用域不同
         静态变量: 当前类中所有的函数都可以使用
         局部变量: 只能在当前函数内使用
     局部变量一定不可以被外部访问, 因为不可用加访问权限修饰符
     静态变量可以被外部访问, 因此可以添加访问权限修饰符

10. 什么是栈, 什么是栈帧

就是CPU寄存器里的某个指针所指向的一片内存区域。

栈帧也叫过程活动记录,是编译器用来实现过程/函数调用的一种数据结构。简言之,栈帧就是利用EBP(栈帧指针,请注意不是ESP)寄存器访问局部变量、参数、函数返回地址等的手段。


11. break、continue、return的作用和区别


    break是跳出循环
    continue是结束本轮循环, 进入下一轮循环
    return是函数返回

12. 画出JVM内存结构图

最简单的JVM内存结构图!既详细又简单明了,十分钟掌握
13. 什么是debug

Debug:是供程序员使用的程序调试工具,它可以用于查看程序的执行流程,也可以用于追踪程序执行过程来调试程序。


14. 什么是递归

方法或函数调用自身的方式称为递归调用,调用称为递,返回称为归。

利用递归可以用简单的程序来解决一些复杂的问题。比如:裴波那契数列的计算、汉诺塔、快排等问题。

递归结构包括两个部分:
1、定义递归头。什么时候不调用自身方法。如果没有头,将陷入死循环,也就是递归的结束条件。
2、递归体。什么时候需要调用自身方法。

基本上,所有的递归问题都可以用递推公式来表示,比如

f(n) = f(n-1) + 1; 

f(n) = f(n-1) + f(n-2);

f(n)=n*f(n-1);

72851987cda84e98a88b2fbbe6441859.png


15. 整理以下关键字

Java关键字(Key Word):  对Java的编译器有特殊的意义,他们用来表示一种数据类型或者表示程序的结构.


    class      定义类
    public     公共的
    private    私有的
    if         开始一个选择分支, if后面跟小括号,小括号里面的操作数是判断条件, 可以是直接量,变量,表达式, 但必须是boolean类型
    else       else后面不跟条件, 但是else if后面必须跟条件
    switch     开始一个选择分支, switch后面跟小括号
               小括号里面的操作数只能是byte, short, int, char类型
               Java5后支持枚举类型
               Java7后支持String类型, 但通过观察字节码可以发现, 本质上还是int类型
               注意, switch不支持long类型, 也不支持浮点型和boolean类型 
    case       是switch中的一个分支, 后面跟直接量, 直接量与switch()中的操作数的数据类型必须相同
    default    在switch中所有case都不满足时执行default分支, 它相当于是多重if分支中的最后else, 是所有情况都不满足时, 默认执行的分支
    break      1. 用于跳出switch...case
               2. 用户跳出循环
               如果有循环嵌套循环, 那么break跳出的是最近的那个循环
    while       开始一个循环, while后面跟小括号,小括号里面的操作数是判断条件, 可以是直接量,变量,表达式, 但必须是boolean类型
    do         do必须和while组合使用, do在前面, while在后面, 先执行一次do, 再通过判断while条件是否成立, 来决定是否循环
    for        开始一个循环, for后面跟小括号, 小括号里面有3组表达式, 分别是循环变量初始化, 循环条件, 循环变量的迭代
    continue   本轮循环结束, 进入下一轮循环
    void       函数没有返回值
    return     函数返回, 后面可以什么都不跟, 也可以跟一个操作数, 具体要看函数是否定义了返回值类型
    static     静态的

根据你提供的引用内容,你在写Vue项目时遇到了一个错误,错误信息是"Module not found: Error: Can't resolve 'less-loader' in 'E:\NodeDemo\vue_assistant_lsp'"。解决这个问题的方法是添加依赖并进行相应的配置。首先,你需要通过运行命令"npm install --save-dev less-loader less"来添加依赖。然后,你需要打开webpack.base.conf.js文件,在其中添加以下配置: ``` { test: /\.less$/, loader: "style-loader!css-loader!less-loader", } ``` 如果你遇到了"npm ERR! code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree"这种报错,可能是因为你的npm版本太高。你可以参考这篇文章进行具体操作:https://blog.csdn.net/weixin_38345306/article/details/118700876。希望这些信息能够帮助你解决问题。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* [Module not found: Error: Can't resolve 'less-loader' in 'E:\NodeDemo\vue_assistant_lsp'](https://blog.csdn.net/qq_43290288/article/details/105405583)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [vue项目报错Module not found: Error: Can‘t resolve ‘less-loader‘ in。。。。](https://blog.csdn.net/weixin_38345306/article/details/118699650)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值