目录
4. 什么是静态函数, 函数的组成部分, 函数调用时需要注意什么
11. break、continue、return的作用和区别
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内存结构图!既详细又简单明了,十分钟掌握](https://i-blog.csdnimg.cn/blog_migrate/03878d91d44d5d97ab084259c6f247f4.png)
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);
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 静态的